From 15184d2725a7b79bcbbac8029c68027597d87ecd Mon Sep 17 00:00:00 2001 From: omermorad Date: Tue, 16 Jun 2026 06:38:23 +0300 Subject: [PATCH 1/2] move --- .gitignore | 31 +- .nvmrc | 2 +- config/algolia-config.js | 111 - config/api-sidebars.js | 31 - config/babel.config.js | 3 - config/docs-sidebars.js | 24 - config/prisma-theme.config.js | 65 - config/redirects.config.js | 219 - docs/api-reference/index.md | 70 - docs/api-reference/mock-configuration.md | 128 - docs/api-reference/mock.md | 291 - docs/api-reference/testbed-sociable.md | 76 - docs/api-reference/testbed-solitary.md | 91 - docs/api-reference/types.md | 91 - docs/api-reference/unit-reference.md | 211 - docs/changelog.md | 124 - docs/get-started/index.md | 44 - docs/get-started/installation.mdx | 208 - docs/get-started/quickstart.md | 280 - docs/get-started/why-suites.md | 277 - docs/guides/fundamentals.md | 197 - docs/guides/index.md | 33 - docs/guides/sociable.md | 329 - docs/guides/solitary.md | 176 - docs/guides/test-doubles.md | 220 - docs/guides/virtual-test-container.md | 210 - docs/migration-guides/from-automock.md | 255 - docs/migration-guides/index.md | 19 - docusaurus.config.ts | 154 - netlify.toml | 274 - package.json | 82 +- src/components/AskAI/index.tsx | 148 - src/components/AskAI/styles.module.css | 207 - src/components/ClientOnly/index.tsx | 20 - src/components/Footer/index.tsx | 30 - src/components/Footer/styles.module.css | 32 - src/components/Header/index.tsx | 88 - src/components/Header/styles.module.css | 313 - src/components/HomepageFeatures/index.tsx | 108 - .../HomepageFeatures/styles.module.css | 82 - src/components/NotFoundContent/index.tsx | 65 - .../NotFoundContent/styles.module.css | 86 - src/css/custom.css | 626 -- src/pages/404.tsx | 14 - src/pages/index.module.css | 653 -- src/pages/index.tsx | 433 - src/theme/Footer/index.tsx | 5 - src/theme/NotFound/index.tsx | 21 - src/theme/Root.tsx | 22 - src/types/docusaurus-theme.d.ts | 29 - src/utils/analytics.ts | 10 +- static/img/balance-logo.svg | 1 - static/img/banner.png | Bin 5933 -> 0 bytes static/img/favicon-16x16.png | Bin 1175 -> 0 bytes static/img/favicon.ico | Bin 1150 -> 0 bytes static/img/favicon.png | Bin 2153 -> 0 bytes static/img/harmonya-logo.svg | 44 - static/img/inversify-logo.png | Bin 1209 -> 0 bytes static/img/jest-logo.png | Bin 2066 -> 0 bytes static/img/lemonade-logo.svg | 61 - static/img/logo.png | Bin 15240 -> 0 bytes static/img/logo.svg | 15 - static/img/monday-logo.svg | 92 - static/img/nestjs-logo.png | Bin 1614 -> 0 bytes static/img/sinon-logo.png | Bin 4116 -> 0 bytes static/img/vetric.svg | 4 - static/img/vitest-logo.png | Bin 1136 -> 0 bytes static/llms.txt | 41 - static/robots.txt | 71 - tsconfig.json | 13 +- yarn.lock | 9343 ----------------- 71 files changed, 76 insertions(+), 16927 deletions(-) delete mode 100644 config/algolia-config.js delete mode 100644 config/api-sidebars.js delete mode 100644 config/babel.config.js delete mode 100644 config/docs-sidebars.js delete mode 100644 config/prisma-theme.config.js delete mode 100644 config/redirects.config.js delete mode 100644 docs/api-reference/index.md delete mode 100644 docs/api-reference/mock-configuration.md delete mode 100644 docs/api-reference/mock.md delete mode 100644 docs/api-reference/testbed-sociable.md delete mode 100644 docs/api-reference/testbed-solitary.md delete mode 100644 docs/api-reference/types.md delete mode 100644 docs/api-reference/unit-reference.md delete mode 100644 docs/changelog.md delete mode 100644 docs/get-started/index.md delete mode 100644 docs/get-started/installation.mdx delete mode 100644 docs/get-started/quickstart.md delete mode 100644 docs/get-started/why-suites.md delete mode 100644 docs/guides/fundamentals.md delete mode 100644 docs/guides/index.md delete mode 100644 docs/guides/sociable.md delete mode 100644 docs/guides/solitary.md delete mode 100644 docs/guides/test-doubles.md delete mode 100644 docs/guides/virtual-test-container.md delete mode 100644 docs/migration-guides/from-automock.md delete mode 100644 docs/migration-guides/index.md delete mode 100644 docusaurus.config.ts delete mode 100644 netlify.toml delete mode 100644 src/components/AskAI/index.tsx delete mode 100644 src/components/AskAI/styles.module.css delete mode 100644 src/components/ClientOnly/index.tsx delete mode 100644 src/components/Footer/index.tsx delete mode 100644 src/components/Footer/styles.module.css delete mode 100644 src/components/Header/index.tsx delete mode 100644 src/components/Header/styles.module.css delete mode 100644 src/components/HomepageFeatures/index.tsx delete mode 100644 src/components/HomepageFeatures/styles.module.css delete mode 100644 src/components/NotFoundContent/index.tsx delete mode 100644 src/components/NotFoundContent/styles.module.css delete mode 100644 src/css/custom.css delete mode 100644 src/pages/404.tsx delete mode 100644 src/pages/index.module.css delete mode 100644 src/pages/index.tsx delete mode 100644 src/theme/Footer/index.tsx delete mode 100644 src/theme/NotFound/index.tsx delete mode 100644 src/theme/Root.tsx delete mode 100644 src/types/docusaurus-theme.d.ts delete mode 100644 static/img/balance-logo.svg delete mode 100644 static/img/banner.png delete mode 100644 static/img/favicon-16x16.png delete mode 100644 static/img/favicon.ico delete mode 100644 static/img/favicon.png delete mode 100644 static/img/harmonya-logo.svg delete mode 100644 static/img/inversify-logo.png delete mode 100644 static/img/jest-logo.png delete mode 100644 static/img/lemonade-logo.svg delete mode 100644 static/img/logo.png delete mode 100644 static/img/logo.svg delete mode 100644 static/img/monday-logo.svg delete mode 100644 static/img/nestjs-logo.png delete mode 100644 static/img/sinon-logo.png delete mode 100644 static/img/vetric.svg delete mode 100644 static/img/vitest-logo.png delete mode 100644 static/llms.txt delete mode 100644 static/robots.txt delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 5404223..04e2cc0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,26 @@ -node_modules -.idea -.docusaurus -build +# build output +dist/ +.vercel/ -# Local Netlify folder -.netlify +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production +.env.local + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/.nvmrc b/.nvmrc index 2bd5a0a..209e3ef 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +20 diff --git a/config/algolia-config.js b/config/algolia-config.js deleted file mode 100644 index 27b4ac6..0000000 --- a/config/algolia-config.js +++ /dev/null @@ -1,111 +0,0 @@ -module.exports = { - appId: 'OR8PNMV0IL', - apiKey: '28a25b54e18eb96f17089adf1f3ed295', - indexName: 'suites', - rateLimit: 8, - maxDepth: 10, - startUrls: ['https://suites.dev', 'https://suites.dev/docs'], - sitemaps: ['https://suites.dev/sitemap.xml'], - discoveryPatterns: ['https://suites.dev/docs/**'], - externalUrlRegex: 'suites\\.dev', - actions: [ - { - indexName: 'suites', - pathsToMatch: ['https://suites.dev/docs/**'], - recordExtractor: ({ $, helpers }) => { - // priority order: deepest active sub list header -> navbar active item -> 'Documentation' - const lvl0 = - $( - '.menu__link.menu__link--sublist.menu__link--active, .navbar__item.navbar__link--active' - ) - .last() - .text() || 'Documentation'; - - return helpers.docsearch({ - recordProps: { - lvl0: { - selectors: '', - defaultValue: lvl0, - }, - lvl1: ['header h1', 'article h1'], - lvl2: 'article h2', - lvl3: 'article h3', - lvl4: 'article h4', - lvl5: 'article h5, article td:first-child', - lvl6: 'article h6', - content: 'article p, article li, article td:last-child', - }, - indexHeadings: true, - aggregateContent: true, - recordVersion: 'v3', - }); - }, - }, - ], - initialIndexSettings: { - suites: { - attributesForFaceting: [ - 'type', - 'lang', - 'language', - 'version', - 'docusaurus_tag', - ], - attributesToRetrieve: [ - 'hierarchy.lvl0', - 'hierarchy.lvl1', - 'hierarchy.lvl2', - 'hierarchy.lvl3', - 'hierarchy.lvl4', - 'hierarchy.lvl5', - 'hierarchy.lvl6', - 'hierarchy', - 'content', - 'anchor', - 'url', - 'url_without_anchor', - 'type', - ], - attributesToHighlight: ['hierarchy', 'content'], - attributesToSnippet: ['content:10'], - camelCaseAttributes: ['hierarchy', 'content'], - searchableAttributes: [ - 'unordered(hierarchy.lvl0)', - 'unordered(hierarchy.lvl1)', - 'unordered(hierarchy.lvl2)', - 'unordered(hierarchy.lvl3)', - 'unordered(hierarchy.lvl4)', - 'unordered(hierarchy.lvl5)', - 'unordered(hierarchy.lvl6)', - 'content', - ], - distinct: true, - attributeForDistinct: 'pathname', - customRanking: [ - 'desc(weight.pageRank)', - 'desc(weight.level)', - 'asc(weight.position)', - ], - ranking: [ - 'words', - 'filters', - 'typo', - 'attribute', - 'proximity', - 'exact', - 'custom', - ], - highlightPreTag: '', - highlightPostTag: '', - minWordSizefor1Typo: 3, - minWordSizefor2Typos: 7, - allowTyposOnNumericTokens: false, - minProximity: 1, - ignorePlurals: true, - advancedSyntax: true, - attributeCriteriaComputedByMinProximity: true, - removeWordsIfNoResults: 'allOptional', - separatorsToIndex: '_', - }, - }, -}; \ No newline at end of file diff --git a/config/api-sidebars.js b/config/api-sidebars.js deleted file mode 100644 index 54ba609..0000000 --- a/config/api-sidebars.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ - -// @ts-check - -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ -const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], - - // But you can create a sidebar manually - /* - tutorialSidebar: [ - { - type: 'category', - label: 'Tutorial', - items: ['hello'], - }, - ], - */ -}; - -module.exports = sidebars; diff --git a/config/babel.config.js b/config/babel.config.js deleted file mode 100644 index e00595d..0000000 --- a/config/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], -}; diff --git a/config/docs-sidebars.js b/config/docs-sidebars.js deleted file mode 100644 index 82f1119..0000000 --- a/config/docs-sidebars.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ - -// @ts-check - -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ -const sidebars = { - tutorialSidebar: [ - { - type: "autogenerated", - dirName: ".", - }, - ], -}; - -module.exports = sidebars; diff --git a/config/prisma-theme.config.js b/config/prisma-theme.config.js deleted file mode 100644 index 7b6200e..0000000 --- a/config/prisma-theme.config.js +++ /dev/null @@ -1,65 +0,0 @@ -export const draculaThemeConfig = { - theme: { - plain: { - color: "#f8f8f2", - backgroundColor: "#16181d" - }, - styles: [ - { - types: ["comment", "prolog", "doctype", "cdata"], - style: { - color: "#6272a4", - fontStyle: "italic" - } - }, - { - types: ["namespace"], - style: { - opacity: 0.7 - } - }, - { - types: ["string", "attr-value"], - style: { - color: "#977cdc" - } - }, - { - types: ["punctuation", "operator"], - style: { - color: "#f8f8f2" - } - }, - { - types: ["entity", "url", "symbol", "number", "boolean", "variable", "constant", "property", "regex", "inserted"], - style: { - color: "#50fa7b" - } - }, - { - types: ["atrule", "keyword", "attr-name", "selector"], - style: { - color: "#77b7d7" - } - }, - { - types: ["function", "deleted", "tag"], - style: { - color: "#86d9ca" - } - }, - { - types: ["function-variable"], - style: { - color: "#bd93f9" - } - }, - { - types: ["tag", "selector", "keyword"], - style: { - color: "#77b7d7" - } - } - ] - } -}; diff --git a/config/redirects.config.js b/config/redirects.config.js deleted file mode 100644 index d203fd9..0000000 --- a/config/redirects.config.js +++ /dev/null @@ -1,219 +0,0 @@ -/** - * URL Redirects Configuration - * - * Handles redirects for documentation reorganization (v4.0.0 docs restructure) - * Preserves external links from Google, blogs, Stack Overflow, etc. - * - * Based on analytics showing: - * - Quick Start: 2,971 views - * - Installation: 1,580 views - * - API Reference: 1,700 views - * - Solitary Tests: 1,251 views - */ - -module.exports = { - redirects: [ - // ============================================ - // CRITICAL REDIRECTS (High Traffic Pages) - // ============================================ - - // Quick Start (2,971 views) - { - from: '/docs/overview/quickstart', - to: '/docs/get-started/quickstart', - }, - { - from: '/docs/learn/get-started/quickstart', - to: '/docs/get-started/quickstart', - }, - - // Installation (1,580 views) - { - from: '/docs/overview/installation', - to: '/docs/get-started/installation', - }, - { - from: '/docs/learn/get-started/installation', - to: '/docs/get-started/installation', - }, - - // API Reference (1,700 views) - { - from: '/docs/developer-guide/unit-tests/suites-api', - to: '/docs/api-reference/', - }, - { - from: '/docs/learn/unit-tests/suites-api', - to: '/docs/api-reference/', - }, - { - from: '/docs/api-reference/testbed-api', - to: '/docs/api-reference/', - }, - - // Solitary Tests (1,251 views) - { - from: '/docs/developer-guide/unit-tests/solitary', - to: '/docs/guides/solitary', - }, - { - from: '/docs/learn/unit-tests/solitary', - to: '/docs/guides/solitary', - }, - - // Sociable Tests (1,104 views) - { - from: '/docs/developer-guide/unit-tests/sociable', - to: '/docs/guides/sociable', - }, - { - from: '/docs/learn/unit-tests/sociable', - to: '/docs/guides/sociable', - }, - - // ============================================ - // HIGH PRIORITY REDIRECTS - // ============================================ - - // Test Doubles (651 views, 72.7s engagement) - { - from: '/docs/developer-guide/unit-tests/test-doubles', - to: '/docs/guides/test-doubles', - }, - { - from: '/docs/learn/unit-tests/test-doubles', - to: '/docs/guides/test-doubles', - }, - - // Fundamentals (1,389 views) - { - from: '/docs/developer-guide/unit-tests/fundamentals', - to: '/docs/guides/fundamentals', - }, - { - from: '/docs/learn/unit-tests/fundamentals', - to: '/docs/guides/fundamentals', - }, - - // Migrating from Automock (1,082 views) - { - from: '/docs/migrating-from-automock', - to: '/docs/migration-guides/from-automock', - }, - { - from: '/docs/resources/migrating-from-automock', - to: '/docs/migration-guides/from-automock', - }, - { - from: '/docs/overview/migrating-from-automock', - to: '/docs/migration-guides/from-automock', - }, - - // Overview section base (redirect to get-started) - { - from: '/docs/overview', - to: '/docs/get-started/', - }, - - // What is Suites (567 views) - redirect to get-started - { - from: '/docs/overview/what-is-suites', - to: '/docs/get-started/', - }, - - // Problems Solved (933 views) - consolidated into why-suites - { - from: '/docs/overview/problems-solved', - to: '/docs/get-started/why-suites', - }, - { - from: '/docs/resources/problems-solved', - to: '/docs/get-started/why-suites', - }, - - // Comparisons (new page, but redirect just in case) - { - from: '/docs/overview/comparisons', - to: '/docs/get-started/why-suites', - }, - - // Developer Guide Unit Tests - redirect to guides - { - from: '/docs/developer-guide/unit-tests', - to: '/docs/guides/', - }, - - // ============================================ - // ADDITIONAL REDIRECTS (From Netlify 502 logs) - // ============================================ - - // Docs base path - { - from: '/docs', - to: '/docs/get-started/', - }, - - // Introduction section (old structure) - { - from: '/docs/introduction/quick-example', - to: '/docs/get-started/quickstart', - }, - - // Overview motivation - { - from: '/docs/overview/motivation', - to: '/docs/get-started/why-suites', - }, - - // Overview dependency injection (including typo variant) - { - from: '/docs/overview/depdency-injection-and-automock', - to: '/docs/get-started/why-suites', - }, - { - from: '/docs/overview/dependency-injection-and-automock', - to: '/docs/get-started/why-suites', - }, - - // Core concepts section (removed) - { - from: '/docs/core-concepts/dependency-injection', - to: '/docs/get-started/why-suites', - }, - - // API Reference fail-fast (removed) - { - from: '/docs/api-reference/fail-fast', - to: '/docs/api-reference/', - }, - - // Category pages - { - from: '/docs/category/extras', - to: '/docs/guides/', - }, - - // Adapters section (restructured - adapters now bundled) - { - from: '/docs/adapters/inversify', - to: '/docs/get-started/', - }, - { - from: '/docs/adapters/identifiers', - to: '/docs/get-started/', - }, - { - from: '/docs/developer-guide/adapters/inversifyjs', - to: '/docs/get-started/', - }, - { - from: '/docs/developer-guide/adapters/identifiers', - to: '/docs/get-started/', - }, - { - from: '/docs/guides/adapters/inversifyjs', - to: '/docs/get-started/', - }, - - ], -}; diff --git a/docs/api-reference/index.md b/docs/api-reference/index.md deleted file mode 100644 index fb40012..0000000 --- a/docs/api-reference/index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -sidebar_position: 3 -title: API Reference -description: Complete API reference for Suites testing framework ---- - -# API Reference - -API reference for setting up and managing unit tests with Suites. - -
- -### Core APIs - -- [**TestBed.solitary()**](/docs/api-reference/testbed-solitary) - Create isolated unit tests where all dependencies are automatically mocked -- [**TestBed.sociable()**](/docs/api-reference/testbed-sociable) - Test business logic interactions, keep specific dependencies real -- [**Mock Configuration**](/docs/api-reference/mock-configuration) - Configure mock behavior with `.mock().final()` and `.mock().impl()` -- [**mock() and stub()**](/docs/api-reference/mock) - Create standalone mocks outside `TestBed` API -- [**UnitReference**](/docs/api-reference/unit-reference) - Access mocked dependencies in tests -- [**Types**](/docs/api-reference/types) - TypeScript type definitions - -
- -## Quick Reference - -### Creating a Solitary Test -```typescript -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); -``` - -### Creating a Sociable Test -```typescript -const { unit, unitRef } = await TestBed.sociable(UserService) - .expose(UserApi) // Keep UserApi real - .compile(); -``` - -### Configuring Mocks -```typescript -// Final configuration (immutable) -await TestBed.solitary(UserService) - .mock(UserApi) - .final({ getRandom: async () => ({ id: 1, name: 'John' }) }) - .compile(); - -// Flexible configuration -await TestBed.solitary(UserService) - .mock(UserApi) - .impl(stubFn => ({ getRandom: stubFn().mockResolvedValue({ id: 1 }) })) - .compile(); -``` - -### Creating Standalone Mocks -```typescript -import { mock, stub } from '@suites/unit'; - -// Mock a full class -const userRepo = mock(); -userRepo.findById.mockResolvedValue(testUser); - -// Create a stub function -const stubFn = stub(); -stubFn.mockReturnValue(42); -``` - -## Quick Terminology - -- **Mock**: A complete replacement of a dependency class where each method has been replaced with a stub -- **Stub**: An individual method replacement that provides predefined responses -- **Mocked\**: The type representing a mocked dependency with stubbed methods \ No newline at end of file diff --git a/docs/api-reference/mock-configuration.md b/docs/api-reference/mock-configuration.md deleted file mode 100644 index 297cc3e..0000000 --- a/docs/api-reference/mock-configuration.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -sidebar_position: 4 -title: Mock Configuration -description: Configure mock behavior with .final() and .impl() ---- - -# Mock Configuration - -Suites provides two methods for configuring mock behavior: -* `.mock().final()` for immutable configurations -* `.mock().impl()` for flexible implementations - -:::note -This page describes the `.mock()` configuration method for `TestBed`. For creating standalone mocks manually, see the [`mock()` and `stub()` utility functions](/docs/api-reference/mock). -::: - -## Methods - -### `.mock().final()` - -Creates an immutable mock configuration. Once set, the mock cannot be retrieved or modified. Use `.final()` for: -- Fixed behavior that won't change across tests -- Configuration objects and primitives (non-class tokens) -- Values that don't need runtime control or verification - -#### Signature - -```typescript -mock(dependency: Type | string | symbol) - .final(implementation: DeepPartial): TestBuilder -``` - -#### Parameters - -| Parameter | Type | Description | -|----------------|-------------------------------|------------------------------------| -| dependency | `Type \| string \| symbol` | The dependency to mock | -| implementation | `DeepPartial` | Object with method implementations | - -#### Example - -**For class-based tokens (fixed behavior):** -```typescript -const { unit } = await TestBed.solitary(UserService) - .mock(UserApi) - .final({ - getRandom: async () => ({ id: 1, name: "John" }), - getAll: async () => [{ id: 1, name: "John" }] - }) - .compile(); - -// UserApi cannot be retrieved - behavior is fixed -``` - -**For configuration objects and primitives:** -```typescript -const { unit } = await TestBed.solitary(PaymentService) - .mock('DATABASE_CONFIG') - .final({ host: 'localhost', port: 5432 }) - .mock('API_KEY') - .final('test-api-key-12345') - .compile(); - -// Config values are injected but not retrievable -``` - -### `.mock().impl()` - -Creates a flexible mock configuration using the underlying mock library (Jest, Vitest, etc.). The `stubFn` callback corresponds to the installed doubles adapter: `jest.fn()` for Jest, `vi.fn()` for Vitest, or `sinon.stub()` for Sinon. - -#### Signature - -```typescript -mock(dependency: Type | string | symbol) - .impl(factory: (stubFn: () => MockFunction) => DeepPartial): TestBuilder -``` - -#### Parameters - -| Parameter | Type | Description | -|------------|-------------------------------|-------------------------------------------------------------| -| dependency | `Type \| string \| symbol` | The dependency to mock | -| factory | `(stubFn) => DeepPartial` | Factory function receiving the mock library's stub function | - -#### Example - -```typescript -const { unit, unitRef } = await TestBed.solitary(UserService) - .mock(UserApi) - .impl(stubFn => ({ - getRandom: stubFn().mockResolvedValue({ id: 1, name: "John" }), - getAll: stubFn().mockReturnValue([]) - })) - .compile(); - -// UserApi can still be retrieved and modified -const userApi = unitRef.get(UserApi); -userApi.getRandom.mockResolvedValue({ id: 2, name: "Jane" }); -``` - -## Example - -### Multiple Mock Configurations - -You can chain multiple mock configurations: - -```typescript -const { unit, unitRef } = await TestBed.solitary(OrderService) - .mock(Database) - .final({ - getOrder: async (id: string) => ({ id, items: [] }) - }) - .mock(EmailService) - .impl(stubFn => ({ - send: stubFn().mockResolvedValue({ sent: true }) - })) - .compile(); - -// Can retrieve EmailService and Logger, but not Database -const emailService = unitRef.get(EmailService); -const logger = unitRef.get(Logger); -``` - -## See Also - -- [TestBed.solitary()](/docs/api-reference/testbed-solitary) - Creating isolated tests -- [TestBed.sociable()](/docs/api-reference/testbed-sociable) - Creating sociable tests -- [UnitReference](/docs/api-reference/unit-reference) - Accessing configured mocks diff --git a/docs/api-reference/mock.md b/docs/api-reference/mock.md deleted file mode 100644 index 31b85fd..0000000 --- a/docs/api-reference/mock.md +++ /dev/null @@ -1,291 +0,0 @@ ---- -sidebar_position: 5 -title: mock() and stub() -description: Create type-safe mocks and stubs for any TypeScript code. Works without dependency injection frameworks. ---- - -# mock() and stub() - -Standalone utility functions for creating type-safe mocks. Works with any TypeScript code, with or without dependency injection frameworks. - -:::info Mock and Stub Functions Are Adapter-Specific -These functions are provided by your installed doubles adapter: `@suites/doubles.jest` (Jest), `@suites/doubles.vitest` -(Vitest) and `@suites/doubles.sinon` (Sinon). -::: - -## When to Use - -Use `mock()` and `stub()` functions when: -- Testing code **without dependency injection frameworks** -- Creating standalone test doubles outside of `TestBed` -- Testing plain TypeScript classes, functions, or modules -- You're comfortable with **manual dependency wiring** - -:::note Trade-off: Manual vs Automatic Mocking -`mock()` provides type-safe mocking for any TypeScript code **but requires you to manually wire dependencies and track -mock references**. `TestBed` automates this but currently requires dependency injection frameworks. -::: - -## mock() - -Creates a fully mocked instance with auto-generated stub methods. This standalone function creates mocks manually, -outside of `TestBed`. - -### Signature - -```typescript -function mock(mockImplementation: DeepPartial = {}): Mocked -``` - -### Parameters - -| Parameter | Type | Description | -|----------------------|------------------|-----------------------------------------------------------| -| `mockImplementation` | `DeepPartial` | Optional partial implementation to pre-configure the mock | - -### Returns - -`Mocked` - A deeply mocked instance where all methods are automatically stubbed. - -:::note -See [Types](/docs/api-reference/types#mockedt) for more about the `Mocked` type. -::: - -### How It Works - -`mock()` returns a Proxy that intercepts property access. When you access a method for the first time, it automatically creates a stub function (`jest.fn()`, `vi.fn()`, or `sinon.stub()` depending on your adapter). - -```typescript -import { mock } from '@suites/unit'; - -const userRepo = mock(); - -// Methods auto-generated on first access -userRepo.findById.mockResolvedValue(testUser); -userRepo.save.mockResolvedValue(savedUser); - -// Nested objects work too -userRepo.database.connect.mockResolvedValue(true); -``` - -### Basic Usage - -```typescript -import { mock } from '@suites/unit'; - -interface PaymentGateway { - charge(amount: number): Promise<{ status: string }>; - refund(transactionId: string): Promise; - validate(card: Card): boolean; -} - -const gateway = mock(); - -// Configure methods as needed -gateway.charge.mockResolvedValue({ status: "success" }); -gateway.refund.mockResolvedValue(undefined); -gateway.validate.mockReturnValue(true); - -// Use in tests -const result = await gateway.charge(100); -expect(result.status).toBe("success"); -expect(gateway.charge).toHaveBeenCalledWith(100); -``` - -### Manual Testing (Non-DI) - -`mock()` works with plain TypeScript classes, no decorators or DI containers required: - -```typescript -// Plain TypeScript class (no @Injectable decorator) -class UserService { - constructor( - private repository: UserRepository, - private logger: Logger - ) {} - - async getUser(id: number): Promise { - this.logger.log(`Fetching user ${id}`); - return this.repository.findById(id); - } -} - -// Create mocks -const mockRepository = mock(); -const mockLogger = mock(); - -// Manual wiring - you track the mock references -const userService = new UserService(mockRepository, mockLogger); - -// Configure mock behavior -mockRepository.findById.mockResolvedValue({ id: 1, name: "John" }); - -// Test the service -const user = await userService.getUser(1); -expect(user.name).toBe("John"); -expect(mockLogger.log).toHaveBeenCalledWith("Fetching user 1"); -``` - -**Note:** You manually wire dependencies and track mock references (`mockRepository`, `mockLogger`). With `TestBed`, this happens automatically. - -### With Pre-Configuration - -You can provide a partial implementation upfront: - -```typescript -const gateway = mock({ - charge: async (amount) => ({ - status: amount > 0 ? "success" : "failed" - }), - validate: (card) => card.number.length === 16, -}); - -// Pre-configured methods work immediately -await gateway.charge(100); // Returns { status: "success" } - -// Other methods still auto-generate -gateway.refund.mockResolvedValue(undefined); -``` - -### Nested Object Mocking - -`mock()` handles deeply nested structures: - -```typescript -interface DatabaseService { - users: { - find(id: string): Promise; - save(user: User): Promise; - delete(id: string): Promise; - }; - orders: { - create(order: Order): Promise; - list(): Promise; - }; -} - -const db = mock(); - -// Nested methods auto-generated -db.users.find.mockResolvedValue(testUser); -db.users.save.mockResolvedValue(undefined); -db.users.delete.mockResolvedValue(true); -db.orders.create.mockResolvedValue(testOrder); -db.orders.list.mockResolvedValue([testOrder]); -``` - -## stub() - -Creates a single standalone stub function (not a full object mock). - -### Signature - -#### Jest -```typescript -function stub(): jest.Mock -``` - -#### Vitest -```typescript -function stub(): Mock -``` - -#### Sinon -```typescript -function stub(): SinonStub -``` - -:::info Alias for Native Stub -`stub()` is an alias for your test framework's native stub function: -- **Jest**: `jest.fn()` -- **Vitest**: `vi.fn()` -- **Sinon**: `sinon.stub()` - -Use it for consistent API across frameworks. -::: - -### Returns - -A mock function from your testing framework. - -### Basic Usage - -```typescript -import { stub } from "@suites/unit"; - -// Create standalone stub -const mockFn = stub(); -mockFn.mockReturnValue(42); - -const result = mockFn(); -expect(result).toBe(42); -expect(mockFn).toHaveBeenCalled(); -``` - -### Callback Mocking - -```typescript -interface EventEmitter { - on(event: string, callback: (data: any) => void): void; - emit(event: string, data: any): void; -} - -const emitter = mock(); -const callbackStub = stub(); - -// Register callback -emitter.on("data", callbackStub); - -// Simulate event (in real code) -emitter.emit("data", { value: 123 }); - -// Verify callback was invoked -expect(callbackStub).toHaveBeenCalledWith({ value: 123 }); -``` - -### Function Dependency Injection - -Test classes that accept functions as dependencies: - -```typescript -class PriceCalculator { - constructor(private taxRateFn: () => number) {} - - calculate(price: number) { - return price * (1 + this.taxRateFn()); - } -} - -// Mock the function dependency -const taxRateStub = stub().mockReturnValue(0.1); // 10% tax -const calculator = new PriceCalculator(taxRateStub); - -expect(calculator.calculate(100)).toBe(110); -expect(taxRateStub).toHaveBeenCalled(); -``` - -### Difference from mock() - -| Feature | `stub()` | `mock()` | -|------------|-------------------------------|----------------------------------| -| Creates | Single function | Full object with methods | -| Use case | Function mocking | Object/interface mocking | -| Nesting | N/A | Auto-generates nested properties | -| Pre-config | Via `.mockReturnValue()` etc. | Via partial object | - -```typescript -// stub(): Single function -const fn = stub(); -fn.mockReturnValue(42); - -// mock(): Full object -const obj = mock(); -obj.method1.mockReturnValue(42); -obj.method2.mockReturnValue(100); -``` - -## See Also - -- [Types](/docs/api-reference/types#mocked) - `Mocked` type definition -- [TestBed.solitary()](/docs/api-reference/testbed-solitary) - Automatic dependency mocking -- [TestBed Configuration](/docs/api-reference/testbed-solitary#pre-compile-mock-configuration) - Using `.mock().impl()` with `stub()` diff --git a/docs/api-reference/testbed-sociable.md b/docs/api-reference/testbed-sociable.md deleted file mode 100644 index 8f28e16..0000000 --- a/docs/api-reference/testbed-sociable.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 3 -title: TestBed.sociable() -description: Test business logic interactions with real and mocked dependencies ---- - -# TestBed.sociable() - -Creates a test environment that mixes real implementations with mocked dependencies for testing interactions between business logic classes. - -:::info Sociable Tests Are Still Unit Tests -Even with multiple real classes, sociable tests remain unit tests because external I/O (databases, HTTP, caches) are -injected via tokens (`@Inject('DATABASE')`) which are automatically mocked. You're testing business logic interactions, -not actual I/O. See the [Sociable Unit Tests Guide](/docs/guides/sociable) for concepts. -::: - -## Signature - -```typescript -TestBed.sociable(targetClass: Type): SociableTestBuilder -``` - -## Parameters - -| Parameter | Type | Description | -|-------------|-----------|-------------------------------| -| targetClass | `Type` | The class constructor to test | - -## Returns - -`SociableTestBuilder` with the following configuration method: - -- **`.expose()`** - List classes to keep real. Everything else is mocked. -- **`.mock(dependency)`** - Configure specific mock behavior before compilation -- **`.compile()`** - Finalizes configuration and creates the test environment - -### The `.expose()` Method - -```typescript -expose(dependency: Type): SociableTestBuilder -``` - -* `.expose()` only accepts class constructors, not tokens. Tokens represent abstractions (interfaces, types) following -the Dependency Inversion Principle - there is no concrete implementation to "expose". Additionally, tokens typically -represent external I/O (databases, HTTP clients) and are always mocked to keep sociable tests fast and side-effect-free. - -* `.expose()` method only controls explicit, injected dependencies. Implicit dependencies (direct imports) are not -intercepted by `TestBed` and will execute as normal. - -## Example - -```typescript -const { unit, unitRef } = await TestBed.sociable(UserService) - .expose(UserValidator) // Only this is real - .compile(); - -// Can retrieve non-exposed (mocked) -const database = unitRef.get(Database); - -// Cannot retrieve exposed -// const validator = unitRef.get(UserValidator); // ERROR - it's real -``` - -## What's Retrievable - -**With `.expose()`:** -- ✅ Non-exposed dependencies (mocked by default) -- ✅ Tokens (auto-mocked) -- ✅ Explicitly mocked dependencies -- ❌ Exposed dependencies (real, not retrievable) - -## See Also - -- [Sociable Unit Tests Guide](/docs/guides/sociable) - When to use, concepts, detailed examples -- [TestBed.solitary()](/docs/api-reference/testbed-solitary) - For fully isolated tests -- [Mock Configuration](/docs/api-reference/mock-configuration) - Configuring mock behavior diff --git a/docs/api-reference/testbed-solitary.md b/docs/api-reference/testbed-solitary.md deleted file mode 100644 index bd612d5..0000000 --- a/docs/api-reference/testbed-solitary.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -sidebar_position: 2 -title: TestBed.solitary() -description: Create isolated unit tests with all dependencies mocked ---- - -# TestBed.solitary() - -Creates a test environment where all dependencies are automatically mocked for testing a class in complete isolation. - -## Signature - -```typescript -TestBed.solitary(targetClass: Type): SolitaryTestBedBuilder -``` - -## Parameters - -| Parameter | Type | Description | -|---------------|-----------|--------------------------------------------| -| `targetClass` | `Type` | The class constructor to test in isolation | - -## Returns - -Returns a `SolitaryTestBedBuilder` instance with methods for configuring the test environment: - -- **`.mock(dependency)`** - Configure specific mock behavior before compilation -- **`.compile()`** - Finalizes configuration and creates the test environment - -## Description - -`TestBed.solitary()` creates a test environment where all of the class's dependencies are mocked by default. This is ideal for testing the internal logic of a class in complete isolation. - -Suites automatically identifies and mocks all constructor dependencies, which can then be accessed via `unitRef.get()`. Learn more in the [Virtual Test Container](/docs/guides/virtual-test-container) guide. - -## Configuring Mocks - -See [Mock Configuration](/docs/api-reference/mock-configuration) for details on `.mock().final()` and `.mock().impl()`. - -## Examples - -### Basic Usage - -```typescript -// All dependencies of UserService are auto-mocked -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - -// Retrieve and configure mocks as needed for a test -const userRepository = unitRef.get(UserRepository); -userRepository.findById.mockResolvedValue(testUser); -``` - -### Token Injections - -```typescript -// Class with token-injected dependencies -@Injectable() -class PaymentService { - constructor( - @Inject('CONNECTION') private connection: Connection, - @Inject('API_KEY') private apiKey: string - ) {} -} - -const { unitRef } = await TestBed.solitary(PaymentService).compile(); - -// Retrieve mocks by token -const database = unitRef.get('CONNECTION'); -const apiKey = unitRef.get('API_KEY'); -``` - -### Type Safety - -All retrieved mocks are fully type-safe, providing autocompletion and compile-time checks. - -```typescript -const repository = unitRef.get(UserRepository); - -// ✅ TypeScript knows all methods -repository.findById.mockResolvedValue(user); - -// ❌ Compile error: method doesn't exist -repository.invalidMethod.mockReturnValue(123); -``` - -## See Also - -- [Solitary Tests Guide](/docs/guides/fundamentals#solitary-tests) - Conceptual guide -- [TestBed.sociable()](/docs/api-reference/testbed-sociable) - Test with real dependencies -- [UnitReference](/docs/api-reference/types#unitreference) - Accessing mocked dependencies with `unitRef.get()` -- [Virtual Test Container](/docs/guides/virtual-test-container) - How Suites auto-mocks dependencies diff --git a/docs/api-reference/types.md b/docs/api-reference/types.md deleted file mode 100644 index 403c4e7..0000000 --- a/docs/api-reference/types.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -sidebar_position: 6 -title: Types -description: TypeScript types and interfaces used in Suites ---- - -# Types - -TypeScript type definitions used throughout Suites. - -## Core Types - -### `Mocked` - -A deeply nested mock type. All methods become mock functions, nested objects are mocked recursively. - -```typescript -interface UserService { - repository: { - find(id: string): User; - save(user: User): void; - }; - validate(user: User): boolean; -} - -const service: Mocked = unitRef.get(UserService); - -// All methods mocked, including nested -service.validate.mockReturnValue(true); -service.repository.find.mockResolvedValue(testUser); -service.repository.save.mockReturnValue(undefined); -``` - -## How `Mocked` Works: Module Augmentation - -The `Mocked` type is **always imported from `@suites/unit`**, never from adapter packages. Suites uses TypeScript's module augmentation to automatically provide the correct library-specific types. - -### Single Import Point - -```typescript -// ✅ Always import from @suites/unit -import { Mocked } from '@suites/unit'; - -// ❌ Never import from adapter packages -// import { Mocked } from '@suites/doubles.jest'; // Wrong! -``` - -### Automatic Type Resolution - -When an adapter package (like `@suites/doubles.jest`) is installed, it automatically augments the `@suites/unit` module with library-specific types: - -```typescript -// @suites/doubles.jest/unit.d.ts (internal - you never see this) -declare module '@suites/unit' { - export type Mocked = jest.Mocked; // Overrides base type -} -``` - -This means the same `Mocked` import resolves to different concrete types based on which adapter is installed. - -:::tip Zero Configuration -This works automatically when you install an adapter package. No manual configuration needed - TypeScript resolves the correct types based on your installed dependencies. -::: - -### Why This Architecture Matters - -**Because Suites is framework agnostic**. The same test code works across Jest, Vitest, and Sinon without changes. Only the installed adapter package determines which library-specific types and methods are available. - -**Maintains Dependency Inversion**: The `@suites/unit` package never depends on adapter packages. Instead, adapters augment the base package - following proper dependency inversion principle. - -```typescript -// This exact code works with any adapter installed -describe('UserService', () => { - let service: UserService; - let database: Mocked; - - beforeAll(async () => { - const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - service = unit; - - // Return Mocked type corresponding to installed adapter - database = unitRef.get(Database); - }); -}); -``` - -## See Also - -- [UnitReference](/docs/api-reference/unit-reference) - Using the UnitReference interface -- [Mock Configuration](/docs/api-reference/mock-configuration) - Configuring mocks with proper types -- [TypeScript Configuration](/docs/get-started/installation#typescript-configuration) - Setting up TypeScript for Suites \ No newline at end of file diff --git a/docs/api-reference/unit-reference.md b/docs/api-reference/unit-reference.md deleted file mode 100644 index cf953e7..0000000 --- a/docs/api-reference/unit-reference.md +++ /dev/null @@ -1,211 +0,0 @@ ---- -sidebar_position: 5 -title: UnitReference -description: Access mocked dependencies in your tests ---- - -# UnitReference - -The `UnitReference` object provides access to mocked dependencies within the test environment. It's returned by both -`TestBed.solitary()` and `TestBed.sociable()` after compilation. - -## Interface - -```typescript -interface UnitReference { - get(token: Type | string | symbol): Mocked; -} -``` - -## Method - -### `.get()` - -Retrieves a mocked instance of a dependency. - -#### Signature - -```typescript -get(token: Type | string | symbol): Mocked -``` - -#### Parameters - -| Parameter | Type | Description | -|-----------|------|-------------| -| token | `Type \| string \| symbol` | The class constructor or injection token | - -#### Returns - -Returns a `Mocked` instance with all methods replaced by stubs. - -## Examples - -### Basic Usage - -```typescript -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - -// Get mocked dependencies -const database = unitRef.get(Database); -const logger = unitRef.get(Logger); - -// Configure mock behavior -database.findUser.mockResolvedValue({ id: 1, name: 'John' }); -logger.log.mockReturnValue(undefined); -``` - -### Using with Class Constructors - -```typescript -// NestJS example -@Injectable() -class OrderService { - constructor( - private inventory: InventoryService, - private payment: PaymentService - ) {} -} - -const { unitRef } = await TestBed.solitary(OrderService).compile(); - -const inventory = unitRef.get(InventoryService); -const payment = unitRef.get(PaymentService); -``` - -### Using with Injection Tokens - -```typescript -const TYPES = { - Database: Symbol.for('Database'), - Logger: Symbol.for('Logger'), - Cache: Symbol.for('Cache') -}; - -@injectable() -class DataService { - constructor( - @inject(TYPES.Database) private db: Database, - @inject(TYPES.Logger) private logger: Logger, - @inject(TYPES.Cache) private cache: Cache - ) {} -} - -const { unitRef } = await TestBed.solitary(DataService).compile(); - -// Use symbols to retrieve mocks -const database = unitRef.get(TYPES.Database); -const logger = unitRef.get(TYPES.Logger); -const cache = unitRef.get(TYPES.Cache); -``` - -### String-based Tokens - -```typescript -// Some frameworks use string tokens -const { unitRef } = await TestBed.solitary(ConfigService).compile(); - -const apiUrl = unitRef.get('API_URL'); -const dbConfig = unitRef.get('DATABASE_CONFIG'); -``` - -## Important Limitations - -### Cannot Retrieve Exposed Classes in Sociable Tests - -When using `TestBed.sociable()` with `.expose()`, exposed classes are treated as real implementations, not mocks. -Because `unitRef` is designed exclusively for accessing mocked dependencies, you cannot retrieve a real instance from -it. - -```typescript -const { unitRef } = await TestBed.sociable(PaymentService) - .expose(TaxCalculator) // Real implementation - .compile(); - -// ❌ This will throw an error because TaxCalculator is a real instance -const calculator = unitRef.get(TaxCalculator); - -// ✅ Only non-exposed (mocked) dependencies can be retrieved -const database = unitRef.get(Database); -``` - -### Cannot Retrieve Dependencies with .mock().final() - -Dependencies configured with `.mock().final()` are immutable and sealed upon compilation. This is a design choice to ensure that their behavior remains fixed throughout the test. As they are not intended to be modified or inspected after compilation, they cannot be retrieved via `unitRef`. If you need to access or modify a mock during your tests, use `.mock().impl()` instead. - -```typescript -const { unitRef } = await TestBed.solitary(UserService) - .mock(Database) - .final({ find: async () => [] }) // Immutable mock - .compile(); - -// ❌ This will throw an error because the mock is final -const database = unitRef.get(Database); -``` - -## Type Safety - -The `Mocked` type ensures type safety for your mocks (See more in [Types Reference](/docs/api-reference/types): - -```typescript -interface UserRepository { - findById(id: string): Promise; - save(user: User): Promise; - delete(id: string): Promise; -} - -const userRepo = unitRef.get(UserRepository); - -// ✅ TypeScript knows these methods exist -userRepo.findById.mockResolvedValue(testUser); -userRepo.save.mockResolvedValue(testUser); -userRepo.delete.mockResolvedValue(undefined); - -// ❌ TypeScript error: Property 'invalid' does not exist -userRepo.invalid.mockResolvedValue(null); -``` - -## Common Errors - -### "Cannot retrieve exposed dependency" -```typescript -// Problem: Trying to get an exposed class -const { unitRef } = await TestBed.sociable(Service) - .expose(RealDependency) - .compile(); - -const dep = unitRef.get(RealDependency); // ❌ Error - -// Solution: Only get non-exposed dependencies -``` - -### "Cannot retrieve final mock" -```typescript -// Problem: Trying to get a .final() mock -const { unitRef } = await TestBed.solitary(Service) - .mock(Database) - .final({ find: async () => [] }) - .compile(); - -const db = unitRef.get(Database); // ❌ Error - -// Solution: Use .impl() instead if you need to retrieve the mock -``` - -### "Token not found" -```typescript -// Problem: Using wrong token -const logger = unitRef.get('LoggerToken'); // ❌ String doesn't match - -// Solution: Use the exact token used in injection -const logger = unitRef.get(LoggerService); // ✅ Correct class -// or -const logger = unitRef.get('LoggerToken'); // ✅ Correct symbol -``` - -## See Also - -- [Types](/docs/api-reference/types) - Type definitions including `Mocked` -- [Mock Configuration](/docs/api-reference/mock-configuration) - Configuring mock behavior -- [TestBed.solitary()](/docs/api-reference/testbed-solitary) - Creating isolated tests -- [TestBed.sociable()](/docs/api-reference/testbed-sociable) - Creating sociable tests \ No newline at end of file diff --git a/docs/changelog.md b/docs/changelog.md deleted file mode 100644 index 959169e..0000000 --- a/docs/changelog.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -sidebar_position: 6 -title: Changelog -description: Version history and release notes for Suites ---- - -# Changelog - -All notable changes to Suites are documented here. For the complete version history, visit our [GitHub Releases](https://github.com/suites-dev/suites/releases). - ---- - -## January 2, 2025 - -### 🐛 Bug Fixes in v3.0.1 - -We've released a patch update addressing several dependency and type resolution issues reported by the community. - -**What's Fixed:** -- ✅ Resolved `reflect-metadata` peer dependency conflicts affecting InversifyJS and NestJS adapters -- ✅ Fixed missing return statement when instantiating exposed classes -- ✅ Corrected InversifyJS interface imports to properly use type imports -- ✅ Cleaned up redundant imports across Jest, Vitest, and Sinon packages - -This release ensures smoother integration with popular DI frameworks and reduces TypeScript configuration friction. - -[View full release notes →](https://github.com/suites-dev/suites/releases/tag/v3.0.1) - ---- - -## July 13, 2024 - -### 🎉 Suites v3.0.0 - -We're incredibly excited to announce **Suites v3.0.0**, marking the official evolution from Automock to Suites. This -major release represents a significant milestone in the project's journey. - -#### 📜 From Automock to Suites - -Suites was previously known as **Automock** through version `2.x`. Starting with version `3.0.0`, the project has been -rebranded to Suites while maintaining the same powerful foundations and principles. Automock will continue to receive -critical bug fixes, but all new features and development efforts are now focused on Suites. - -#### ⚡ What's New - -**Sociable Testing Support** -```typescript -// New .sociable() method for flexible unit testing -const { unit } = await TestBed.solitary(UserService).compile(); -const { unit } = await TestBed.sociable(UserService).compile(); -``` - -**Modern Framework Support** -- 🧪 Official Vitest adapter for Vue and React ecosystems -- 📦 Full ES Module (ESM) support -- 🔄 Unified imports through `@suites/unit` regardless of test framework - -**Enhanced Type Safety** -```typescript -// New Mocked type with deep property mocking -const mockRepo: Mocked = unitRef.get(UserRepository); -``` - -#### 💥 Breaking Changes - -This is a major version with important API changes: - -**Async Compilation Required** -```typescript -// ❌ Old (v2.x) -const { unit } = TestBed.create(UserService).compile(); - -// ✅ New (v3.x) -const { unit } = await TestBed.solitary(UserService).compile(); -``` - -**Method Renaming** -- `TestBed.create()` → `TestBed.solitary()` -- `.mock.using()` → `.mock.impl()` - -**Migration Support** - -We've prepared comprehensive migration guides to help you upgrade smoothly: -- [Migration from Automock →](/docs/migration-guides/from-automock) -- Migration tool development in progress - -[View full release notes →](https://github.com/suites-dev/suites/releases/tag/v3.0.0) - ---- - -## Earlier History: Automock (2022-2023) - -Before becoming Suites at `v3.0.0`, the project was developed as **Automock** from `v1.0.0` through `v2.x`. During this period, the foundational architecture was established: - -- **`v2.1.0`** (Dec 2023): InversifyJS adapter support -- **`v2.0.0`** (Nov 2022): Native mocking implementation, Node.js v16+ requirement -- **`v1.x series`** (2022): Property injection support, enhanced dependency resolution - -The transition to Suites represented a rebranding and modernization while preserving the core testing philosophy and architectural foundations built during the Automock era. - -[View complete Automock release history →](https://github.com/suites-dev/suites/releases?q=v2&expanded=true) - ---- - -## Version Support - -| Version | Status | Released | Support Until | -|-------------------|------------------------|-----------|---------------| -| `v3.0.x` | 🟢 Stable | July 2024 | June 2026 | -| `v2.x` (Automock) | ⚠️ Critical fixes only | Nov 2022 | June 2025 | - -**Support Policy:** -- Stable versions receive security patches and critical bug fixes -- Migration guides provided for all major version upgrades -- Community support available through [GitHub Discussions](https://github.com/suites-dev/suites/discussions) - -## Get Involved - -We're grateful to our growing community of contributors and users. Your feedback shapes Suites' development. - -- 🐛 [Report issues](https://github.com/suites-dev/suites/issues) -- 💡 [Request features](https://github.com/suites-dev/suites/discussions) -- 📖 [Improve documentation](https://github.com/suites-dev/suites.dev) -- ⭐ [Star us on GitHub](https://github.com/suites-dev/suites) diff --git a/docs/get-started/index.md b/docs/get-started/index.md deleted file mode 100644 index 7142743..0000000 --- a/docs/get-started/index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -sidebar_position: 1 -title: Get Started -description: Everything you need to start using Suites in minutes ---- - -# Get Started -Learn how to install Suites, configure the testing environment, and write the first automated test suite. - -
- -### In This Section -- [**Why Suites?**](/docs/get-started/why-suites) - Compare with manual mocking and explore what Suites provides -- [**Installation**](/docs/get-started/installation) - Install and configure Suites -- [**Quick Start**](/docs/get-started/quickstart) - Write the first test in 5 minutes -
- -## Prerequisites - -The following requirements must be met: - -- **Framework** - NestJS, InversifyJS, or plain TypeScript classes with constructor injection -- **Testing library** - Jest, Vitest, or Sinon - -:::tip Framework Flexibility -Suites supports the IoC principle through multiple implementations. - -Currently: dependency injection frameworks (NestJS, InversifyJS) via TestBed, or any TypeScript code via `mock()`/`stub()`. -::: - - -## Recommended Path - -For those new to Suites: - -1. **[Why Suites?](/docs/get-started/why-suites)** - Explore what Suites provides -2. **[Installation](/docs/get-started/installation)** - Set up the environment -3. **[Quick Start](/docs/get-started/quickstart)** - Write the first test -4. **[Guides](/docs/guides/)** - Learn testing patterns - -## Resources - -- **[Suites Examples Repository](https://github.com/suites-dev/examples)** - Complete working examples for all testing patterns - diff --git a/docs/get-started/installation.mdx b/docs/get-started/installation.mdx deleted file mode 100644 index 1b8d0b3..0000000 --- a/docs/get-started/installation.mdx +++ /dev/null @@ -1,208 +0,0 @@ ---- -sidebar_position: 3 -title: "Install Suites for NestJS, Inversify, Jest, Vitest, and Sinon" -description: "Step-by-step installation of Suites for NestJS or Inversify with Jest, Vitest, or Sinon. Includes tsconfig setup for emitDecoratorMetadata and experimentalDecorators." -keywords: [install suites, nestjs unit testing setup, inversify testing, vitest nestjs, jest nestjs setup, emitDecoratorMetadata nestjs, nestjs tsconfig, experimentalDecorators] ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Installation - -Get Suites up and running in your project. - -## Prerequisites - -- Node 18 or higher -- TypeScript project with decorators enabled -- A framework implementing IoC ([NestJS](https://nestjs.com/), [InversifyJS](https://inversify.io/)), or plain -TypeScript classes (manually) -- A testing library ([Jest](https://jestjs.io/), [Vitest](https://vitest.dev/), or [Sinon](https://sinonjs.org/)) - -## Installation - -Install the core package: - -```bash -npm install -D @suites/unit -``` - -Install the adapters for your framework and testing library: - - - - ```bash - # Install NestJS dependencies - npm install @nestjs/common @nestjs/core reflect-metadata - - # Install Suites core and adapters - npm install --save-dev @suites/unit @suites/di.nestjs @suites/doubles.jest - - # Install TypeScript and Jest - npm install --save-dev ts-jest @types/jest jest typescript - ``` - - - ```bash - # Install NestJS dependencies - pnpm add @nestjs/common @nestjs/core reflect-metadata - - # Install Suites core and adapters - pnpm add -D @suites/unit @suites/di.nestjs @suites/doubles.jest - - # Install TypeScript and Jest - pnpm add -D ts-jest @types/jest jest typescript - ``` - - - ```bash - # Install NestJS dependencies - yarn add @nestjs/common @nestjs/core reflect-metadata - - # Install Suites core and adapters - yarn add -D @suites/unit @suites/di.nestjs @suites/doubles.jest - - # Install TypeScript and Jest - yarn add -D ts-jest @types/jest jest typescript - ``` - - - -This installs three packages: -- `@suites/unit` - Core TestBed API -- `@suites/di.nestjs` - NestJS adapter for reading DI metadata -- `@suites/doubles.jest` - Jest integration for creating type-safe mocks - -**Suites will automatically detect the installed adapters and configure itself accordingly.** - -:::info Why reflect-metadata? -`reflect-metadata` is required as a runtime dependency (not dev dependency) because TypeScript's decorator metadata is only emitted at compile time. -Learn more in the [TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/decorators.html#metadata). -::: - -## Supported Libraries (Adapters) - -### Framework Adapters: - -- `@suites/di.nestjs` - [NestJS](https://nestjs.com/) dependency injection -- `@suites/di.inversify` - [InversifyJS](https://inversify.io/) dependency injection - -### Available Mocking Libraries: - -- `@suites/doubles.jest` -- `@suites/doubles.sinon` -- `@suites/doubles.vitest` - -After installation, no additional configuration for the test runner is needed. - -## Setting Up `tsconfig.json` - -To use Suites, enable the [`emitDecoratorMetadata`](https://www.typescriptlang.org/tsconfig#emitDecoratorMetadata) and [`experimentalDecorators`](https://www.typescriptlang.org/tsconfig#experimentalDecorators) options in the `tsconfig.json` file. -This configuration is necessary for Suites to reflect class dependencies and constructor metadata. - -```json title="tsconfig.json" -{ - "compilerOptions": { - "emitDecoratorMetadata": true, - "experimentalDecorators": true - } -} -``` - -:::note NodeNext / ESM projects -As of `3.1.0`, projects configured with `moduleResolution: NodeNext` or `"type": "module"` work with Suites out of the box. No additional configuration is required beyond the standard setup shown above. -::: - -## Type Reference Configuration - -To ensure type safety and maintain a clean API, Suites requires setting up type references for your mocking library. This approach enables importing all utilities from `@suites/unit` while maintaining proper type information. - -### Setting Up Type References - -1. **Create a `global.d.ts` file** in the project root directory (or the location specified as `rootDir` in the `tsconfig.json`). - -2. **Add reference types** for the mocking library and dependency injection framework: - -```typescript title="global.d.ts" -// Mocking library (choose one) -/// -/// -// OR -/// -/// -// OR -/// -/// -``` - -**Example for Jest + NestJS:** -```typescript title='global.d.ts' -/// -/// -``` - -This configuration ensures the project correctly recognizes the types provided by Suites (like the `Mocked` type) without needing to import them from library-specific modules. - -## Monorepo Support - -Suites is fully compatible with monorepo setups, accommodating projects that use different testing frameworks. - -### Recommended Setups - -When using Suites in a monorepo, consider the following setups: - -**Using the same mocking and dependency injection framework across all workspaces** \ -Install the corresponding adapter under the root directory of your monorepo. -Suites will automatically detect the adapter and configure itself accordingly. - -**Using different frameworks across workspaces** \ -Install the corresponding adapter in each workspace separately. Configure the package manager's hoisting settings -to enable Suites to detect the adapter in each workspace. - -:::note -Some package managers may have limitations with dependency hoisting that can affect using different DI or mocking libraries -across workspaces. Refer to the package manager's documentation for specific guidance on dependency hoisting. -::: - -## For Vitest Users - -When integrating Suites with Vitest, additional configuration is required. Vitest typically uses [`esbuild`](https://esbuild.github.io/) for -TypeScript interpretation, which does not support `emitDecoratorMetadata` - a feature extensively used by Suites for -reflecting class dependencies. To overcome this, switch to using [`@swc/core`](https://swc.rs/docs/usage/core) via a -plugin, which supports `emitDecoratorMetadata`. For detailed guidance, see the [Vitest documentation](https://vitest.dev/). - -Here is an example of how to configure Suites with Vitest: - -First, install the `unplugin-swc` and `@swc/core` packages and add it to the `vitest.config.ts` file as a plugin. -This will enable `@swc/core` to interpret TypeScript files and support `emitDecoratorMetadata`. - -```bash -$ npm install --save-dev unplugin-swc @swc/core -``` - -```typescript title='vitest.config.ts' -import swc from 'unplugin-swc'; -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { globals: true, root: './' }, - plugins: [ - swc.vite({ - module: { type: 'es6' }, - jsc: { transform: { decoratorMetadata: true } }, - }), - ], -}); -``` - -:::note Vitest 4.x -Vitest 4.x uses Oxc by default instead of esbuild. The `esbuild: false` option is a no-op in Vitest 4.x and produces a warning; remove it from any existing config. The configuration above works correctly with both Vitest 3.x and 4.x. Vitest 4.x is supported as of `3.1.0`. -::: - -
-## What's Next? - - Check out the [Quick Start](/docs/get-started/quickstart) guide to write the first test - - Explore the [Guides](/docs/guides/) section for testing patterns - - Browse [working examples](https://github.com/suites-dev/examples) for real-world code -
\ No newline at end of file diff --git a/docs/get-started/quickstart.md b/docs/get-started/quickstart.md deleted file mode 100644 index b0f2dc6..0000000 --- a/docs/get-started/quickstart.md +++ /dev/null @@ -1,280 +0,0 @@ ---- -sidebar_position: 4 -title: "Suites Quick Start: Write Your First Unit Test in 5 Minutes" -description: "Write your first Suites unit test in 5 minutes. Walkthrough for NestJS and Inversify with Jest or Vitest." -keywords: [suites quickstart, nestjs unit test example, inversify unit test, first nestjs test, vitest nestjs example, typescript unit test tutorial] ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Quick Start Guide - -Write the first Suites test in 5 minutes. No manual mocks, no dependency injection configuration, no boilerplate. - -**What this guide covers:** - * Solitary tests with automatic mocking - * Sociable tests with real dependencies - * Zero-config testing - -:::info -Complete source code for this example (and more) is available in the [Suites Examples repository](https://github.com/suites-dev/examples). -::: - -## Prerequisites - -Before starting, ensure the [Installation guide](/docs/get-started/installation) has been completed to set up the project with Suites. - -- Basic knowledge of TypeScript and unit testing -- Familiarity with dependency injection patterns -- Familiarity with unit testing basic concepts - -## Step 1: Creating the Application Code - -This guide creates example `UserService` and `UserRepository` classes to test. NestJS decorators are used here, but -**Suites works with any DI framework** (InversifyJS, etc.) or even plain TypeScript classes with constructor injection: - -```typescript title='src/types.ts' -export interface User { - id: number; - name: string; - email: string; -} -``` - -### Create a Repository Class - -```typescript title='src/user.repository.ts' -import { Injectable } from '@nestjs/common'; -import { User } from './types'; - -@Injectable() -export class UserRepository { - async getUserById(id: number): Promise { - // In a real app, this would fetch from a database - return { id, name: 'John Doe', email: 'john@example.com' }; - } -} -``` - -### Create a Service Class with a Dependency - -```typescript title='src/user.service.ts' -import { Injectable } from '@nestjs/common'; -import { UserRepository } from './user.repository'; -import { User } from './types'; - -@Injectable() -export class UserService { - constructor(private userRepository: UserRepository) {} - - async getUserName(id: number): Promise { - const user = await this.userRepository.getUserById(id); - return user.name; - } -} -``` - -## Step 2: Writing the First Test with Suites - -This example writes a test for a `UserService` that depends on a `UserRepository`: - -```typescript title="src/user.service.spec.ts" -import { type Mocked, TestBed } from '@suites/unit'; -import { UserService } from './user.service'; -import { UserRepository } from './user.repository'; - -describe('User Service Unit Spec', () => { - let userService: UserService; - let userRepository: Mocked; - - beforeAll(async () => { - const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - - userService = unit; - userRepository = unitRef.get(UserRepository); - }); - - it('should return the user name and call repository', async () => { - userRepository.getUserById.mockResolvedValue({ - id: 1, - name: 'John Doe', - email: 'john@doe.com', - }); - - const result = await userService.getUserName(1); - - expect(userRepository.getUserById).toHaveBeenCalledWith(1); - expect(result).toBe('John Doe'); - }); -}); -``` - -### Running the Test - -Run tests with: - -```bash -npm test -``` - -You should see output like: - -``` - PASS src/user.service.spec.ts - User Service Unit Spec - ✓ should return the user name and call repository (5ms) - -Tests: 1 passed, 1 total -Time: 0.5s -``` - -### What Just Happened? - -When `TestBed.solitary(UserService).compile()` is called, Suites automatically: - -1. **Analyzed** `UserService`'s constructor and discovered its `UserRepository` dependency -2. **Created** a type-safe mock of `UserRepository` with all methods automatically stubbed -3. **Injected** the mock into `UserService` without manual wiring -4. **Provided** type-safe access to both the service (`unit`) and its mocks (`unitRef`) - -**What was not required:** Manually creating mocks, configuring dependency injection, or writing test setup boilerplate. - -:::tip Key Terminology - -- **Solitary Test**: A test where all dependencies are automatically mocked (complete isolation) -- **Mock**: A fake object with stubbed methods (e.g., `Mocked`) -- **Stub**: A fake method that returns predefined values (e.g., `mockResolvedValue(...)`) -::: - -## Step 3: Testing with Real Dependencies (Sociable Mode) - -Test how components work together using real implementations with **sociable tests**: - -```typescript title='src/notification.service.spec.ts' -import { TestBed } from '@suites/unit'; -import { NotificationService } from './notification.service'; -import { TemplateService } from './template.service'; -import { EmailClient } from './email.client'; - -describe('Notification Service Sociable Spec', () => { - it('should use real TemplateService but mock EmailClient', async () => { - const { unit, unitRef } = await TestBed.sociable(NotificationService) - .expose(TemplateService) // Use real TemplateService - .compile(); - - const emailClient = unitRef.get(EmailClient); - emailClient.send.mockResolvedValue({ success: true }); - - await unit.sendWelcomeEmail('user@example.com'); - - // TemplateService.format() runs with REAL logic - // EmailClient.send() is mocked - expect(emailClient.send).toHaveBeenCalledWith( - expect.objectContaining({ - to: 'user@example.com', - subject: 'Welcome!', - }) - ); - }); -}); -``` - -:::tip -Sociable tests verify that components integrate correctly while keeping tests fast by mocking external boundaries (databases, HTTP clients, etc.). - -Learn more in the [Sociable Unit Testing guide](/docs/guides/sociable). -::: - -## How It Works: No Modules, No Bootstrapping - -This guide uses NestJS's `@Injectable()` decorators but never creates a NestJS module or calls `Test.createTestingModule()`. This is by design, **and NestJS is just one example**. Suites works the same way with InversifyJS, TSyringe, or any TypeScript class with constructor injection. - -### The Traditional Testing Problem - -Traditional testing approaches require extensive boilerplate and manual setup: - - - - -```typescript -// Manual: Define mock classes for every dependency -class MockUserRepository { - findById = jest.fn(); - save = jest.fn(); - delete = jest.fn(); - // ... more methods -} - -class MockEmailService { - send = jest.fn(); - validate = jest.fn(); - // ... more methods -} - -const mockRepo = new MockUserRepository(); -const mockEmail = new MockEmailService(); -const userService = new UserService(mockRepo, mockEmail); -// No DI benefits, pure manual wiring -``` - - - - -```typescript -// NestJS: Complex module setup -const module = await Test.createTestingModule({ - imports: [DatabaseModule, ConfigModule, LoggerModule], - providers: [ - UserService, - { provide: UserRepository, useValue: mockRepo }, - { provide: EmailService, useValue: mockEmail }, - // ... wire every dependency - ] -}).compile(); -// Wait 2-5 seconds for module initialization... -``` - - - - -```typescript -// InversifyJS: Container configuration -const container = new Container(); -container.bind(TYPES.UserRepository).toConstantValue(mockRepo); -container.bind(TYPES.EmailService).toConstantValue(mockEmail); -container.bind(TYPES.UserService).toSelf(); -// Manual container setup for every test -``` - - - - -### The Suites Solution: Virtual Test Container - -Suites bypasses framework initialization entirely: - -```typescript -// Suites: Direct to testing, no ceremony -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); -// Ready in 50-100ms -``` - -**How it works:** -1. **Metadata extraction** - Reads TypeScript decorator metadata directly -2. **Selective mocking** - Creates only the dependencies your class needs -3. **Direct instantiation** - Constructs your class with mocks injected -4. **Zero overhead** - No modules, no framework, no waiting - -**The result:** Tests run 20-100x faster while remaining type-safe and maintainable. - -**Deep dive:** [Virtual Test Container Guide](/docs/guides/virtual-test-container) - -## What's Next? - -- [Unit Testing Fundamentals](/docs/guides/fundamentals) - Learn about the core principles of unit testing -- [Test Doubles](/docs/guides/test-doubles) - Understand how to work with mocks, stubs, and other test doubles -- [Solitary Unit Testing](/docs/guides/solitary) - Dive deeper into testing components in complete isolation -- [Sociable Unit Testing](/docs/guides/sociable) - Explore testing with real implementations of select dependencies - -Need help? Join the [Suites community on GitHub Discussions](https://github.com/suites-dev/suites/discussions) or report issues on our [GitHub repository](https://github.com/suites-dev/suites). diff --git a/docs/get-started/why-suites.md b/docs/get-started/why-suites.md deleted file mode 100644 index a33e530..0000000 --- a/docs/get-started/why-suites.md +++ /dev/null @@ -1,277 +0,0 @@ ---- -sidebar_position: 2 -title: Why Suites? -description: Eliminate boilerplate in dependency injection testing. Suites provides type-safe test doubles and automatic mocking for TypeScript applications following the IoC principle. ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Why Suites? - -Unit testing TypeScript applications with complex dependencies is **expensive and slow**. Whether using dependency injection containers, plain constructor injection, or functional composition, manual mocking creates brittle tests, cryptic errors, and mountains of boilerplate that bury test intent. Teams waste weeks debugging broken test doubles, onboarding junior developers, and maintaining inconsistent unit testing patterns across projects. - -## The Core Problem - -Manual mock setup in IoC and DI patterns creates three critical failures: -* **Silent breakage** (untyped mocks) -* **Cryptic runtime errors** (missing implementations) -* **Excessive boilerplate** (many lines per test) - -## The Quick Win - -Here's what Suites removes: - - - - -```typescript showLineNumbers -// ❌ Before: many lines defining mock classes, no DI benefits -class MockInventoryService { - checkStock = jest.fn(); - reserveStock = jest.fn(); - releaseStock = jest.fn(); - // ... 5 more methods -} - -class MockPaymentService { - authorize = jest.fn(); - capture = jest.fn(); - refund = jest.fn(); - // ... 5 more methods -} - -const mockInventory = new MockInventoryService(); -const mockPayment = new MockPaymentService(); -const orderService = new OrderService(mockInventory, mockPayment, /* ... */); -``` - - - - -```typescript -// ❌ Before: many lines of manual setup, no type safety -let mockInventory: any = { checkStock: jest.fn(), /* ... */ }; -let mockPayment: any = { authorize: jest.fn(), /* ... */ }; - -const module = await Test.createTestingModule({ - providers: [ - OrderService, - { provide: InventoryService, useValue: mockInventory }, - { provide: PaymentService, useValue: mockPayment }, - // ... wire up every dependency manually - ], -}).compile(); - -orderService = module.get(OrderService); -``` - - - - -```typescript -// ❌ Before: many lines of manual setup, no type safety -let container = new Container(); -let mockInventory: any = { checkStock: jest.fn(), /* ... */ }; -let mockPayment: any = { authorize: jest.fn(), /* ... */ }; - -container.bind(TYPES.InventoryService) - .toConstantValue(mockInventory); -container.bind(TYPES.PaymentService) - .toConstantValue(mockPayment); -container.bind(TYPES.OrderService).toSelf(); - -orderService = container.get(TYPES.OrderService); -``` - - - - - -**After: One line, fully typed (works for all frameworks):** - -```typescript -const { unit, unitRef } = await TestBed.solitary(OrderService).compile(); - -orderService = unit; -inventoryService = unitRef.get(InventoryService); // Fully typed! -``` - -## The Problems with Manual Dependency Injection Testing - -### 1. Manual Mocks Break Silently During Refactors - -Backend teams waste hours writing untyped mocks. TypeScript errors on incomplete mocks force developers to cast to 'any', which breaks silently when dependencies change or methods are missing. - -
-Show example - -```typescript -// Developers cast to 'any' to bypass TypeScript errors -const mockRepo = { - findById: jest.fn().mockResolvedValue({ id: 1, name: 'John' }) -} as any; // or unknown - ⚠️ silences all type checks - -const service = new UserService(mockRepo); - -// Later, UserRepository adds 'findByEmail' method... -// TypeScript won't catch this - mock is typed as 'any' -await service.getUserByEmail('test@example.com'); -// Runtime error: "TypeError: userRepository.findByEmail is not a function" -``` -
- -### 2. Excessive Boilerplate Obscures Test Intent and Confuses LLMs - -Each test requires 30+ lines of mock setup. This cognitive load slows development, confuses junior developers, and makes AI assistants struggle to generate correct tests. When tests fail with cryptic errors, LLMs cannot self-correct, burning tokens without progress. - -**LLM token cost and context engineering:** Manual mocking forces AI agents to hold 40+ lines of boilerplate per test in context. With Suites' single canonical pattern (`TestBed.solitary()`), one example teaches the entire API, which reducing context consumption by 95% while improving accuracy. - -
-Show example - -```typescript -describe('Order Service Unit Spec', () => { - beforeEach(() => { - mockInventory = { checkStock: jest.fn(), /* 7 more methods */ } as any; - mockPayment = { authorize: jest.fn(), /* 8 more methods */ } as unknown as jest.Mocked<...>; - mockNotification = { sendEmail: jest.fn(), /* 5 more */ } as any; - // ... repeat for 5 more services - orderService = new OrderService(mockInventory, mockPayment, mockNotification); - }); - - // Where's the test? Buried in boilerplate. -}); -``` -
- -### 3. Inconsistent Patterns Across Teams - -Different teams use different testing approaches (manual instantiation, mock classes, container registration patterns). Developers switching projects must relearn patterns every time. No standard emerges, even within the same organization. - -
-Show example - -```typescript -// Team A: manual object mocks -const mockDb = { query: jest.fn() }; - -// Team B: mock class instances -class MockDatabase { query = jest.fn(); } - -// Team C: container registration -const container = new Container(); -container.register(Database, { useValue: { query: jest.fn() } }); - -// Developers switching teams must learn new patterns each time -``` - -
- -## How Suites Solves It - -Suites provides a **declarative API** that removes manual mocking entirely. A single call creates a fully-typed, -isolated unit testing environment with type-safe test doubles. No boilerplate, no cryptic errors, no silent failures. - -:::tip Current Testing Options - -**Using dependency injection frameworks?** -`TestBed` provides automatic mock injection and reference tracking - the best testing experience. - -**Not using dependency injection?** -Use `mock()` and `stub()` for type-safe mocking. Works with any TypeScript code, but requires manual dependency wiring -and reference tracking. See [mock() and stub() utilities](/docs/api-reference/mock). -::: - -```typescript title="order.service.spec.ts" {1,9,11-13} -import { TestBed, type Mocked } from '@suites/unit'; - -describe('Order Service Sociable Unit Spec', () => { - let orderService: OrderService; - let inventoryService: Mocked; - let paymentService: Mocked; - - beforeAll(async () => { - const { unit, unitRef } = await TestBed.solitary(OrderService).compile(); - - orderService = unit; - inventoryService = unitRef.get(InventoryService); - paymentService = unitRef.get(PaymentService); - // All dependencies auto-mocked and fully typed! - }); - - test('should place order', async () => { - // Test intent is immediately clear - inventoryService.checkStock.mockResolvedValue(true); - await orderService.placeOrder({ items: ['item1'] }); - - // TypeScript validates at compile time: - // ✅ inventoryService.checkStock exists - // ❌ inventoryService.nonExistentMethod is a compile error - }); -}); -``` - -**What Suites provides:** - -- **Type-Safe Refactoring**: Compile-time validation with mocks bound to implementations prevent silent test failures -and let teams change constructors or add dependencies without breaking tests. -- **Zero Boilerplate**: One line replaces dozens of lines of manual mock setup. -- **Standardized Testing Across Teams**: A single canonical API enforces consistent testing patterns across projects and frameworks, so every team shares the same approach. -- **AI-Friendly**: Single canonical pattern reduces token count for LLMs. One `TestBed.solitary()` example teaches the entire API, unlike 40+ lines of manual setup requiring exhaustive edge-case documentation. - -### Framework Support - -Suites works seamlessly with frameworks implementing IoC using the same clean API. - - - - -```typescript -import { Injectable } from '@nestjs/common'; - -@Injectable() -class PaymentService { - constructor(private gateway: PaymentGateway) {} -} - -const { unit, unitRef } = await TestBed.solitary(PaymentService).compile(); -``` - - - -```typescript -import { injectable } from 'inversify'; - -@injectable() -class PaymentService { - constructor(private gateway: PaymentGateway) {} -} - -const { unit, unitRef } = await TestBed.solitary(PaymentService).compile(); -``` - - - -```typescript -import { injectable } from 'injection-js'; - -@Injectable() -class PaymentService { - constructor(private gateway: PaymentGateway) {} -} - -const { unit, unitRef } = await TestBed.solitary(PaymentService).compile(); -``` - - - -Same API, same patterns across frameworks. All utilities are exported from a single entry point: `@suites/unit` - -## In Summary - -Suites replaces thousands of lines of brittle, manual test setup with a single, declarative call. Backend teams gain -confidence in their unit testing, improve refactor safety with solitary and sociable unit tests, and enable both -developers and AI tools to write and maintain reliable test suites. - -**Ready to try it?** Check out the [Quick Start](/docs/get-started/quickstart) guide to write the first test in 5 minutes. diff --git a/docs/guides/fundamentals.md b/docs/guides/fundamentals.md deleted file mode 100644 index 456f8a6..0000000 --- a/docs/guides/fundamentals.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -sidebar_position: 1 -title: Unit Testing Fundamentals -description: Master unit testing fundamentals with the IoC principle. Learn solitary vs sociable testing, test doubles, and how Suites eliminates mock boilerplate for dependency injection and beyond. ---- - -# Unit Testing Fundamentals - -> **What this covers:** Core principles of unit testing with the IoC principle and how Suites eliminates testing complexity \ -> **Time to read:** ~10 minutes \ -> **Prerequisites:** Basic TypeScript knowledge, familiarity with basic testing concepts \ -> **Best for:** Understanding unit testing foundations and IoC testing patterns before diving into solitary and sociable testing - -Unit testing verifies software quality and maintainability. This guide covers essential unit testing concepts, IoC -testing principles, and how Suites simplifies testing component logic and interactions in applications using -dependency injection. - -## Overview - -This guide covers: -1. What unit testing is and its core principles -2. Prerequisites for using Suites effectively -3. Understanding units in class-based applications -4. Characteristics of good unit tests (FIRST principles) -5. How Suites solves IoC testing challenges -6. Two testing approaches: solitary and sociable tests - -## What is Unit Testing? - -Unit testing verifies individual components in isolation. Each test checks that a specific piece of code works -correctly. - -**Core principles:** -- **Isolation:** Test one component at a time -- **Fast:** Tests run in milliseconds -- **Repeatable:** Same input, same output -- **Independent:** Tests don't affect each other - -**Advantages:** -- Catch bugs early (when they're cheap to fix) -- Enable safe refactoring -- Serve as executable documentation -- Improve code design - -## What is Inversion of Control (IoC)? - -**Inversion of Control** is a design principle where dependencies are passed into a component rather than created inside it. - -```typescript -// ❌ Without IoC - creates own dependency -class UserService { - private repo = new UserRepository(); -} - -// ✅ With IoC - dependency passed in (class-based) -class UserService { - constructor(private repo: UserRepository) {} -} - -// ✅ With IoC - dependency passed in (functional) -function createUserService(repo: UserRepository) { - return { - getUser: (id: number) => repo.findById(id) - }; -} -``` - -This principle applies to any architectural choice: dependency injection frameworks, plain constructor injection, functional composition, or factory patterns. The key is that dependencies flow in from outside. - -:::info -Suites' testing theory builds on Martin Fowler's work on Inversion of Control and test doubles. Read more in his articles: [Inversion of Control](https://martinfowler.com/bliki/InversionOfControl.html) and [Mocks Aren't Stubs](https://martinfowler.com/articles/mocksArentStubs.html). -::: - -## Prerequisites - -Suites supports the IoC principle through multiple implementations: - -**Currently Supported:** -- Dependency injection frameworks -- Constructor injection with `@Injectable()` decorators -- Plain TypeScript classes with constructor parameters (manually) -- Standalone mocking with the `mock()` function (manually) - -## "Units" in Class-Based Applications - -In class-based architectures following the IoC principle, a unit is typically a class: - -```typescript -@Injectable() -class PaymentService { - constructor(private gateway: PaymentGateway) {} -} -``` - -Each class is a logical component with specific responsibilities. - -## Characteristics of Good Unit Tests - -**Effective unit tests follow the FIRST principles:** - -* **Fast** - Tests run in milliseconds. Quick feedback enables frequent testing during development. -* **Isolated** - Each test is independent. One test failing doesn't cascade to others. -* **Repeatable** - Same conditions produce same results. No flaky tests. -* **Self-Validating** - Tests clearly pass or fail. No manual verification needed. -* **Timely** - Write tests as code develops, not after. Catches issues immediately. - -## Unit Testing with IoC Patterns - -Testing applications with IoC patterns presents several challenges: - -**The Pain:** -- Manually create mock objects and test doubles for every dependency -- Wire dependencies together with type casts -- Update every test when constructor changes -- No compile-time safety (`as any` / `as unknown as ..` hides bugs) - -**How Suites Solves It:** - -- Auto-generates all mocks and test doubles (no manual creation) -- Auto-wires dependencies (no type casts) -- Type-safe mocks (TypeScript catches mismatches) -- One call creates a complete test environment -- Single canonical pattern for AI agents (minimal token cost) - -```typescript -// Manual: many many lines of mocks setup -// Suites: 1 line -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); -``` - -:::tip 🤖 LLM-Friendly Design -Suites provides one canonical pattern that teaches the entire API. AI agents need a single -example in context instead of dozens of lines showing different manual mocking approaches. This reduces token -consumption and improves generation accuracy. -::: - -## Testing Approaches Comparison - -Suites offers different testing approaches based on architecture: - -| Feature | `TestBed` (DI Only) | `mock()` / `stub()` | -|-----------------------|---------------------|---------------------| -| Type Safety | ✅ | ✅ | -| Auto Mock Creation | ✅ | ❌ Manual | -| Auto Injection | ✅ | ❌ Manual | -| Reference Tracking | ✅ `unitRef.get()` | ❌ Manual variables | -| Requires DI Framework | ✅ | ❌ Any TypeScript | -| Works Today | ✅ | ✅ | - -**Choose based on project architecture:** - -- **Using Dependency Injection?** Use `TestBed` for the best testing experience -- **Plain TypeScript?** Use `mock()` and `stub()` (manual wiring required) - -## Types of Unit Tests in Suites - -Suites supports two approaches based -on [Martin Fowler's distinction between solitary and sociable unit tests](https://martinfowler.com/bliki/UnitTest.html): - -* **Solitary Unit Tests** - Test one class in complete isolation. All collaborators are replaced with test doubles to ensure a fault in a dependency does not cause the primary class's tests to fail. \ -See [Solitary Unit Tests](/docs/guides/solitary) for examples and usage. - -* **Sociable Unit Tests** - Test multiple component classes together with their real collaborators. External I/O - (databases, APIs, file systems) is replaced with test doubles (mocks and stubs) to keep tests fast and deterministic. \ -See [Sociable Unit Tests](/docs/guides/sociable) for examples and usage. - -Suites follows Fowler's pragmatic approach: use test doubles when collaboration is awkward (external services, I/O), but allow real collaborators when interactions are fast and stable. - -## What Suites Provides - -- Automatic mock generation for all dependencies -- Solitary and sociable testing approaches -- Type-safe test code with full TypeScript support -- Framework-agnostic API - -## Quick Reference - -| Term | Definition | Learn More | -|---------------------|--------------------------------------------------------------------------------------|-------------------------------------------| -| Unit Test | Verifies individual components in isolation | [See above](#what-is-unit-testing) | -| Integration Test | Tests how multiple components work together with real external systems including I/O | N/A - Suites focuses on unit testing | -| Solitary Test | Unit test with all dependencies mocked | [Solitary Guide](/docs/guides/solitary) | -| Sociable Test | Unit test with selected real dependencies, external I/O mocked | [Sociable Guide](/docs/guides/sociable) | -| Dependency | A collaborator object that a component needs to function | Soon | - -## Next Steps - -Now that you understand the fundamentals of unit testing with Suites, explore specific testing approaches: - -- **[Solitary Unit Testing](/docs/guides/solitary)**: Write tests with complete isolation using automatic mocking -- **[Sociable Unit Testing](/docs/guides/sociable)**: Test multiple classes together with controlled collaboration -- **[Test Doubles in Suites](/docs/guides/test-doubles)**: Learn about mocks, stubs, spies, and when to use each - -## Additional Resources - -- **[GitHub Discussions](https://github.com/suites-dev/suites/discussions)**: Ask questions and share experiences with the community -- **[GitHub Issues](https://github.com/suites-dev/suites/issues)**: Report bugs or request features diff --git a/docs/guides/index.md b/docs/guides/index.md deleted file mode 100644 index e0ca6be..0000000 --- a/docs/guides/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -sidebar_position: 2 -title: Guides -description: Practical guides for testing with Suites -toc_min_heading_level: 3 ---- - -# Testing Guides - -Practical guides for writing solitary and sociable unit tests with Suites. Learn how to test components in isolation, verify real interactions between classes, and control external dependencies. - - -
- -### In This Section - -- [**Fundamentals of Unit Testing**](/docs/guides/fundamentals) - Core principles and best practices -- [**Solitary Unit Tests**](/docs/guides/solitary) - Testing components in complete isolation -- [**Sociable Unit Tests**](/docs/guides/sociable) - Testing with real dependencies -- [**Test Doubles**](/docs/guides/test-doubles) - Mocks, stubs, and spies -- [**Virtual Test Container**](/docs/guides/virtual-test-container) - How Suites creates test environments - -
- -:::tip -Start with [Fundamentals](/docs/guides/fundamentals), then [Solitary](/docs/guides/solitary) and [Sociable](/docs/guides/sociable) testing. -::: - -:::tip Working Examples -Browse the [Suites Examples repository](https://github.com/suites-dev/examples) for complete, runnable examples of solitary, sociable, and real-world testing patterns. -::: - - diff --git a/docs/guides/sociable.md b/docs/guides/sociable.md deleted file mode 100644 index ed7705c..0000000 --- a/docs/guides/sociable.md +++ /dev/null @@ -1,329 +0,0 @@ ---- -sidebar_position: 4 -title: Testing Components Together (Sociable) -description: Testing real component interactions with Suites ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Testing Components Together (Sociable Testing) - -> **What this covers:** Testing real component (class) interactions while controlling external dependencies \ -> **Time to read:** ~15 minutes \ -> **Prerequisites:** [Unit Testing Fundamentals](/docs/guides/fundamentals), [Solitary Unit Tests](./solitary), [Test Doubles](./test-doubles) \ -> **Best for:** Verifying components (classes) work together correctly, catching integration bugs while maintaining test speed - -Sociable unit tests verify how components interact with their real dependencies while keeping external I/O operations under control. This approach identifies bugs in how business logic components work together - bugs that solitary tests miss. - -## Sociable Tests Are Unit Tests - -Sociable tests are **unit tests**, not integration tests. They keep external I/O (databases, APIs, file systems) mocked to stay fast and side-effect-free. The integration bugs they catch are issues in how business logic components work with each other - not issues with real external systems. \ -For the distinction, see [Unit Testing Fundamentals: Quick Reference](/docs/guides/fundamentals#quick-reference). - -## Overview - -This tutorial covers: -1. Setting up a sociable test with real dependencies -2. Handling external dependencies and I/O operations -3. Managing multiple dependencies using `.expose()` -4. Choosing when to configure mocks (before vs after compilation) -5. Using a decision framework to choose what to mock - -## Step 1: Set Up the First Sociable Test - -This example tests a `UserService` that depends on an `EmailValidator`. - -### 1.1 Create the Services - -```typescript title="src/services/email-validator.ts" -@Injectable() -export class EmailValidator { - isValid(email: string): boolean { - return email.includes('@') && email.includes('.'); - } -} -``` - -```typescript title="src/services/user.service.ts" -@Injectable() -export class UserService { - constructor(private validator: EmailValidator) {} - - createUser(email: string) { - if (!this.validator.isValid(email)) { - throw new Error('Invalid email'); - } - return { email }; - } -} -``` - -### 1.2 Write the Sociable Test - -The `.expose()` method tells Suites to use the real implementation instead of a mock. - -```typescript title="src/services/user.service.spec.ts" -import { TestBed } from '@suites/unit'; -import { UserService, EmailValidator } from './services'; - -describe('UserService', () => { - let userService: UserService; - - beforeAll(async () => { - const { unit } = await TestBed.sociable(UserService) - .expose(EmailValidator) // Use real EmailValidator - .compile(); - - userService = unit; - }); - - it('validates email using real logic', () => { - const result = userService.createUser('test@example.com'); - expect(result.email).toBe('test@example.com'); - }); - - it('rejects invalid email', () => { - expect(() => userService.createUser('invalid')) - .toThrow('Invalid email'); - }); -}); -``` -The real `EmailValidator` runs its actual validation logic. If the validator has a bug, this test will detect it. - -## Step 2: Handle External Dependencies - -Most services interact with external systems like databases. This example extends the previous one. - -### 2.1 Add Database Dependency - -```typescript title="src/services/user.service.ts" -@Injectable() -export class UserService { - constructor( - private validator: EmailValidator, - @Inject('DATABASE') private db: DatabaseClient // Token injection - ) {} - - async createUser(email: string) { - if (!this.validator.isValid(email)) { - throw new Error('Invalid email'); - } - return this.db.users.save({ email }); - } -} -``` - -### 2.2 Test with Mocked I/O - -Dependencies injected using tokens are automatically mocked. - -```typescript title="src/services/user.service.spec.ts" -import { TestBed, Mocked } from '@suites/unit'; - -describe('UserService', () => { - let userService: UserService; - let database: Mocked; - - beforeAll(async () => { - const { unit, unitRef } = await TestBed.sociable(UserService) - .expose(EmailValidator) - .compile(); - - userService = unit; - database = unitRef.get('DATABASE'); - }); - - it('saves valid user', async () => { - database.users.save.mockResolvedValue({ id: 1, email: 'test@example.com' }); - - const result = await userService.createUser('test@example.com'); - - expect(result.id).toBe(1); - expect(database.users.save).toHaveBeenCalledWith({ email: 'test@example.com' }); - }); -}); -``` - -Third-party packages use `@Inject('TOKEN')` because they're not `@Injectable()` classes. Dependencies injected this way are **always mocked** automatically. - -## Step 3: Manage Multiple Dependencies - -As services grow, you need to manage more dependencies. Here's how to handle them: - -### 3.1 Service with Many Dependencies - -```typescript title="src/services/order.service.ts" -@Injectable() -export class OrderService { - constructor( - private pricingService: PricingService, - private taxCalculator: TaxCalculator, - private inventoryChecker: InventoryChecker, - private discountEngine: DiscountEngine, - @Inject('DATABASE') private db: DatabaseClient, - @Inject('EMAIL_SERVICE') private email: EmailClient - ) {} - - async processOrder(items: OrderItem[], region: string) { - const subtotal = this.pricingService.calculateTotal(items); - const tax = this.taxCalculator.calculateTax(subtotal, region); - const total = subtotal + tax; - - const order = await this.db.orders.create({ items, subtotal, tax, total }); - await this.email.send({ to: order.customerEmail, template: 'order-confirmation' }); - - return order; - } -} -``` - -### 3.2 Using `.expose()` - -List each dependency that should use its real implementation. - -```typescript title="src/services/order.service.spec.ts" -describe('OrderService', () => { - let orderService: OrderService; - let database: Mocked; - - beforeAll(async () => { - const { unit, unitRef } = await TestBed.sociable(OrderService) - .expose(PricingService) // Use real implementation - .expose(TaxCalculator) // Use real implementation - .expose(InventoryChecker) // Use real implementation - .expose(DiscountEngine) // Use real implementation - .compile(); - - orderService = unit; - database = unitRef.get('DATABASE'); - }); - - it('processes order with real calculations', async () => { - const items = [{ price: 10, quantity: 6 }]; - database.orders.create.mockResolvedValue({ id: 123 }); - - await orderService.processOrder(items, 'US'); - - // All exposed services run real code - expect(database.orders.create).toHaveBeenCalledWith({ - items, - subtotal: 54, // Real discount calculation - tax: 4.32, // Real tax calculation - total: 58.32 - }); - }); -}); -``` - -:::tip Understanding the Control Boundary -Suites can only control **explicit dependencies** (passed through constructors). It cannot control implicit dependencies (direct imports). For more, see [Test Doubles](/docs/guides/test-doubles). -::: - -## Step 4: Choose When to Configure Mocks - -You can configure mocks before compilation (for consistent values) or after compilation (for test-specific scenarios). - - - - -**When to use:** Set default values that all tests in the suite need. - -**Best for:** Shared test data, reducing repetitive setup code - -```typescript title="src/services/user.service.spec.ts" -beforeAll(async () => { - const { unit, unitRef } = await TestBed.sociable(UserService) - .expose(EmailValidator) - .mock('DATABASE') - .final({ - users: { - save: async () => ({ id: 42, email: 'test@example.com' }) - } - }) - .compile(); - - userService = unit; - // Database always returns the same value -}); - -it('creates user', async () => { - const result = await userService.createUser('test@example.com'); - expect(result.id).toBe(42); // Always 42 -}); -``` - - - -**When to use:** Configure different behaviors for individual tests. - -**Best for:** Test-specific scenarios, error cases, varying responses - -```typescript title="src/services/user.service.spec.ts" -beforeAll(async () => { - const { unit, unitRef } = await TestBed.sociable(UserService) - .expose(EmailValidator) - .compile(); - - userService = unit; - database = unitRef.get('DATABASE'); -}); - -it('handles save error', async () => { - // Configure for this specific test - database.users.save.mockRejectedValue(new Error('Connection failed')); - - await expect(userService.createUser('test@example.com')) - .rejects.toThrow('Connection failed'); -}); - -it('handles successful save', async () => { - // Different configuration for different test - database.users.save.mockResolvedValue({ id: 99 }); - - const result = await userService.createUser('test@example.com'); - expect(result.id).toBe(99); -}); -``` - - - -## Decision Framework - -Use this flowchart to decide how to handle each dependency: - -```mermaid -flowchart LR - A[Dependency] --> B{External I/O?} - B -->|Yes| C[@Inject TOKEN
Auto-mocked] - B -->|No| D{Business logic
to test?} - D -->|Yes| E[.expose Class
Uses real code] - D -->|No| F[Leave mocked
default behavior] -``` - -**Rules:** -- **External I/O** (databases, APIs, file systems) → Use token injection → Auto-mocked -- **Business logic** to test → Use `.expose()` → Runs real code -- **Everything else** → Leave as default → Auto-mocked - -## Summary - -Sociable tests work alongside solitary tests to provide comprehensive coverage: - -- **Solitary tests:** Verify individual class behavior in isolation -- **Sociable tests:** Verify components work together correctly - -### Takeaways - -- Sociable tests verify how components interact using real implementations for business logic -- External systems (I/O) are always mocked using token injection (`@Inject('TOKEN')`) -- Use `.expose()` to specify which dependencies should use real implementations -- Configure mocks before compilation for consistent values, or after for test-specific scenarios -- Follow the decision tree: External I/O → token injection, business logic → expose, everything else stays mocked - -## Next Steps - -After understanding sociable testing, explore these resources: - -- **[Test Doubles](./test-doubles)**: Core concepts of mocking and stubbing -- **[Suites Examples Repository](https://github.com/suites-dev/examples)**: Working examples of sociable testing patterns diff --git a/docs/guides/solitary.md b/docs/guides/solitary.md deleted file mode 100644 index 7a7427c..0000000 --- a/docs/guides/solitary.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -sidebar_position: 3 -title: Testing in Isolation (Solitary) -description: Testing in isolation with Suites ---- - -# Testing Unit In Isolation (Solitary Testing) - -> **What this covers:** Writing unit tests that isolate a single component (class) using automatic mocking \ -> **Time to read:** ~8 minutes \ -> **Prerequisites:** [Unit Testing Fundamentals](/docs/guides/fundamentals), [Test Doubles](./test-doubles) \ -> **Best for:** Testing component logic in complete isolation, controlling all inputs for predictable results - -Solitary unit tests evaluate a single unit of work in complete isolation from its external dependencies. These tests use -mocks (collections of stubs) to replace dependencies, enabling testing of component behavior without influence from its -collaborators. - -**Solitary tests are ideal when:** - -- Testing the logic and behavior of a single component (class) -- Controlling all inputs to ensure predictable test results -- Developing new components and ensuring they work correctly in isolation - -In contrast to [sociable unit tests](/docs/guides/sociable), where certain dependencies are real implementations, solitary tests replace all dependencies with mocks to ensure true isolation. - -## Terminology - -Before diving in, it is important to understand these core concepts: - - -* **Stub:** An individual method that returns predefined values. Configure stubs using `.mockResolvedValue()` or - `.mockReturnValue()` (like `jest.fn()`). -* **Mock:** A replacement for a dependency class where all methods are stubs - simply a collection of stubs -* **`Mocked:`** A type representing a class where all methods are stubs ([see `Mocked` type](/docs/api-reference/types#mockedt)). - -For a deeper understanding of test doubles, see [Test Doubles](/docs/guides/test-doubles) after completing this guide. - -## Overview - -This tutorial walks you through: -1. Setting up a class to test with dependencies -2. Writing your first solitary test with automatic mocking -3. Configuring mock behavior for different test scenarios - -## Step 1: Set Up the Class Under Test - -This example tests `UserService` which depends on `UserApi` and `Database`: - -```typescript title="user.service.ts" -@Injectable() -class UserService { - constructor( - private readonly userApi: UserApi, // < This considered dependency - private readonly database: Database // < This considered dependency - ) {} - - async generateRandomUser(): Promise { - const randomUser = await this.userApi.getRandom(); - return this.database.saveUser(randomUser); - } -} -``` - -## Step 2: Write the First Solitary Test - -This example demonstrates writing a solitary unit test for the `UserService` class: - -```typescript title="user.service.spec.ts" {1,13,15,18-19} showLineNumbers -import { TestBed, type Mocked } from '@suites/unit'; -import { UserService, UserApi, Database } from './services'; - -describe('UserService Tests', () => { - let userService: UserService; // Class under test - - // Declare the mock instances - let userApi: Mocked; - let database: Mocked; - - beforeAll(async () => { - // Create the test environment with automatic mocking - const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - - userService = unit; - - // Retrieve the mock instances - userApi = unitRef.get(UserApi); - database = unitRef.get(Database); - }); - - it('should generate a random user and save to the database', async () => { - // Configure the stubbed methods to return predefined values - userApi.getRandom.mockResolvedValue({ id: 1, name: 'John' } as User); - database.saveUser.mockResolvedValue(42); - - // Test the outcome, not the implementation details - const result = await userService.generateRandomUser(); - - // Verify the result is what we expect (the return value from database.saveUser) - expect(result).toBe(42); - }); -}); -``` - -### What Just Happened? - -The test setup uses `TestBed.solitary()` to create an isolated testing environment: - -1. **TestBed analyzes the class** - Reads `UserService` constructor to find `UserApi` and `Database` dependencies -2. **Automatic mocks are created** - Generates mock instances of `UserApi` and `Database` with all methods as stubs -3. **Dependencies are injected** - Wires the mocks into `UserService` constructor automatically -4. **Type-safe access** - Use `unitRef.get()` to retrieve mocks with full TypeScript support - -No manual mock creation needed. `TestBed` handles dependency discovery, mock generation, and wiring automatically. - -### Automatic Mocking of Dependencies - -When using `TestBed.solitary()`, all dependencies are automatically mocked. Each method becomes a stub with no predefined responses. Configure stub responses in tests as needed. - -```typescript -// These stubs start with no return values -userApi.getRandom // Returns undefined by default -database.saveUser // Returns undefined by default - -// Configure them in your tests -userApi.getRandom.mockResolvedValue({ id: 1, name: 'John' }); -database.saveUser.mockResolvedValue(42); -``` - -:::info How This Works -See [Virtual Test Container](/docs/guides/virtual-test-container) for how the virtual test container works under the hood. -::: - -## Step 3: Configure Mock Behavior - -Configure mocks before or after calling `.compile()` depending on test needs: - -```typescript -// Configure after compile (most common) -beforeAll(async () => { - const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - userService = unit; - userApi = unitRef.get(UserApi); -}); - -it('test case', () => { - userApi.getRandom.mockResolvedValue({ id: 1, name: 'John' }); - // ... test logic -}); -``` - -:::info -For advanced configuration options, see [Mock Configuration](/docs/api-reference/mock-configuration). -::: - -## Summary - -- **Solitary tests** evaluate a single unit in complete isolation from dependencies -- **Automatic mocking** with `TestBed.solitary()` eliminates manual mock setup -- **Virtual container** creates only the mocks needed, not the full framework -- **Type safety** with `Mocked` ensures stub methods are properly typed -- **Configure stubs** in your tests to control dependency behavior -- **Use solitary tests** when you need complete control over inputs and want predictable results - -## Next Steps - -For testing how components work together, explore different approaches: - -- **[Sociable Unit Tests](/docs/guides/sociable)**: Test multiple classes together with controlled collaboration -- **[Test Doubles](/docs/guides/test-doubles)**: Understand mocks, stubs, and spies in depth - -## Additional Resources - -- **[Suites Examples Repository](https://github.com/suites-dev/examples)**: Working examples of solitary testing patterns -- **[API Reference - TestBed.solitary](/docs/api-reference/testbed-solitary)**: Complete API documentation for TestBed.solitary() -- **[API Reference - Mock Configuration](/docs/api-reference/mock-configuration)**: Advanced mock configuration options -- **[API Reference - Types](/docs/api-reference/types)**: TypeScript type definitions including `Mocked` diff --git a/docs/guides/test-doubles.md b/docs/guides/test-doubles.md deleted file mode 100644 index 9ead5e1..0000000 --- a/docs/guides/test-doubles.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -sidebar_position: 2 -title: "TypeScript Test Doubles: Auto-Generated Mocks, Stubs, Spies & Fakes" -description: "Type-safe test doubles for TypeScript unit tests. Auto-generate mocks, stubs, spies, and fakes for NestJS, Inversify, Jest, and Vitest using Suites." -keywords: [test doubles, mocks, stubs, spies, fakes, mocks vs stubs, typescript testing, unit testing, mock generation typescript, auto mocks, nestjs testing, vitest mocks, jest mocks] ---- - -# Test Doubles: Mocks, Stubs, Spies, and Fakes - -> **What this covers:** What test doubles are, the four main types, when to use each, and how Suites generates them -> automatically for TypeScript backends. \ -> **Time to read:** ~10 minutes \ -> **Prerequisites:** Familiarity with unit testing concepts. New to Suites? Start with -> the [Quickstart](/docs/get-started/quickstart). \ -> **Best for:** Understanding the theory behind test doubles after hands-on experience with solitary testing - -A **test double** is a stand-in object you use in a unit test in place of a real dependency (a database, an HTTP client, -a third-party SDK), so the test stays fast, deterministic, and isolated from the outside world. - -The term comes from [Gerard Meszaros's _xUnit Test Patterns_](http://xunitpatterns.com/Test%20Double.html) and was -popularised by [Martin Fowler's "Mocks Aren't Stubs"](https://martinfowler.com/articles/mocksArentStubs.html). Both -works distinguish four common kinds of test double: - -| Type | What it does | Typical use | -|----------|-----------------------------------------------------------------------|-----------------------------------------------------------------------------------------| -| **Stub** | Returns a hard-coded value when called. No verification. | Make a dependency return what your test needs. | -| **Mock** | Records calls so the test can assert *how* the dependency was used. | Verify the system-under-test called `repo.save()` exactly once with the right argument. | -| **Spy** | Wraps a real object, records calls, but lets the real method execute. | Observe behaviour without changing it. | -| **Fake** | A working but simplified implementation (e.g. in-memory database). | When the real dependency is too heavy but a stub would lose too much realism. | - -The distinction that catches most people out: a **stub** answers *queries*, a **mock** verifies *commands*. Fowler calls -this _state verification_ vs _behaviour verification_. If you're unsure which you need, you almost always want a stub. - -## Why test doubles matter - -Without them, a "unit" test ends up exercising your entire dependency tree: the database, the network, the file system. -The result is slow, flaky, and tells you very little about the unit you actually changed. Test doubles let you isolate -one piece of code, make its environment deterministic, and assert on it precisely. - -## Test doubles in Suites - -Writing test doubles by hand is repetitive: for every dependency, you build a fake class, stub each method, wire it into -your DI container. Suites does this automatically. Given a class with constructor-injected dependencies, Suites -generates a fully-mocked version of every dependency, no manual `jest.fn()` calls, no hand-rolled fakes. - -```typescript -import { TestBed, Mocked } from '@suites/unit'; - -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); -const repo: Mocked = unitRef.get(UserRepository); - -repo.findById.mockResolvedValue(testUser); // stub a return value -await unit.activateUser('123'); -expect(repo.save).toHaveBeenCalledWith(testUser); // verify a call -``` - -That's it - `UserRepository` was generated as a mock with every method pre-stubbed. No setup file, no manual mock -factory. - -> **Try it:** Set up Suites and write your first test in under five minutes. See -> the [Quickstart](/docs/get-started/quickstart). - -The rest of this guide explains how Suites uses the terms _mock_ and _stub_, which dependencies it can and can't -replace, and how to choose between state and behaviour verification in practice. - -## How Suites Uses "Mocks" and "Stubs" - -Suites uses these terms in a specific way: - -**Mock:** A fake replacement of an entire class. When Suites creates a mock, all the methods in that class become stubs. - -```typescript -const repo: Mocked = unitRef.get(UserRepository); -// repo is a mock - a fake version of UserRepository -// All its methods (findById, save, etc.) are now stubs -``` - -**Stub:** A single method that returns a value you specify. - -```typescript -repo.findById.mockResolvedValue(testUser); -// findById is now a stub that returns testUser -``` - -**Simple rule:** When you see `Mocked`, it means you have a mock (fake class) where all methods are -stubs (fake methods). - -## Dependencies: What Can Be Replaced? - -Suites can only create test doubles for **explicit dependencies** - dependencies that are passed in through the -constructor or method parameters. It cannot replace **implicit dependencies** - things that are imported directly at the -top of a file. - -**Explicit dependencies** (Suites can replace these): - -```typescript -@Injectable() -export class UserService { - constructor( - private database: Database, // ✅ Suites can create a mock - private emailService: EmailService // ✅ Suites can create a mock - ) {} -} -``` - -**Implicit dependencies** (Suites cannot replace these): - -```typescript -import { sendEmail } from './email-utils'; // ❌ Direct import - -@Injectable() -export class UserService { - createUser(data: UserData) { - sendEmail(data.email); // ❌ Always runs the real code - } -} -``` - -When there are implicit dependencies, they always execute the real code during tests because Suites has no way to intercept them. - -:::tip -Not all implicit dependencies are a problem. Simple utility functions like `Math.floor()` or `formatDate()` are fine. -But operations that touch the network, database, or file system should be explicit dependencies so you can replace them in tests. -::: - -## Two Ways to Verify Tests - -You can verify that your code works correctly in two different ways: - -**State Verification:** -Check what the final result is, not how you got there. - -```typescript -repo.findById.mockResolvedValue(testUser); -const result = await service.getUserName(1); -expect(result).toBe('John Doe'); // Did we get the right answer? -``` - -**Behavior Verification:** -Check that the right methods were called with the right arguments. - -```typescript -await service.createUser(userData); -expect(repo.save).toHaveBeenCalledWith(userData); // Was save() called correctly? -``` - -Both approaches work well with Suites. Choose the one that makes sense for what you're testing. - -:::note Common Pitfalls -Using `spyOn()` or manual mocks (`jest.mock()`/`vitest.mock()`) frequently, usually means the code has too many -implicit dependencies. Consider refactoring to use explicit dependencies instead (pass dependencies in through the constructor) -::: - -## Using Mocks in Suites - -Suites automatically creates mocks for all dependencies. - -```typescript -const { unit, unitRef } = await TestBed.solitary(UserService).compile(); -const repo = unitRef.get(UserRepository); // Automatically a mock! - -// Now configure what the stub methods should return -repo.findById.mockResolvedValue(testUser); -``` - -For more details on configuration options, see: - -- [Mock Configuration](/docs/api-reference/mock-configuration) - Using `.mock().final()` and `.mock().impl()` -- [Types](/docs/api-reference/types) - Details about the `Mocked` type -- [mock() function](/docs/api-reference/mock) - Creating mocks manually - -## Testing with Real Implementations - -Sometimes you want to test how multiple components work together using real code, not mocks. Use sociable tests for -this: - -```typescript -const { unit } = await TestBed.sociable(UserService) - .expose(UserRepository) // Use the real UserRepository - .compile(); - -// Now both UserService and UserRepository use real implementations -const result = await unit.createUser(userData); -expect(result.id).toBeDefined(); // Real database logic executed -``` - -See [Sociable Unit Tests](/docs/guides/sociable) for more information. - -## Summary - -### Quick Reference - -| Term | What It Means | Example | -|-------------------------|-----------------------------------------------------------|-----------------------------------------| -| **Test Double** | Any fake replacement for a real dependency | Any mock, stub, spy, fake, or dummy | -| **Mock** | A fake version of an entire class (all methods are stubs) | `Mocked` | -| **Stub** | A fake method that returns a predetermined value | `repo.findById.mockResolvedValue(user)` | -| **Spy** | A stub that also records how it was called | `jest.spyOn()` - not recommended | -| **Explicit Dependency** | Passed in through constructor or parameters | `constructor(private db: Database)` | -| **Implicit Dependency** | Imported directly at the top of the file | `import { sendEmail } from './utils'` | - -### Takeaways - -- **Test doubles** are fake versions of dependencies that enable control during tests -- **In Suites**: A "mock" is a fake class where all methods are "stubs" -- **Two verification styles**: Check the final result (state) or check method calls (behavior) -- **Automatic mocking**: Suites creates mocks for all dependencies automatically with full type safety -- **Explicit dependencies**: Only dependencies passed through constructors or parameters can be mocked - -## Next Steps - -Learn more about using test doubles in practice: - -- **[Solitary Unit Tests](./solitary)**: Test components in complete isolation using automatic mocking -- **[Sociable Unit Tests](./sociable)**: Test multiple components together with real implementations - -## Additional Resources - -- **[Martin Fowler - Mocks Aren't Stubs](https://martinfowler.com/articles/mocksArentStubs.html)**: Classic article - explaining different testing approaches \ No newline at end of file diff --git a/docs/guides/virtual-test-container.md b/docs/guides/virtual-test-container.md deleted file mode 100644 index 308a911..0000000 --- a/docs/guides/virtual-test-container.md +++ /dev/null @@ -1,210 +0,0 @@ ---- -sidebar_position: 7 -title: Virtual Test Container Concept -description: How Suites creates lightweight test environments following inversion of control and dependency injection ---- - -# Virtual Test Container - -> **What this covers:** How Suites creates lightweight test environments without full framework initialization \ -> **Time to read:** ~10 minutes \ -> **Prerequisites:** [Unit Testing Fundamentals](/docs/guides/fundamentals) \ -> **Best for:** Understanding how Suites achieves speed and type safety under the hood - -The Virtual Test Container is the engine that drives Suites' testing capabilities. It analyzes classes to understand -their dependencies, then builds minimal test environments tailored specifically for the class under test. This approach eliminates two time-consuming tasks: waiting for a full framework to initialize and manually setting up mocks for every test. - -## Overview - -This guide covers: -1. What the Virtual Test Container is and its purpose -2. The problems it addresses in IoC testing -3. How it works with automatic mock generation -4. Token injections as boundaries between logic and I/O -5. Performance and type safety characteristics -6. Framework support across dependency injection systems - -## Concept - -Traditional testing for a single class requires either starting up the entire application (slow and brittle) or manually creating mocks for every dependency (tedious and error-prone). - -The virtual test container takes a different approach. It inspects the tested class at test time to discover what -dependencies it needs. Based on this analysis, it generates only the necessary mocks and wires them together. TestBed creates an isolated test environment without the overhead of full application initialization or the maintenance burden of manual mock setup. - -## The Problem It Addresses - -Before diving into how the Virtual Test Container works, let's understand why it exists. Traditional IoC (Inversion of Control) testing typically relies on two approaches, and both have significant drawbacks. - -**Full container initialization:** -- Initializes entire module/application -- Tests break when unrelated dependencies change -- Requires extensive mocking configuration - -The problem here is coupling. When spinning up the full container, the test becomes dependent on the entire application state. If a colleague adds a new database connection three layers deep in an unrelated module, the test might suddenly fail or become slower. - -**Manual mocking:** -- Requires substantial boilerplate code -- Lacks type safety (requires `as any` / `as unknown as` casts) -- Every constructor change requires updating multiple tests - -Manual mocking means writing code like `const mockUserApi = { getUser: jest.fn() } as unknown as UserApi`. This loses TypeScript's type safety. Worse, when adding a parameter to the class constructor, every test file that instantiates it needs updates. - -The Virtual Test Container solves both problems by automating the discovery and mock generation process while maintaining full type safety. - -## How It Works - -Let's walk through a concrete example to see the Virtual Test Container in action. - -Here's a service class with two dependencies: - -```typescript title='user.service.ts' -@Injectable() -class UserService { - constructor( - private readonly userApi: UserApi, - private readonly database: Database - ) {} - - async generateRandomUser(): Promise { - const user = await this.userApi.getRandomUser(); - return this.database.saveUser(user); - } -} -``` - -When writing a test for this service, Suites analyzes the class structure: - -```typescript title='user.service.spec.ts' -import { type Mocked, TestBed } from '@suites/unit'; -import { describe } from 'node:test'; - -let userApi: Mocked; -let database: Mocked; - -describe('User Service Unit Spec', () => { - beforeAll(async () => { - const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - - // Virtual container created: - // - UserService instance (real) - // - Mocked UserApi (automatically generated) - // - Mocked Database (automatically generated) - - userApi = unitRef.get(UserApi); - database = unitRef.get(Database); - }); - - describe('it should save a random user from the api in the database', async () => { - const dummyUser = { id: 1, name: 'John' }; - userApi.getRandomUser.mockResolvedValue(dummyUser); - - await unit.generateRandomUser(); - expect(database.saveUser).toHaveBeenCalledWith(dummyUser); - }); -}) -``` - -Here's what happens behind the scenes when calling `.compile()`: - -**Step-by-step process:** -1. **Read metadata**: The Virtual Test Container examines `UserService`'s constructor -2. **Identify dependencies**: It discovers that `UserService` depends on `UserApi` and `Database` -3. **Generate mocks**: It creates fully-typed mock implementations of both dependencies -4. **Wire everything together**: It creates an instance of `UserService` and injects the mocks -5. **Provide access**: It returns typed references to both the service (`unit`) and its mocks (`unitRef`) - -All of this happens automatically. The Virtual Test Container handles the entire setup based on the class structure, without manual mock creation or wiring. - -## Token Injections Are Natural Boundaries - -So far, we've looked at class-based dependencies (like `UserApi` and `Database`). But many applications also use -token-based injection for external resources. Understanding how the Virtual Test Container handles these tokens is -important. - -Token-injected dependencies are always mocked, regardless of whether the tests run in solitary or sociable mode. This design choice exists for an important reason: tokens typically represent the boundary between application logic and external systems. - -Let's look at an example: - -```typescript -@Injectable() -class PaymentService { - constructor( - private validator: PaymentValidator, // Class - mocking depends on test mode - @Inject('STRIPE_API') private stripe: StripeApi, // Token - always mocked - @Inject('APP_CONFIG') private config: AppConfig // Token - always mocked - ) {} -} -``` - -Notice the difference. The `validator` dependency is a regular class injection. In solitary mode, Suites mocks it. In sociable mode, it runs as a real instance. But the token-injected dependencies (`STRIPE_API` and `APP_CONFIG`) are always mocked, regardless of test mode. - -### Understanding Different Token Types - -Tokens come in different flavors, and each requires slightly different handling. - -**Class-based tokens** work automatically. Suites analyzes the class structure and generates mocks with stub methods: - -```typescript -@Inject('STRIPE_API') private stripe: StripeApi -// Suites automatically creates a mock with all StripeApi methods as stubs -// Configure behavior: stripe.createCharge.mockResolvedValue(...) -``` - -**Interface/Type/Primitive tokens** need explicit values because TypeScript interfaces and types don't exist at runtime. Suites can't automatically generate a mock from something that disappears after compilation. - -Provide values for these tokens using `.final()`: - -```typescript title='database-config.interface.ts' -export interface DatabaseConfig { - readonly uri: string; -} -``` - -```typescript -public contructor(@Inject('DB_CONFIG') private config: DatabaseConfig) {} - -// In test - provide value using .final(): -await TestBed.solitary(UserService) - .mock('DB_CONFIG') - .final({ uri: 'mongodb://localhost' }) - .compile(); -``` - -The `.final()` method tells Suites exactly what value to inject for that token, providing complete control over the test environment. - -### Why This Matters: The Boundary Pattern - -Token injection creates a natural separation in the architecture. This pattern keeps tests fast and predictable without additional configuration. - -Tokens typically represent external boundaries - the points where the application interacts with the outside world: -- **Databases**: Data persistence systems -- **HTTP clients**: External API communications -- **External APIs**: Third-party service integrations -- **File systems**: File read/write operations -- **Configuration objects**: Environment-specific settings - -By automatically mocking these boundaries, Suites ensures that even sociable tests (which use multiple real classes) remain true unit tests. Tests never accidentally hit real databases or make actual API calls. - -Consider this sociable test example: - -```typescript -// In sociable mode with multiple real classes -await TestBed.sociable(OrderService) - .expose(PriceCalculator) // Real instance - .expose(TaxCalculator) // Real instance - .compile(); - -// Token-injected @Inject('DATABASE') remains mocked -// Test executes business logic without accessing real external systems -``` - -In this test, `OrderService`, `PriceCalculator`, and `TaxCalculator` are all real instances. They interact with each other naturally. But any token-injected database connection stays mocked. Business logic runs authentically while keeping tests fast and isolated from external systems. - -This separation happens automatically. The Virtual Test Container uses token injection as a signal that something is an I/O boundary. - -## Next Steps - -Explore how to use the Virtual Test Container in different testing scenarios: - -- **[Solitary Unit Tests](/docs/guides/solitary)**: Use the virtual container for complete isolation with automatic mocking -- **[Sociable Unit Tests](/docs/guides/sociable)**: Use `.expose()` for controlled collaboration diff --git a/docs/migration-guides/from-automock.md b/docs/migration-guides/from-automock.md deleted file mode 100644 index f1de56e..0000000 --- a/docs/migration-guides/from-automock.md +++ /dev/null @@ -1,255 +0,0 @@ ---- -sidebar_position: 5 -title: "Migrating from Automock to Suites" -description: How to migrate from @automock/jest and @automock/sinon to Suites. Covers package renames, the TestBed API change, and the new solitary and sociable test types. -keywords: [ automock, migrate from automock, automock to suites, "@automock/jest", "@automock/sinon", testbedbuilder, suites migration ] ---- - -# Migrating from Automock to Suites - -:::danger Automock Deprecation Notice -**Automock will be fully deprecated on June 30, 2026.** Until then, it receives critical fixes only. All new features -and improvements are released exclusively under Suites 3.x. Please migrate before the deprecation date. -::: - -## Introduction - -Suites succeeds Automock as the actively developed testing framework. Automock stopped at version `2.1.0` and receives -critical fixes only until **June 30, 2026**, after which it will no longer be maintained. All new development continues -in Suites, starting from version `3.0.0`. - -This guide covers the migration process from Automock to Suites, including dependency updates, API changes, and new -features. - -For detailed setup instructions, see the [Installation Guide](/docs/get-started/installation). - -## The Shift from Automock - -Version `3.0.0` of Suites was the first release after Automock's `v2.1.2` completion, with subsequent improvements in -`3.0.1` and beyond. Each new version comes with more features -and better support. Automock will continue to receive critical fixes for `v2.1.x`, but all new development will focus on -Suites. - -## Migration Guide - -:::tip Recommended: run the codemod -The [`@suites/codemod`](https://github.com/suites-dev/codemod) package automates almost everything in this guide: it -rewrites imports, converts `TestBed.create()` to `await TestBed.solitary().compile()`, picks between `.impl()` and -`.final()` for each mock, switches `jest.Mocked` to `Mocked`, and adds `async`/`await` to test hooks where needed. - -```bash -# Preview the changes first (no files written) -npx @suites/codemod automock/2/to-suites-v3 'src/**/*.spec.ts' --dry - -# Apply -npx @suites/codemod automock/2/to-suites-v3 'src/**/*.spec.ts' -``` - -After running, you still need to [update your dependencies](#step-1-update-dependencies) (the codemod only rewrites -code, not `package.json`). The remaining steps below describe what the codemod does, in case you want to migrate -manually or understand a specific transformation. -::: - -### Step 1: Update Dependencies - -Replace Automock dependencies with Suites equivalents. - -See [Installation Guide](/docs/get-started/installation) for detailed adapter information: - -```bash -# Remove Automock packages -npm uninstall @automock/jest @automock/sinon - -# Install Suites core -npm install --save-dev @suites/unit - -# Then install adapters for your stack: - -# NestJS + Jest -npm install --save-dev @suites/doubles.jest @suites/di.nestjs - -# NestJS + Vitest -npm install --save-dev @suites/doubles.vitest @suites/di.nestjs - -# NestJS + Sinon -npm install --save-dev @suites/doubles.sinon @suites/di.nestjs - -# InversifyJS + Sinon -npm install --save-dev @suites/doubles.sinon @suites/di.inversify -``` - -Suites splits the doubles library and the DI integration into separate packages, so install one `@suites/doubles.*` and -one `@suites/di.*` matching your stack. - -### Step 2: Update Imports - -Change all imports from Automock packages to the unified Suites import: - -```typescript -// Before -import { TestBed } from '@automock/jest'; -// OR -import { TestBed } from '@automock/sinon'; - -// After -import { TestBed, type Mocked } from '@suites/unit'; -``` - -### Step 3: Update TestBed API Calls - -Update TestBed API calls to match the new syntax. The `beforeAll` or `beforeEach` callback must be `async`: - -```typescript -// Before -beforeAll(() => { - const {unit} = TestBed.create(Service).compile(); -}); -``` - -```typescript -// After -beforeAll(async () => { - const {unit} = await TestBed.solitary(Service).compile(); -}); -``` - -### Step 4: Update Mock Implementation - -Update any mock implementation code to use the new syntax: - -```typescript -// Before -TestBed.create(UserService) -.mock(UserRepository) -.using({ - getUserById: () => Promise.resolve({id: 1, name: 'John'}), -}) -.compile(); - -// After -await TestBed.solitary(UserService) -.mock(UserRepository) -.final({ - getUserById: () => Promise.resolve({id: 1, name: 'John'}), -}) -.compile(); - -// OR using .impl() for more flexibility -await TestBed.solitary(UserService) -.mock(UserRepository) -.impl((stubFn) => ({ - getUserById: stubFn().mockResolvedValue({id: 1, name: 'John'}), -})) -.compile(); -``` - -## Major Changes from Automock to Suites - -### Versioning - -- Automock stopped at version `2.1.2`, and will receive critical bug fixes only. -- Suites started at version `3.0.0` and is currently at `3.0.1+`, continuing active development. - -### Breaking Changes - -**`TestBed.compile()` is now async**: Due to dynamic importing, you must use `async`/`await` with `compile()`: - -```typescript -// Before -const {unit} = TestBed.create(Service).compile(); -``` - -```typescript -// After -const {unit} = await TestBed.solitary(Service).compile(); -``` - -**`TestBed.create()` is now `TestBed.solitary()`**: This change supports the distinction between solitary and sociable -testing approaches. See [Solitary API](/docs/api-reference/testbed-solitary). - -* **New `.sociable()` method**: Added to the TestBed API for testing with real implementations of select dependencies. - See [Sociable API](/docs/api-reference/testbed-sociable). - -* **Unified TestBed import**: TestBed is now exported from `@suites/unit` regardless of the installed adapters. - Instead of importing from `@automock/jest` or `@automock/sinon`, now import from `@suites/unit`. - -* **Mocked type**: The new `Mocked` type from `@suites/unit` provides deep partial mock capabilities, - allowing for deep mocks of properties within the class. - -**API Changes in TestBed**: - -- `.mock.using` is now `.mock.impl` and `.mock.final`. -- `.mock.impl` provides runtime stubs within the callback, eliminating the need for library-specific mock functions - like `jest.fn()` or `sinon.stub()`. -- `.mock.final` is similar but without stubs and cannot be retrieved from the unit reference. - -See [Mock Configuration API](/docs/api-reference/mock-configuration) for complete details. - -### New Features - -- **Support for Vitest and ESM**: Suites now supports Vitest and ECMAScript Modules (ESM). -- **Sociable Unit Testing**: Test with real implementations of selected dependencies. - See [Sociable Unit Tests](/docs/guides/sociable). -- **Enhanced Type Safety**: Improved TypeScript support with the `Mocked` type. - See [Types API](/docs/api-reference/types). - -## Troubleshooting Common Migration Issues - -### Async/Await Errors - -Errors like `TypeError: Cannot read properties of undefined (reading 'get')` indicate missing `await` with -`TestBed.solitary().compile()`. - -### Type Errors with Mocked - -Type errors with mocked dependencies require using the new `Mocked` type from `@suites/unit`. - -See [Types API Reference](/docs/api-reference/types) for details: - -```typescript -// Before -import { UserRepository } from './user.repository'; - -let userRepo: jest.Mocked; -``` - -```typescript -// After -import { Mocked } from '@suites/unit'; -import { UserRepository } from './user.repository'; - -let userRepo: Mocked; -``` - -### Missing Dependencies - -Errors about missing dependencies indicate that adapter packages need installation. - -See [Installation Guide](/docs/get-started/installation#supported-libraries-adapters) for the complete list of adapters. - -## Looking for old Automock internals? - -If you were depending on Automock internals rather than the public `TestBed` API, some symbols and file paths have moved -or been renamed in Suites. The most common ones people search for: - -| Automock | Suites | -|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| -| `@automock/jest` | `@suites/unit` plus `@suites/doubles.jest` | -| `@automock/sinon` | `@suites/unit` plus `@suites/doubles.sinon` | -| `@automock/core` | `@suites/core` (internal; consume the public API via `@suites/unit`) | -| `TestBed.create(Service)` | `TestBed.solitary(Service)` (now `async`) | -| `.mock(X).using({...})` | `.mock(X).final({...})` or `.mock(X).impl((stub) => ({...}))` | -| `packages/core/src/services/testbed-builder.ts` | Restructured under `@suites/core` and the DI adapters | -| `TestbedBuilder` (internal class) | Split into solitary and sociable builders, kept internal | -| `ClassCtorReflector`, `class-props-reflector` | Reflection utilities now live inside `@suites/di.nestjs` and `@suites/di.inversify` and are not part of the public API | - -Recommended path: depend only on the public surface (`TestBed` from `@suites/unit` and the `Mocked` type). If you -have a use case that requires internals, please [open an issue](https://github.com/suites-dev/suites/issues) so we can -either expose what you need or suggest an alternative. - -## Historical Releases and NPM Packages - -The release history and NPM packages under the `@automock` scope will be preserved for historical reference. However, -all new features and improvements will be released under the `@suites` scope. - -For more information, see the [Suites release notes](https://github.com/suites-dev/suites/releases). diff --git a/docs/migration-guides/index.md b/docs/migration-guides/index.md deleted file mode 100644 index 35f0a6a..0000000 --- a/docs/migration-guides/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 5 -title: Migration Guides -description: Guides for migrating to Suites or upgrading versions ---- - -# Migration Guides - -Guides for migrating to Suites from other testing frameworks or upgrading between Suites versions. - -## Available Guides - -### [From Automock](/docs/migration-guides/from-automock) -Migrate from Automock to Suites with step-by-step instructions and API mapping. - -## Future Guides - -- **v3 to v4 Migration** - Coming soon -- **From Manual Mocking** - Coming soon diff --git a/docusaurus.config.ts b/docusaurus.config.ts deleted file mode 100644 index fc1e736..0000000 --- a/docusaurus.config.ts +++ /dev/null @@ -1,154 +0,0 @@ -import algoliaConfig from "./config/algolia-config"; -import type { Config } from "@docusaurus/types"; -import { draculaThemeConfig } from "./config/prisma-theme.config"; - -const config: Config = { - title: "Suites Documentation", - tagline: "A unit testing framework for TypeScript backends working with inversion of control and dependency injection", - organizationName: "suites-dev", - url: "https://suites.dev", - baseUrl: "/", - onBrokenLinks: "throw", - onBrokenMarkdownLinks: "throw", - favicon: "img/favicon.png", - projectName: "suites", - markdown: { - mermaid: true, - }, - themes: ['@docusaurus/theme-mermaid'], - headTags: [ - { - tagName: "link", - attributes: { - rel: "preconnect", - href: "https://fonts.googleapis.com", - }, - }, - ], - i18n: { - defaultLocale: "en", - locales: ["en"], - }, - presets: [ - [ - "@docusaurus/preset-classic", - { - docs: { - path: "docs", - routeBasePath: "docs", - sidebarPath: require.resolve("./config/docs-sidebars.js"), - editUrl: "https://github.com/suites-dev/docs.suites.dev/edit/master/", - remarkPlugins: [ - [require("@docusaurus/remark-plugin-npm2yarn"), { sync: true }], - ], - }, - theme: { - customCss: require.resolve("./src/css/custom.css"), - }, - blog: false, - gtag: { - trackingID: "G-G7FJBNFPJJ", - anonymizeIP: true, - }, - }, - ], - ], - plugins: [ - [ - "@docusaurus/plugin-client-redirects", - require("./config/redirects.config.js"), - ], - ], - themeConfig: { - metadata: [ - { - name: "keywords", - content: - "auto mocking, unit testing framework, jest, sinon, vitest, dependency injection, inversion of control, nestjs, inversifyjs, unit testing, test doubles, typescript testing, mock generation, test automation, solitary testing, sociable testing", - }, - { name: "author", content: "Suites" }, - { name: "robots", content: "index, follow" }, - { name: "googlebot", content: "index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" }, - { - name: "description", - content: "A unit testing framework for TypeScript backends working with inversion of control and dependency injection", - }, - { property: "og:title", content: "Suites - A Modern Unit Testing Framework" }, - { - property: "og:description", - content: "A unit testing framework for TypeScript backends working with inversion of control and dependency injection", - }, - { - property: "og:image", - content: "https://suites.dev/img/banner.png", - }, - { property: "og:image:width", content: "1200" }, - { property: "og:image:height", content: "630" }, - { property: "og:image:alt", content: "Suites - A Modern Unit Testing Framework" }, - { property: "og:url", content: "https://suites.dev" }, - { property: "og:type", content: "website" }, - { property: "og:site_name", content: "Suites" }, - { property: "og:locale", content: "en_US" }, - // Twitter Card - { name: "twitter:card", content: "summary_large_image" }, - { name: "twitter:title", content: "Suites - A Modern Unit Testing Framework" }, - { - name: "twitter:description", - content: "A unit testing framework for TypeScript backends working with inversion of control and dependency injection", - }, - { name: "twitter:image", content: "https://suites.dev/img/banner.png" }, - { name: "twitter:image:alt", content: "A unit testing framework for TypeScript backends working with inversion of control and dependency injection" }, - // Additional SEO - { name: "theme-color", content: "#1a1a1a" }, - { name: "application-name", content: "Suites" }, - ], - colorMode: { - disableSwitch: true, - defaultMode: "dark", - }, - algolia: algoliaConfig, - navbar: { - title: "Suites", - logo: { - alt: "Suites Logo", - src: "img/logo.png", - }, - items: [ - { - to: "/docs/get-started/", - position: "left", - label: "Get Started", - }, - { - to: "/docs/guides/", - position: "left", - label: "Guides", - }, - { - href: "https://github.com/suites-dev/examples", - position: "left", - label: "Examples", - }, - { - to: "/docs/api-reference/", - position: "left", - label: "API Reference", - }, - { - href: "https://buymeacoffee.com/omermoradd", - position: "right", - label: "Sponsor", - className: "header-sponsor-link", - }, - { - href: "https://github.com/suites-dev/suites", - position: "right", - className: "header-github-link", - }, - ], - }, - prism: draculaThemeConfig, - }, -}; - -export default config; diff --git a/netlify.toml b/netlify.toml deleted file mode 100644 index 2bd9515..0000000 --- a/netlify.toml +++ /dev/null @@ -1,274 +0,0 @@ -# =========================================== -# BUILD -# =========================================== -# Triggers an Algolia DocSearch crawler reindex after every successful -# production build. The script is a no-op for deploy previews and branch -# deploys, and a no-op (with a warning) if crawler env vars are missing, -# so it cannot break the build. -# -# Required env vars in Netlify → Site settings → Environment variables: -# ALGOLIA_CRAWLER_USER_ID -# ALGOLIA_CRAWLER_API_KEY -# ALGOLIA_CRAWLER_ID - -[build] -command = "yarn run build && yarn algolia:reindex" -publish = "build" - -# =========================================== -# CRITICAL REDIRECTS (High Traffic Pages) -# =========================================== - -[[redirects]] -from = "/docs/overview/quickstart" -to = "/docs/get-started/quickstart" -status = 301 - -[[redirects]] -from = "/docs/learn/get-started/quickstart" -to = "/docs/get-started/quickstart" -status = 301 - -[[redirects]] -from = "/docs/overview/installation" -to = "/docs/get-started/installation" -status = 301 - -[[redirects]] -from = "/docs/learn/get-started/installation" -to = "/docs/get-started/installation" -status = 301 - -[[redirects]] -from = "/docs/learn/unit-tests/suites-api" -to = "/docs/api-reference/" -status = 301 - -[[redirects]] -from = "/docs/api-reference/testbed-api" -to = "/docs/api-reference/" -status = 301 - -[[redirects]] -from = "/docs/learn/unit-tests/solitary" -to = "/docs/guides/solitary" -status = 301 - -[[redirects]] -from = "/docs/learn/unit-tests/sociable" -to = "/docs/guides/sociable" -status = 301 - -[[redirects]] -from = "/docs/learn/unit-tests/test-doubles" -to = "/docs/guides/test-doubles" -status = 301 - -[[redirects]] -from = "/docs/learn/unit-tests/fundamentals" -to = "/docs/guides/fundamentals" -status = 301 - -# =========================================== -# MIGRATION GUIDES -# =========================================== - -[[redirects]] -from = "/docs/migrating-from-automock" -to = "/docs/migration-guides/from-automock" -status = 301 - -[[redirects]] -from = "/docs/resources/migrating-from-automock" -to = "/docs/migration-guides/from-automock" -status = 301 - -[[redirects]] -from = "/docs/overview/migrating-from-automock" -to = "/docs/migration-guides/from-automock" -status = 301 - -[[redirects]] -from = "/docs/getting-started/change-log" -to = "/docs/migration-guides/from-automock" -status = 301 - -# =========================================== -# OVERVIEW SECTION -# =========================================== - -[[redirects]] -from = "/docs/overview" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/overview/" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/overview/what-is-suites" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/overview/problems-solved" -to = "/docs/get-started/why-suites" -status = 301 - -[[redirects]] -from = "/docs/resources/problems-solved" -to = "/docs/get-started/why-suites" -status = 301 - -[[redirects]] -from = "/docs/overview/comparisons" -to = "/docs/get-started/why-suites" -status = 301 - -[[redirects]] -from = "/docs/overview/motivation" -to = "/docs/get-started/why-suites" -status = 301 - -[[redirects]] -from = "/docs/overview/depdency-injection-and-automock" -to = "/docs/get-started/why-suites" -status = 301 - -[[redirects]] -from = "/docs/overview/dependency-injection-and-automock" -to = "/docs/get-started/why-suites" -status = 301 - -# =========================================== -# DEVELOPER GUIDE (wildcard catches all old paths + trailing slashes) -# =========================================== - -[[redirects]] -from = "/docs/developer-guide/unit-tests/suites-api*" -to = "/docs/api-reference/" -status = 301 - -[[redirects]] -from = "/docs/developer-guide/unit-tests/solitary*" -to = "/docs/guides/solitary" -status = 301 - -[[redirects]] -from = "/docs/developer-guide/unit-tests/sociable*" -to = "/docs/guides/sociable" -status = 301 - -[[redirects]] -from = "/docs/developer-guide/unit-tests/test-doubles*" -to = "/docs/guides/test-doubles" -status = 301 - -[[redirects]] -from = "/docs/developer-guide/unit-tests/fundamentals*" -to = "/docs/guides/fundamentals" -status = 301 - -[[redirects]] -from = "/docs/developer-guide/*" -to = "/docs/guides/" -status = 301 - -# =========================================== -# FAVICON / APPLE TOUCH ICONS -# =========================================== - -[[redirects]] -from = "/favicon.ico" -to = "/img/favicon.png" -status = 200 - -[[redirects]] -from = "/apple-touch-icon.png" -to = "/img/favicon.png" -status = 200 - -[[redirects]] -from = "/apple-touch-icon-precomposed.png" -to = "/img/favicon.png" -status = 200 - -# =========================================== -# OLD CATEGORY PAGES -# =========================================== - -[[redirects]] -from = "/docs/category/getting-started*" -to = "/docs/get-started/" -status = 301 - -# =========================================== -# OTHER OLD PATHS -# =========================================== - -[[redirects]] -from = "/api-reference" -to = "/docs/api-reference/" -status = 301 - -[[redirects]] -from = "/docs" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/introduction/quick-example" -to = "/docs/get-started/quickstart" -status = 301 - -[[redirects]] -from = "/docs/core-concepts/dependency-injection" -to = "/docs/get-started/why-suites" -status = 301 - -[[redirects]] -from = "/docs/api-reference/fail-fast" -to = "/docs/api-reference/" -status = 301 - -[[redirects]] -from = "/docs/extras/identical-injections" -to = "/docs/guides/" -status = 301 - -[[redirects]] -from = "/docs/extras/identical-injections/" -to = "/docs/guides/" -status = 301 - -[[redirects]] -from = "/docs/category/extras" -to = "/docs/guides/" -status = 301 - -[[redirects]] -from = "/docs/category/di-framework-adapters" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/category/di-framework-adapters/" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/adapters/*" -to = "/docs/get-started/" -status = 301 - -[[redirects]] -from = "/docs/guides/adapters/inversifyjs" -to = "/docs/get-started/" -status = 301 \ No newline at end of file diff --git a/package.json b/package.json index f527ce4..e20a114 100644 --- a/package.json +++ b/package.json @@ -1,60 +1,42 @@ { - "name": "suites.dev", + "name": "@suites/web", + "type": "module", "version": "0.0.0", "private": true, + "packageManager": "pnpm@9.15.0", "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "build": "docusaurus build", - "algolia:reindex": "node scripts/algolia-reindex.mjs", - "algolia:sync-config": "node scripts/sync-algolia-config.mjs", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc" + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "postbuild": "node scripts/algolia-reindex.mjs", + "preview": "astro preview", + "astro": "astro", + "check": "astro check", + "typecheck": "astro check" }, "dependencies": { - "@algolia/client-search": "^4.24.0", - "@docusaurus/core": "^3.4.0", - "@docusaurus/plugin-client-redirects": "^3.4.0", - "@docusaurus/plugin-google-gtag": "^3.4.0", - "@docusaurus/plugin-sitemap": "^3.4.0", - "@docusaurus/preset-classic": "^3.4.0", - "@docusaurus/remark-plugin-npm2yarn": "^3.1.1", - "@docusaurus/theme-mermaid": "^3.4.0", - "@docusaurus/theme-search-algolia": "^3.4.0", - "@fortawesome/fontawesome-svg-core": "^6.5.2", - "@fortawesome/free-solid-svg-icons": "^6.5.2", - "@fortawesome/react-fontawesome": "^0.2.2", - "@mdx-js/react": "^3.0.0", - "clsx": "^2.1.0", - "prism-react-renderer": "^2.3.1", - "react": "^18.2.0", - "react-code-blocks": "^0.1.6", - "react-dom": "^18.2.0", - "react-icons": "^5.0.1", - "search-insights": "^2.15.0" + "@astrojs/check": "^0.9.4", + "@astrojs/mdx": "^4.0.0", + "@astrojs/react": "^4.0.0", + "@astrojs/sitemap": "^3.2.0", + "@astrojs/vercel": "^8.0.0", + "@docsearch/css": "^3.8.0", + "@docsearch/react": "^3.8.0", + "astro": "^5.0.0", + "astro-expressive-code": "^0.40.0", + "mermaid": "^11.4.0", + "react": "^18.3.0", + "react-dom": "^18.3.0", + "react-icons": "^5.4.0", + "remark-gfm": "^4.0.0", + "typescript": "^5.6.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^3.1.1", - "@docusaurus/tsconfig": "^3.1.1", - "@types/react": "16", - "typescript": "^5.2.2" + "@types/react": "^18.3.0", + "@types/react-dom": "^18.3.0" }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "packageManager": "yarn@1.22.1+sha512.84bec57763ecbf87ce884fc98d550b0e0f8b7241b4425ec83d4879c160bfe1412be96f9e17e5551167d1bba43ba9b3a7aa4efea98ec25d84922c17c92321255c" + "engines": { + "node": ">=20", + "pnpm": ">=9" + } } diff --git a/src/components/AskAI/index.tsx b/src/components/AskAI/index.tsx deleted file mode 100644 index b9a45ce..0000000 --- a/src/components/AskAI/index.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { useLocation } from '@docusaurus/router'; -import { FaRobot, FaComments } from 'react-icons/fa'; -import { SiOpenai } from 'react-icons/si'; -import { trackButtonClick } from '@site/src/utils/analytics'; -import styles from './styles.module.css'; - -interface AskAIButtonProps { - className?: string; - position?: 'navbar' | 'doc' | 'floating'; - provider?: 'chatgpt' | 'claude' | 'both'; -} - -export default function AskAIButton({ - className = '', - position = 'floating', - provider = 'both' -}: AskAIButtonProps) { - const location = useLocation(); - const [pageTitle, setPageTitle] = useState(''); - const [showOptions, setShowOptions] = useState(false); - - useEffect(() => { - // Extract page content and metadata - const extractPageInfo = () => { - // Get the page title from document or h1 - const h1Element = document.querySelector('article h1'); - const docTitle = h1Element?.textContent || document.title.replace(' | Suites', ''); - setPageTitle(docTitle); - }; - - // Wait for content to load - setTimeout(extractPageInfo, 100); - }, [location.pathname]); - - const buildPrompt = () => { - const currentUrl = window.location.href; - - // Build a concise, effective prompt - return `I'm reading the Suites testing framework documentation, this is the page title "${pageTitle}", and the url is ${currentUrl} - read the page and answer the following questions:`; - }; - - const handleAskChatGPT = () => { - trackButtonClick('Ask AI - ChatGPT', position); - const prompt = buildPrompt(); - // ChatGPT supports the q parameter with optional model selection - const chatGPTUrl = `https://chat.openai.com/?model=gpt-4o&q=${encodeURIComponent(prompt)}`; - window.open(chatGPTUrl, '_blank'); - setShowOptions(false); - }; - - const handleAskClaude = () => { - trackButtonClick('Ask AI - Claude', position); - const prompt = buildPrompt(); - // Claude uses the q parameter on the /new endpoint - const claudeUrl = `https://claude.ai/new?q=${encodeURIComponent(prompt)}`; - window.open(claudeUrl, '_blank'); - setShowOptions(false); - }; - - const handleClick = () => { - if (provider === 'chatgpt') { - handleAskChatGPT(); - } else if (provider === 'claude') { - handleAskClaude(); - } else { - setShowOptions(!showOptions); - } - }; - - const buttonContent = ( - <> - - Ask AI - - ); - - if (position === 'floating') { - return ( -
- - - {provider === 'both' && showOptions && ( -
- - -
- )} -
- ); - } - - return ( -
- - - {provider === 'both' && showOptions && ( -
- - -
- )} -
- ); -} \ No newline at end of file diff --git a/src/components/AskAI/styles.module.css b/src/components/AskAI/styles.module.css deleted file mode 100644 index 103ff38..0000000 --- a/src/components/AskAI/styles.module.css +++ /dev/null @@ -1,207 +0,0 @@ -.askAIButton { - display: inline-flex; - align-items: center; - gap: 8px; - padding: 8px 16px; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - color: white; - border: none; - border-radius: 8px; - cursor: pointer; - font-size: 14px; - font-weight: 500; - transition: all 0.3s ease; - box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3); -} - -.askAIButton:hover { - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(102, 126, 234, 0.5); - background: linear-gradient(135deg, #764ba2 0%, #667eea 100%); -} - -.askAIButton:active { - transform: translateY(0); -} - -.askAIButton.navbar { - margin-left: 12px; - padding: 6px 12px; - font-size: 13px; -} - -.askAIButton.doc { - margin-top: 16px; - margin-bottom: 16px; -} - -.askAIButtonFloating { - position: relative; - display: flex; - align-items: center; - gap: 8px; - padding: 12px 20px; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - color: white; - border: none; - border-radius: 24px; - cursor: pointer; - font-size: 14px; - font-weight: 500; - transition: all 0.3s ease; - box-shadow: 0 4px 16px rgba(102, 126, 234, 0.4); -} - -.askAIButtonFloating:hover { - transform: translateY(-3px); - box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6); - background: linear-gradient(135deg, #764ba2 0%, #667eea 100%); -} - -.icon { - font-size: 18px; -} - -.text { - font-weight: 500; -} - -/* Dark mode adjustments */ -[data-theme='dark'] .askAIButton, -[data-theme='dark'] .askAIButtonFloating { - background: linear-gradient(135deg, #ef4779 0%, #f06292 100%); - box-shadow: 0 2px 8px rgba(239, 71, 121, 0.3); -} - -[data-theme='dark'] .askAIButton:hover, -[data-theme='dark'] .askAIButtonFloating:hover { - background: linear-gradient(135deg, #f06292 0%, #ef4779 100%); - box-shadow: 0 4px 12px rgba(239, 71, 121, 0.5); -} - -/* Container for button and options */ -.askAIContainer { - position: relative; - display: inline-block; -} - -/* When container is fixed positioned (for floating button) */ -.askAIContainer:has(.askAIButtonFloating) { - position: fixed; - bottom: 24px; - right: 24px; - z-index: 1000; -} - -/* Options menu for floating button */ -.optionsMenu { - position: absolute; - bottom: calc(100% + 16px); - right: 0; - display: flex; - flex-direction: column; - gap: 8px; - padding: 8px; - background: var(--ifm-background-surface-color); - border-radius: 12px; - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); - min-width: 140px; - animation: slideUp 0.2s ease; - z-index: 1001; -} - -/* Options menu for inline button */ -.optionsMenuInline { - position: absolute; - top: calc(100% + 8px); - right: 0; - display: flex; - flex-direction: column; - gap: 8px; - padding: 8px; - background: var(--ifm-background-surface-color); - border-radius: 12px; - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); - min-width: 140px; - animation: slideDown 0.2s ease; - z-index: 10; -} - -.optionButton { - display: flex; - align-items: center; - gap: 8px; - padding: 8px 12px; - background: transparent; - color: var(--ifm-font-color-base); - border: 1px solid var(--ifm-border-color); - border-radius: 8px; - cursor: pointer; - font-size: 14px; - transition: all 0.2s ease; - white-space: nowrap; -} - -.optionButton:hover { - background: var(--ifm-color-primary-lightest); - border-color: var(--ifm-color-primary); - transform: translateX(2px); -} - -.optionIcon { - font-size: 16px; -} - -/* Animations */ -@keyframes slideUp { - from { - opacity: 0; - transform: translateY(10px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes slideDown { - from { - opacity: 0; - transform: translateY(-10px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -/* Mobile responsive */ -@media (max-width: 768px) { - .askAIButtonFloating { - bottom: 16px; - right: 16px; - padding: 10px 16px; - font-size: 13px; - } - - .askAIButtonFloating .text { - display: none; - } - - .askAIButtonFloating { - width: 48px; - height: 48px; - padding: 0; - border-radius: 50%; - justify-content: center; - } - - .askAIButtonFloating .icon { - margin: 0; - } - - .optionsMenu { - bottom: calc(100% + 4px); - right: -20px; - } -} \ No newline at end of file diff --git a/src/components/ClientOnly/index.tsx b/src/components/ClientOnly/index.tsx deleted file mode 100644 index 4efecd5..0000000 --- a/src/components/ClientOnly/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React, { useEffect, useState } from 'react'; - -interface ClientOnlyProps { - children: React.ReactNode; - fallback?: React.ReactNode; -} - -export default function ClientOnly({ children, fallback = null }: ClientOnlyProps) { - const [hasMounted, setHasMounted] = useState(false); - - useEffect(() => { - setHasMounted(true); - }, []); - - if (!hasMounted) { - return <>{fallback}; - } - - return <>{children}; -} \ No newline at end of file diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx deleted file mode 100644 index ad5e955..0000000 --- a/src/components/Footer/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from "react"; -import Link from "@docusaurus/Link"; -import { FaGithub } from "react-icons/fa"; -import styles from "./styles.module.css"; - -export default function Footer(): JSX.Element { - return ( -
-
-
- - - -
-

- Released under the MIT License -
- Copyright © 2025 -{" "} - - Omer Morad - -

-
-
- ); -} diff --git a/src/components/Footer/styles.module.css b/src/components/Footer/styles.module.css deleted file mode 100644 index 7ece850..0000000 --- a/src/components/Footer/styles.module.css +++ /dev/null @@ -1,32 +0,0 @@ -/* Footer CSS */ -.pageFooter { - background-color: #242526; - text-align: center; - color: rgba(204, 204, 204, 0.61); - font-family: "Inter", sans-serif; - padding: 20px 0; - font-weight: bold; -} - -.pageFooter .icon { - color: #c2c3c3; - font-size: 24px; - margin: 0 10px; -} - -.pageFooter .icon:hover { - color: #ffffff; -} - -.pageFooter p { - font-size: 14px; - font-weight: 500; - line-height: 26px; - color: rgba(204, 204, 204, 0.61); -} - -.pageFooter p a { - color: var(--ifm-color-primary); - font-weight: 600; -} -/* Footer section CSS */ \ No newline at end of file diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx deleted file mode 100644 index 5008a8e..0000000 --- a/src/components/Header/index.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, {useEffect, useState} from 'react'; -import Link from '@docusaurus/Link'; -import { FaGithub } from "react-icons/fa"; -import { FaXTwitter } from "react-icons/fa6"; -import styles from './styles.module.css'; - -export default function Header(): JSX.Element { - const [scrolled, setScrolled] = useState(false); - - useEffect(() => { - const handleScroll = () => { - const isScrolled = window.scrollY > 50; // Change 50 to your desired scroll threshold - if (isScrolled !== scrolled) { - setScrolled(isScrolled); - } - }; - - window.addEventListener('scroll', handleScroll); - - // Cleanup the event listener on a component unmount - return () => { - window.removeEventListener('scroll', handleScroll); - }; - }, [scrolled]); - return ( - <> -
-
-
-
- - Suites Logo - -
-
    -
  • - Docs -
  • -
  • - - - -
  • -
-
-
-
-
-
-
- - Suites Logo Suites - -
- -
- -
-
-
- Suites Logo -

Suites (formerly Automock)

-

A progressive testing meta-framework

- -
-
-
-
- - ); -} diff --git a/src/components/Header/styles.module.css b/src/components/Header/styles.module.css deleted file mode 100644 index c6c5451..0000000 --- a/src/components/Header/styles.module.css +++ /dev/null @@ -1,313 +0,0 @@ -/* Header CSS */ -.navbarSticky { - position: fixed; - z-index: 100000; - left: 0; - right: 0; - height: 60px; - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.07); - background: var(--ifm-background-color); - padding: 8px 0; - opacity: 0; - transform: translate3d(0, -100%, 0); - -webkit-transform: translate3d(0, -100%, 0); - transition: all 180ms ease-in-out; - -ms-transition: all 180ms ease-in-out; - -webkit-transition: all 180ms ease-in-out; -} - -.navbarSticky.visible { - opacity: 1; - transform: translate3d(0, 0, 0); - -webkit-transform: translate3d(0, 0, 0); -} - -.navbarSticky .navbar { - display: flex; - align-items: center; - justify-content: space-between; -} - -.logoLink { - display: flex; - align-items: center; - color: var(--ifm-background-color); - font-weight: 500; -} - -.logoLink span { - margin-left: 10px; - display: block; -} - -.navbarSticky .logoWrapper img { - width: 40px; - max-height: 40px; -} - -.navbarSticky .navWrapper { - margin: 0; - padding: 0; - max-width: calc(100% - 50px); - text-align: right; - vertical-align: middle; - display: flex; - align-items: center; - list-style-type: none; -} - -.navbar-sticky .navWrapper li { - display: inline-block; - vertical-align: middle; -} - -.navbarSticky .navWrapper a { - color: var(--ifm-color-primary-darkest); - /* color: var(--ifm-color-primary); */ - font-size: 14px; - margin-left: 20px; - font-weight: 700; - transition: all .1s ease-in; - display: flex; - align-items: center; -} - -.navbarSticky .navWrapper a:hover { - color: var(--ifm-color-primary); -} - -.navbarSticky .navWrapper .icon { - margin-left: 12px; - font-size: 16px; -} - -.new { - color: #fff; - background: var(--ifm-color-primary); - font-size: 11px; - line-height: 1.2; - padding: 2px 4px; - border-radius: 2px; - margin-right: 2px; - display: inline-block; -} - -@media (max-width: 1020px) { - .hidden_md { - display: none !important; - } -} - -@media (max-width: 920px) { - .hidden_sm { - display: none !important; - } - - .navbarSticky { - display: none; - } -} - -@media (max-width: 640px) { - .hidden_xs { - display: none !important; - } -} - -.pageHeader { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - /*background-image: url("../../../static/img/header.1af6756a.png");*/ - background-position: center top; - background-size: cover; - background-repeat: no-repeat; - background-color: #23272f; - background-attachment: fixed; - color: #fff; - min-height: 620px; -} - -.subWrapper { - display: flex; - width: 100%; - justify-content: space-between; - padding: 20px 30px; -} - -.topWrapper { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; -} - -.subWrapper img, -.subWrapper svg, -.logoWrapper svg, -.logoWrapper img { - max-width: 36px; -} - -.navWrapper a { - font-weight: bold; - color: #fff; - font-size: 16px; - margin-left: 25px; - transition: all 100ms ease-in; - -moz-transition: all 100ms ease-in; - -webkit-transition: all 100ms ease-in; -} - -.navWrapper a:hover { - color: var(--ifm-color-primary); -} - -.navWrapper li { - display: inline-block; - vertical-align: middle; -} - -.navWrapper .icon { - margin-left: 27px; - font-size: 22px; -} - -.mainWrapper { - width: 100%; - margin-top: 40px; - display: flex; - flex-direction: column; - align-items: center; - text-align: center; -} - -.mainWrapper img.mainLogo { - display: block; - width: 120px; -} - -.mainWrapper h1 { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-weight: 800; - font-size: 2.25rem; /* 36px - Match Next.js h1 */ - line-height: 1.111; - margin-top: 20px; - padding: 10px 0; -} - -.mainWrapper h1 span { - display: block; - font-size: 20px; -} - -.mainWrapper h4 { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-weight: 400; - max-width: 650px; - margin: 0; - font-size: 20px; - line-height: 28px; -} - -.buttonsWrapper { - margin: 40px 0; -} - -.buttonsWrapper .btn:first-child { - margin-right: 20px; -} - -.buttonsWrapper .btn .fa-github { - margin-right: 6px; - font-size: 18px; - vertical-align: middle; -} - -.btn { - font-weight: 700; - font-size: 16px; - color: #fff; - text-align: center; - padding: 12px 24px; - min-width: 120px; - border-radius: 30px; - transition: all 100ms ease-in; - display: inline-block; -} - -.btn img { - margin-right: 5px; -} - -.btn span { - vertical-align: middle; -} - -.btn.documentationBtn { - background: var(--ifm-color-primary); - border: 2px solid var(--ifm-color-primary); - color: #fff; -} - -.btn.documentationBtn:hover { - border: 2px solid var(--ifm-color-primary); - background: transparent; - color: #fff; -} - -.btn.sourceBtn { - border: 2px solid #fff; - color: #fff; -} - -.btn.sourceBtn:hover { - border: 2px solid var(--ifm-color-primary); - color: var(--ifm-color-primary); -} - -.buttonsWrapper .btn svg { - margin-right: 6px; - font-size: 18px; - vertical-align: middle; -} - -@media (max-width: 991px) { - .mainWrapper { - text-align: center; - } - - .main-wrapper h4 { - margin-right: auto; - margin-left: auto; - } - - .buttonsWrapper .btn, - .buttonsWrapper .btn:first-child { - margin: 0 10px; - } -} - -@media (max-width: 920px) { - .pageHeader { - background-position: 35% bottom; - } -} - -@media (max-width: 640px) { - .mainWrapper { - padding-top: 100px; - } - - .buttonsWrapper .btn, - .buttonsWrapper .btn:first-child { - display: block; - max-width: 300px; - margin-left: auto; - margin-right: auto; - } - - .buttonsWrapper .btn:first-child { - margin-bottom: 20px; - } -} - -/* Header CSS */ diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx deleted file mode 100644 index 1d3e5d8..0000000 --- a/src/components/HomepageFeatures/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import React from "react"; -import styles from "./styles.module.css"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { - faAreaChart, - faArrowRight, - faArrowUpWideShort, - IconDefinition, -} from "@fortawesome/free-solid-svg-icons"; - -type FeatureItem = { - title: string; - description: JSX.Element; - icon: IconDefinition; - link: { - ref: string; - text: string; - }; -}; - -const FeatureList: FeatureItem[] = [ - { - title: "Zero-Setup, Automatic Mocking", - description: ( - <> -

- Automatically generate mock objects, eliminate manual setup and reduce - boilerplate code of your unit tests -

- - ), - icon: faAreaChart, - link: { - ref: "/docs/guides/", - text: "Developer Guide", - }, - }, - { - title: "Scale Your Test Suites", - description: ( - <> -

- Suites' flexible architecture supports projects of all sizes, from - small microservices to large monoliths -

- - ), - icon: faArrowUpWideShort, - link: { - ref: "/docs/get-started/", - text: "Getting Started", - }, - }, -]; - -function Feature({ title, description, icon, link }: FeatureItem) { - return ( -
-
- -

{title}

-
-

{description}

- -
- ); -} - -export function HomepageFeatures(): JSX.Element { - return ( -
-
-
- {FeatureList.map((props, idx) => ( -
- {" "} - {/* Ensure class matches your CSS */} - -
- ))} -
-
-
- ); -} - -export function ExploreLink(): JSX.Element { - return ( - - ); -} diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index 242ddb3..0000000 --- a/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,82 +0,0 @@ -.features { - width: 100%; /* Ensure the features section spans the full width */ - max-width: 98%; - margin-top: 20px; - padding: 0; /* Remove padding around the section */ - display: flex; - flex-wrap: wrap; - margin-bottom: 20px; -} - -.feature { - margin: 8px; - font-family: "Inter", sans-serif; - padding: 20px 10px; - min-height: 250px; - background: linear-gradient(18deg, rgba(7, 7, 7, 0.325) 52.75%, var(--ifm-color-primary) 180%); - text-align: left; - display: flex; /* Added for aligning the title and description horizontally */ - flex-direction: column; /* Stack title and description vertically */ - justify-content: space-evenly; - border-radius: 8px; - /* Remove any border that could be causing lines */ - border: none; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); -} - -.feature h2 { - margin: 0; - border: none; - letter-spacing: 0.35px; - font-size: 1.8rem; -} - -.description { - font-size: 1rem; - padding: 20px; - padding-bottom: 10px; -} - -.row { - display: flex; - width: 100%; /* Ensures the row spans the full width */ - margin: 0; /* Eliminate space between rows */ -} - -.features .col { - margin: 0; - padding: 0; -} - -@media (min-width: 768px) { /* Adjust breakpoint as necessary */ - .col--6 { - padding: 0; - } -} - -.buttons { - text-align: right; /* Aligns the button to the right */ -} - -.button { - margin-right: 14px; -} - -.heading { - padding-left: 20px; - display: flex; - align-items: center; -} - -.icon { - background: rgba(239, 71, 121, .3); - padding: 20px; - margin-right: 20px; - border-radius: 5px; - font-size: 1.8rem; - display: block; - /* Remove any border or outline that might be causing lines */ - border: none; - outline: none; - box-shadow: none; -} \ No newline at end of file diff --git a/src/components/NotFoundContent/index.tsx b/src/components/NotFoundContent/index.tsx deleted file mode 100644 index 9c8dc1e..0000000 --- a/src/components/NotFoundContent/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from "react"; -import Link from "@docusaurus/Link"; -import styles from "./styles.module.css"; - -const SUGGESTIONS: Array<{ label: string; description: string; to: string }> = [ - { - label: "Get Started", - description: "Install Suites and write your first test.", - to: "/docs/get-started/", - }, - { - label: "Quickstart", - description: "A minimal end-to-end example.", - to: "/docs/get-started/quickstart", - }, - { - label: "Guides", - description: "Solitary, sociable, test doubles, and fundamentals.", - to: "/docs/guides/", - }, - { - label: "API Reference", - description: "TestBed, Mock, and configuration APIs.", - to: "/docs/api-reference/", - }, - { - label: "Migrating from Automock", - description: "Move an existing Automock setup to Suites.", - to: "/docs/migration-guides/from-automock", - }, -]; - -export default function NotFoundContent(): React.ReactElement { - return ( -
-
-

404

-

This page took an early return.

-

- We may have moved or renamed it during the recent docs refresh. - Try one of these instead: -

- -
    - {SUGGESTIONS.map((item) => ( -
  • - - {item.label} - {item.description} - -
  • - ))} -
- -

- Still stuck? Go to the homepage or{" "} - - open an issue on GitHub - - . -

-
-
- ); -} diff --git a/src/components/NotFoundContent/styles.module.css b/src/components/NotFoundContent/styles.module.css deleted file mode 100644 index 53d71d9..0000000 --- a/src/components/NotFoundContent/styles.module.css +++ /dev/null @@ -1,86 +0,0 @@ -.container { - display: flex; - align-items: center; - justify-content: center; - padding: 6rem 1.5rem; - min-height: 60vh; -} - -.inner { - max-width: 720px; - width: 100%; - text-align: left; -} - -.code { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", monospace; - font-size: 1rem; - letter-spacing: 0.15em; - color: var(--ifm-color-emphasis-600); - margin-bottom: 1rem; - text-transform: uppercase; -} - -.title { - font-size: 2.25rem; - line-height: 1.2; - margin: 0 0 1rem; -} - -.subtitle { - font-size: 1.05rem; - color: var(--ifm-color-emphasis-700); - margin-bottom: 2.5rem; -} - -.list { - list-style: none; - padding: 0; - margin: 0 0 2.5rem; - display: grid; - grid-template-columns: 1fr; - gap: 0.75rem; -} - -@media (min-width: 640px) { - .list { - grid-template-columns: 1fr 1fr; - } -} - -.item { - margin: 0; -} - -.itemLink { - display: flex; - flex-direction: column; - gap: 0.25rem; - padding: 1rem 1.25rem; - border: 1px solid var(--ifm-color-emphasis-300); - border-radius: 0.5rem; - text-decoration: none; - color: inherit; - transition: border-color 0.15s ease, transform 0.15s ease; -} - -.itemLink:hover { - border-color: var(--ifm-color-primary); - text-decoration: none; - transform: translateY(-1px); -} - -.itemLabel { - font-weight: 600; - font-size: 1rem; -} - -.itemDescription { - font-size: 0.9rem; - color: var(--ifm-color-emphasis-700); -} - -.footer { - font-size: 0.95rem; - color: var(--ifm-color-emphasis-700); -} diff --git a/src/css/custom.css b/src/css/custom.css deleted file mode 100644 index 6e9c8b3..0000000 --- a/src/css/custom.css +++ /dev/null @@ -1,626 +0,0 @@ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* Import Geist Mono font */ -@import url('https://cdn.jsdelivr.net/npm/geist@1.3.0/dist/mono.css'); - -/* You can override the default Infima variables here. */ - -:root { - /* Font Families - System Font Stack */ - --font-body: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - --font-heading: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - --font-code: 'Geist Mono', Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace; - - /* Override Infima font-size - larger to compensate for system fonts */ - --ifm-font-size-base: 18px; - - /* Primary Colors */ - --ifm-color-primary: rgba(239,71,121,1); /* Bright Pink */ - --ifm-color-primary-light: #FF9EBB; /* Light Pink */ - --ifm-color-primary-dark: #750e2d; /* Dark Pink */ - - /* Complementary and Neutral Shades */ - --ifm-color-accent: #522E38; /* Deep Mauve, works as a darker, neutral complement */ - --ifm-color-secondary: #FFC2D4; /* Soft Pink, lighter and less saturated */ - --ifm-background-color-dark: #602437; /* Deep Reddish Brown, good for dark mode backgrounds or accents */ - - /* Utility Colors */ - --ifm-color-success: #52c41a; /* A fresh green for success messages, not from pink range but provides contrast */ - --ifm-color-error: #f5222d; /* Vivid red for errors, enhancing visibility */ - --ifm-color-warning: #faad14; /* Bright yellow for warnings, stands out in the pink context */ - --ifm-color-info: #1890ff; /* Blue, for informational messages, contrasts well with pink */ - - /* Neutral Grays (useful for typography, borders, etc.) */ - --ifm-color-gray: #8A2846; /* This is a grayish pink, quite muted */ - --ifm-color-gray-dark: rgb(86, 90, 98); /* Dark gray, close to charcoal */ - --ifm-color-gray-darker: #262b34ff; /* Even darker, great for high contrast elements */ - --ifm-color-gray-light: #f2f4f4ff; /* Light gray for background contrasts and space */ - - /* Force dark mode theme colors */ - --theme-background: #1a1a1a; - --theme-text: #e6e6e6; - --theme-border: rgba(255, 255, 255, 0.1); - --theme-section-bg: #2d2d2d; - --theme-section-border: var(--ifm-color-primary); - --theme-card-bg: rgba(45, 45, 45, 0.7); - --theme-card-hover-shadow: rgba(0, 0, 0, 0.2); - --theme-card-text: #c4c4c4; - - /* Override docusaurus colors to force dark mode */ - --ifm-background-color: #1a1a1a; - --ifm-font-color-base: #e6e6e6; - - /* Force dark color scheme only */ - color-scheme: dark; -} - -html { - font-size: 16px; /* Explicit root size for rem calculations - matches Next.js */ - position: relative; - min-height: 450px; - background-color: var(--theme-background); - color: var(--theme-text); -} - -body { - font-family: var(--font-body); - font-size: 18px; - font-weight: 450; - line-height: 1.6; - -webkit-font-smoothing: antialiased; - background-color: var(--theme-background); - color: var(--theme-text); -} - -* { - outline: 0 !important; -} - -/* Link styling - Next.js inspired */ -a { - font-weight: 500; - text-decoration: none; - transition: opacity 0.2s ease; -} - -a:hover { - text-decoration: underline; - text-underline-offset: 3.5px; - text-decoration-thickness: 1.5px; - opacity: 0.9; -} - -/* Custom link state styling */ -main a { - color: var(--ifm-color-primary); -} - -/* Fix for the active link state (when clicked) - only for content */ -main a:active { - color: var(--ifm-color-primary) !important; /* Keep original color */ - text-decoration: underline !important; /* Add underline for visual feedback */ -} - -/* Documentation links */ -.markdown a { - color: var(--ifm-color-primary); - font-weight: 500; -} - -.markdown h3 { - font-size: 1.5rem; - font-weight: 600; -} - -.markdown a:active { - color: var(--ifm-color-primary) !important; - text-decoration: underline !important; -} - -/* Table of contents links */ -.table-of-contents__link:active { - color: var(--ifm-color-primary) !important; - text-decoration: underline !important; -} - -/* Sidebar menu links - excluding from active state color change */ -.menu__link:active { - text-decoration: underline !important; -} - -/* Fix admonition/info cube links and borders */ -.alert { - border: none !important; - border-radius: 0; - border-left-width: 6px !important; - border-left-style: solid !important; - box-shadow: none; -} - -.alert a { - color: #ffffff !important; - font-weight: 600; - text-decoration: underline; -} - -.alert a:hover { - opacity: 0.8; -} - -/* Specific alert type styling */ -.alert--info { - border-left-color: var(--ifm-color-info) !important; -} - -.alert--success { - border-left-color: var(--ifm-color-success) !important; -} - -.alert--warning { - border-left-color: var(--ifm-color-warning) !important; -} - -.alert--danger { - border-left-color: var(--ifm-color-error) !important; -} - -.next-steps-section h2 { - font-family: var(--font-heading); - font-weight: 600; - margin-bottom: 1.5rem; - color: var(--theme-text); -} - -.next-steps-section ul { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 1rem; - list-style: none; - padding: 0; -} - -.next-steps-section ul li { - background: var(--theme-card-bg); - border: 1px solid var(--theme-border); - border-radius: 8px; - padding: 1.25rem; - transition: all 0.2s ease; -} - -.next-steps-section ul li:hover { - border-color: var(--ifm-color-primary-light); - box-shadow: 0 4px 12px var(--theme-card-hover-shadow); - transform: translateY(-2px); -} - -.next-steps-section ul li a { - display: block; - font-weight: 500; - font-size: 1.1rem; - margin-bottom: 0.5rem; - color: var(--ifm-color-primary); -} - -.next-steps-section ul li p { - color: var(--theme-card-text); - font-size: 0.95rem; - margin: 0; -} - -/* In This Section component for index pages */ -.in-this-section { - margin: 0.5rem 0 3rem; - padding: 1.5rem 2rem; - background-color: var(--theme-section-bg); - border-radius: 12px; - border-left: 4px solid var(--theme-section-border); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); -} - -.in-this-section h3 { - margin-top: 0; - margin-bottom: 1.5rem; - font-size: 1.5rem; - font-weight: 700; - color: var(--theme-text); -} - -.in-this-section ul { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 1rem; - margin: 0; - padding-left: 0; - list-style: none; -} - -.in-this-section ul li { - position: relative; - padding-left: 1.5rem; - padding-bottom: 0.5rem; - color: var(--theme-text); - font-size: 1.05rem; -} - -.in-this-section ul li::before { - content: '›'; - position: absolute; - left: 0; - top: 0.05em; - color: var(--ifm-color-primary); - font-weight: bold; - font-size: 1.4rem; - line-height: 1; -} - -.in-this-section strong { - color: var(--theme-text); - font-weight: 600; -} - -/* Replace generic h2:last-of-type selector with a specific class */ -.section-divider { - margin-top: 3rem; - padding-top: 1.5rem; - border-top: 1px solid var(--theme-border); - color: var(--theme-text); -} - -/* Update related selectors to use the new class */ -.section-divider + ul { - padding-left: 0; -} - -.section-divider + ul li { - list-style: none; - margin-bottom: 0.75rem; - color: var(--theme-text); -} - -.section-divider + ul li a { - font-weight: 500; - color: var(--ifm-color-primary); -} - -.container { - margin-right: auto; - margin-left: auto; - padding-left: 10px; - padding-right: 10px; -} - -@media (min-width: 768px) { - .container { - width: 750px; - } -} - -@media (min-width: 992px) { - .container { - width: 970px; - } -} - -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} - -h1, h2, h3, h4, h5, h6 { - font-family: var(--font-heading); - color: var(--theme-text); -} - -h1 { - font-size: 2.5rem; /* 48px */ - font-weight: 600; - line-height: 1.2; - margin-top: 0; - margin-bottom: 1rem; -} - -h2 { - font-size: 1.75rem; - font-weight: 600; - line-height: 1.333; - margin-top: 1em; - margin-bottom: 0.75em; -} - -h3 { - font-size: 1.25rem; /* 20px */ - font-weight: 500; - line-height: 1.6; - margin-top: 1.6em; - margin-bottom: 0.6em; -} - -h4 { - font-size: 1rem; /* 16px */ - font-weight: 500; - line-height: 1.5; - margin-top: 1.5em; - margin-bottom: 0.5em; -} - -/* Lead text */ -.lead, -p.lead { - font-size: 1.25rem; /* 20px */ - line-height: 1.6; - margin-top: 1.2em; - margin-bottom: 1.2em; -} - -/* Paragraph spacing */ -p { - margin-top: 1.25em; - margin-bottom: 1.25em; -} - -/* Inline code styling */ -code { - font-family: var(--font-code), serif; - font-size: 15px; - font-weight: 400; - padding: .12em .25em; - line-height: 1.2; - border: 1px solid #3e3c3c; - border-radius: .375rem; - background: #2a2828; - color: #e6e6e6; -} - -/* Code blocks */ -code[class*="language-"], -pre[class*="language-"] { - font-family: var(--font-code); - font-size: 16px; - font-weight: 400; - text-align: left; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; - - @media print { - text-shadow: none; - } -} - -pre > code { - font-family: var(--font-code); - font-size: 14px; - border-top-left-radius: unset; - border-top-right-radius: unset; - overflow: hidden; - font-weight: 400; - border: 1px solid hsla(0,0%,100%,.05); - padding: 0; - background: transparent; -} - -/* Keyboard keys */ -kbd { - font-family: var(--font-code); - font-size: 14px; - font-weight: 500; - padding: 3px 6px; - border-radius: 5px; - border: 1px solid #3e3c3c; - background: #2a2828; - color: #e6e6e6; -} - -code .theme-code-block-highlighted-line { - background-color: rgba(255, 255, 255, 0.12); -} - -div[class*="codeBlockTitle_"] { - font-family: var(--font-body); - color: rgb(153 161 179/1); - background-color: rgb(35 39 47/1); - border: 1px solid hsla(0,0%,100%,.05); - border-bottom: none; -} - -.theme-doc-breadcrumbs { - font-family: var(--font-body); - margin-bottom: 2rem !important; -} - -.breadcrumbsContainer { - margin-bottom: 2rem !important; -} - -.docs-introduction { - width: 60%; - margin: 0 auto; -} - -.header-github-link:hover { - opacity: 0.6; -} - -.header-github-link:before { - content: ''; - width: 24px; - height: 24px; - display: flex; - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") - no-repeat; -} - -html[data-theme='dark'] .header-github-link:before { - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") - no-repeat; -} - -/* Sponsor button styling */ -.header-sponsor-link { - display: inline-flex !important; - align-items: center; - gap: 6px; - padding: 6px 16px !important; - background-color: rgba(55, 58, 64, 1) !important; - color: rgba(230, 230, 230, 1) !important; - border-radius: 50px; - font-weight: 600; - font-size: 1rem; - transition: all 0.3s ease; - text-decoration: none !important; - margin-right: 8px; - border: none; - white-space: nowrap; -} - -.header-sponsor-link:hover { - background-color: rgba(65, 68, 74, 1) !important; - color: rgba(240, 240, 240, 1) !important; - text-decoration: none; -} - -.header-sponsor-link:before { - content: ''; - width: 16px; - height: 16px; - display: inline-block; - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23EF4779' d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'/%3E%3C/svg%3E") - no-repeat center; - background-size: contain; -} - -/* Hide external link icon for sponsor link */ -.header-sponsor-link svg[class*="iconExternalLink"] { - display: none !important; -} - -@media (max-width: 768px) { - .header-sponsor-link { - margin-right: 48px; - } -} - -/* Move GitHub icon after search */ -.navbar__items--right { - display: flex; -} - -.header-github-link { - order: 10 !important; -} - -.navbar__search { - order: 5 !important; -} - -/* Add a manual theme toggler, add this if you want a button to override system preference */ -.theme-toggle-button { - margin-left: 0.5rem; - padding: 0.4rem; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - transition: background-color 0.2s; - background-color: transparent; - border: none; - cursor: pointer; -} - -.theme-toggle-button:hover { - background-color: var(--theme-border); -} - -/* Dark mode is always enabled */ -html[data-theme='dark'] .theme-toggle-button svg { - fill: #f5f5f5; -} - -/* Dark mode styling (always applied) */ -.in-this-section { - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); -} - -.alert a { - color: #ffffff !important; -} - -/* Version Badge Styles */ -.version-badge { - display: inline-block; - font-size: 0.75rem; - font-weight: 600; - padding: 0.2rem 0.5rem; - margin-left: 0.5rem; - border-radius: 4px; - vertical-align: middle; - white-space: nowrap; - font-family: var(--font-body); - letter-spacing: 0.025em; -} - -.version-badge--new { - background-color: rgba(239, 71, 121, 0.15); - color: var(--ifm-color-primary); - border: 1px solid rgba(239, 71, 121, 0.3); -} - -.version-badge--deprecated { - background-color: rgba(245, 34, 45, 0.15); - color: var(--ifm-color-error); - border: 1px solid rgba(245, 34, 45, 0.3); -} - -h2 .version-badge, -h3 .version-badge { - font-size: 0.65em; - position: relative; - top: -0.1em; -} - -/* Documentation metadata blockquote - subtle styling for guide page metadata */ -.theme-doc-markdown article > blockquote:first-of-type, -article.markdown > blockquote:first-of-type, -.markdown > blockquote:first-of-type { - background-color: rgba(255, 255, 255, 0.03) !important; - border-left: 3px solid rgba(239, 71, 121, 0.4) !important; - border-radius: 2px !important; - padding: 1.25rem 1.5rem !important; - margin: 2rem 0 !important; - font-size: 1rem !important; - line-height: 1.9 !important; -} - -.theme-doc-markdown article > blockquote:first-of-type p, -article.markdown > blockquote:first-of-type p, -.markdown > blockquote:first-of-type p { - margin: 0 !important; - color: #c4c4c4 !important; -} - -.theme-doc-markdown article > blockquote:first-of-type strong, -article.markdown > blockquote:first-of-type strong, -.markdown > blockquote:first-of-type strong { - color: var(--ifm-color-gray-light) !important; - font-weight: 500 !important; -} - -.theme-doc-markdown article > blockquote:first-of-type a, -article.markdown > blockquote:first-of-type a, -.markdown > blockquote:first-of-type a { - color: var(--ifm-color-secondary) !important; -} diff --git a/src/pages/404.tsx b/src/pages/404.tsx deleted file mode 100644 index fea8656..0000000 --- a/src/pages/404.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import Layout from "@theme/Layout"; -import NotFoundContent from "../components/NotFoundContent"; - -export default function NotFound(): React.ReactElement { - return ( - - - - ); -} diff --git a/src/pages/index.module.css b/src/pages/index.module.css deleted file mode 100644 index 5939f4a..0000000 --- a/src/pages/index.module.css +++ /dev/null @@ -1,653 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.heroBanner { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - padding: 4rem 2rem; - position: relative; - overflow: hidden; - min-height: 48rem; - color: #2f2f2f; - background-color: #242526; -} - -.heroContainer { - max-width: 1400px; - margin: 0 auto; - width: 100%; -} - -.heroContent { - display: flex; - gap: 3rem; - align-items: center; - justify-content: center; -} - -.textColumn { - flex: 1; - max-width: 600px; - text-align: left; -} - -.codeColumn { - flex: 1; - max-width: 650px; -} - -.buttonGroup { - display: flex; - gap: 0.75rem; - margin-top: 2rem; - flex-wrap: wrap; - align-items: center; -} - -.worksWithSection { - margin-top: 3rem; -} - -.worksWithTitle { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.9rem; - color: rgba(253, 245, 248, 0.6); - letter-spacing: 1px; - margin-top: 1.5rem; - margin-bottom: 1.5rem; -} - -.logoGrid { - display: flex; - gap: 2rem; - flex-wrap: wrap; - align-items: flex-start; -} - -.logoItem { - position: relative; - display: flex; - flex-direction: column; - align-items: center; - gap: 0.5rem; - min-height: 90px; -} - -.logoImage { - height: 40px; - width: auto; - object-fit: contain; - opacity: 0.8; - transition: opacity 0.3s ease; -} - -.logoImage:hover { - opacity: 1; -} - -.recommendedBadge { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.6rem; - font-weight: 500; - color: rgba(253, 245, 248, 0.5); - background-color: rgba(253, 245, 248, 0.08); - border: 1px solid rgba(253, 245, 248, 0.2); - padding: 2px 6px; - border-radius: 10px; - letter-spacing: 0.3px; - margin-top: 0.25rem; - transition: all 0.3s ease; -} - -.logoItem:hover .recommendedBadge { - color: rgba(253, 245, 248, 0.9); - background-color: rgba(253, 245, 248, 0.15); - border-color: rgba(253, 245, 248, 0.4); -} - -.logoName { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.85rem; - font-weight: 500; - color: rgba(253, 245, 248, 0.7); - margin-top: 0.25rem; -} - -.plusIcon { - display: flex; - align-items: center; - justify-content: center; - height: 40px; - width: 40px; - font-size: 2rem; - font-weight: 300; - color: rgba(253, 245, 248, 0.5); - opacity: 0.8; - transition: all 0.3s ease; -} - -.plusIcon:hover { - color: rgba(253, 245, 248, 0.9); - opacity: 1; -} - -.featuresSection { - margin-top: 3rem; - margin-bottom: 3rem; - width: 100%; - max-width: 1300px; - margin-left: auto; - margin-right: auto; -} - -.featuresGrid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 1rem; -} - -.featureItem { - text-align: left; - padding: 2rem; - background-color: #1a1a1a; - border-radius: 12px; -} - -.featureEmoji { - font-size: 1.5rem; - margin-bottom: 1rem; -} - -.featureTitle { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 1.15rem; - font-weight: 700; - color: rgba(253, 245, 248, 0.95); - margin: 0 0 1rem 0; -} - -.featureDescription { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.95rem; - font-weight: 400; - line-height: 1.6; - color: rgba(253, 245, 248, 0.7); - margin: 0; -} - -.trustedBySection { - margin-top: 3rem; - margin-bottom: 5rem; - text-align: center; - width: 100%; -} - -.trustedByTitle { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.9rem; - font-weight: 600; - color: rgba(253, 245, 248, 0.6); - letter-spacing: 1px; - margin-top: 1.5rem; - margin-bottom: 1.5rem; -} - -.trustedByGrid { - display: flex; - gap: 3rem; - flex-wrap: wrap; - align-items: center; - justify-content: center; -} - -.trustedByItem { - display: flex; - align-items: center; - justify-content: center; -} - -.trustedByLogo { - height: 32px; - width: auto; - object-fit: contain; - opacity: 0.6; - filter: grayscale(100%); - transition: all 0.3s ease; -} - -.trustedByLogo:hover { - opacity: 0.9; - filter: grayscale(0%); -} - -.shareExperience { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.95rem; - font-weight: 400; - color: rgba(253, 245, 248, 0.7); - margin-top: 2rem; - margin-bottom: 0; -} - -.shareExperience a { - color: inherit; - text-decoration: underline; - font-weight: 500; - transition: all 0.3s ease; -} - -.shareExperience a:hover { - color: rgba(253, 245, 248, 0.9); - text-decoration: underline; -} - -@media screen and (max-width: 996px) { - .heroBanner { - padding: 2rem 1rem; - min-height: auto; - } - - .heroContent { - flex-direction: column; - gap: 2rem; - } - - .textColumn { - text-align: center; - max-width: 100%; - } - - .codeColumn { - max-width: 100%; - width: 100%; - } - - .buttonGroup { - justify-content: center; - } - - .button { - font-size: 0.9rem; - padding: 8px 16px; - } - - .worksWithSection { - text-align: center; - } - - .logoGrid { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 1.5rem; - justify-items: center; - } - - .logoItem { - min-height: auto; - } - - .featuresGrid { - grid-template-columns: 1fr; - gap: 1.5rem; - } - - .featureItem { - padding: 1.5rem; - } - - .featureTitle { - font-size: 1.1rem; - } - - .featureDescription { - font-size: 0.9rem; - } - - .trustedByGrid { - gap: 2rem; - } -} - -.title { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 3.35rem; - color: rgba(239, 71, 121, 1); - font-weight: bold; - width: 100%; - text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); - letter-spacing: -1.75px; - margin-bottom: 1.5rem; -} - -.subtitle { - text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); - color: rgba(253, 245, 248, 0.88); - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 1.2rem; - font-weight: 500; - line-height: 2.25rem; - margin: 0; -} - -.buttons { - max-width: 50% !important; - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - margin-top: 50px; -} - -.button { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 1rem; - font-weight: 600; - padding: 10px 24px; - border-radius: 50px; - border: none; - white-space: nowrap; - background-color: rgba(55, 58, 64, 1); - color: rgba(230, 230, 230, 1) !important; - transition: all 0.3s ease; -} - -.button:hover { - background-color: rgba(65, 68, 74, 1); - text-decoration: none; - color: rgba(240, 240, 240, 1) !important; -} - -.buttonPrimary { - background-color: rgba(239, 71, 121, 1); - color: rgba(30, 30, 30, 1) !important; - border: none; -} - -.buttonPrimary:hover { - background-color: rgba(255, 85, 135, 1); - color: rgba(20, 20, 20, 1) !important; -} - -.logo { - display: none; -} - -.docs { - margin: 0 auto; - max-width: 1272px; - padding: 60px 16px 24px; - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; -} - -.docs h1 { - font-size: 3rem; -} - -.codeBlock { - margin: 0; - padding: 0; - background-color: transparent; - font-size: 0.85rem; - line-height: 1.6; - overflow-x: auto; -} - -.codeBlock code { - color: #d4d4d4; - font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace; - display: block; - white-space: pre; -} - -.codeColumn :global(.theme-code-block) { - box-shadow: none; - border-radius: 14px; - max-height: 500px; - overflow-y: auto; -} - -.codeColumn :global(.theme-code-block) code { - padding: 1.5rem; -} - -.codeColumn :global(button[class*='copyButton']) { - display: none; -} - -.codeColumn :global(div[class*='buttonGroup']) { - display: none; -} - - -.libraries { - margin-top: 20px; - max-width: 90%; - display: flex; - justify-content: center; -} - -.library { - margin: 10px 15px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - box-sizing: border-box; - padding: 30px 40px; - border-radius: 8px; - background-color: #2f2f2f; - border: none; - transition: transform 0.3s ease, box-shadow 0.3s ease; -} - -.library:hover { - transform: translateY(-5px); - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); -} - -.libraryImage { - height: 100px; - max-width: 100%; - object-fit: contain; -} - -/* Alternating sections styles */ -.alternatingSection { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem; - align-items: center; - margin-bottom: 6rem; - max-width: 1300px; - margin-left: auto; - margin-right: auto; -} - -.alternatingSection:last-of-type { - margin-bottom: 4rem; -} - -.alternatingSection:nth-child(even) { - background-color: #1a1a1a; - padding: 4rem; - border-radius: 16px; -} - -/* Reverse order for even-numbered sections */ -.alternatingSection:nth-child(even) .textColumn { - order: 2; -} - -.alternatingSection .textColumn { - display: flex; - flex-direction: column; - justify-content: center; -} - -.eyebrow { - color: var(--ifm-color-primary); - font-size: 0.9rem; - font-weight: 700; - text-transform: uppercase; - margin-bottom: 1rem; - letter-spacing: 0.5px; - justify-content: center; -} - -.alternatingSection .textColumn h2 { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 1.5rem; /* Match Next.js h2: 24px */ - font-weight: 600; - line-height: 1.333; - margin-bottom: 1.5rem; - color: #fff; -} - -.alternatingSection .textColumn p { - font-size: 1.1rem; - line-height: 1.8; - color: #aeb8c4; - margin-bottom: 2rem; -} - -.alternatingSection .textColumn .button { - align-self: flex-start; -} - -.ctaCard { - display: flex; - align-items: center; - gap: 1rem; - background-color: #2a2a2e; - border: 1px solid #3c3c3c; - border-radius: 12px; - padding: 1.25rem; - transition: all 0.2s ease; - text-decoration: none; -} - -.ctaCard:hover { - background-color: #313135; - border-color: #555; - transform: translateY(-2px); - text-decoration: none; -} - -.ctaIcon { - font-size: 1.25rem; - color: var(--ifm-color-primary); - background-color: rgba(239, 71, 121, 0.1); - border-radius: 8px; - width: 40px; - height: 40px; - display: flex; - align-items: center; - justify-content: center; -} - -.ctaText { - display: flex; - flex-direction: column; -} - -.ctaText strong { - font-size: 1.1rem; - font-weight: 600; - color: #fff; - margin-bottom: 0.25rem; -} - -.ctaText span { - color: #aeb8c4; - font-weight: 500; -} - -.visualColumn { - border: 1px solid #3c3c3c; - border-radius: 12px; - overflow: hidden; - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2); - display: flex; - flex-direction: column; - justify-content: center; - background-color: transparent; -} - -/* Style the title bar of the code block */ -.visualColumn :global(div[class*="codeBlockTitle_"]) { - background-color: #36363a; /* Lighter grey for the title */ - padding: 0.75rem 1.25rem; - color: #d1d5db; - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.9rem; -} - -/* Style the main code area */ -.visualColumn :global(pre) { - background-color: #2a2a2e; /* The darker background */ - margin: 0 !important; - padding: 1.25rem; - border-radius: 0 !important; - flex-grow: 1; /* Make it fill the space */ -} - -.visualColumn .codeBlock { - margin: 0 !important; - border-radius: 0 !important; - box-shadow: none !important; - background-color: transparent !important; - height: 100%; - display: flex; - flex-direction: column; -} - -/* Code examples tabs styles */ -.codeColumn :global(.tabs) { - margin-bottom: 1.5rem; -} - -.codeColumn :global(.tabs__item) { - font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; - font-size: 0.8rem; - font-weight: 600; - padding: 6px 14px; - border-radius: 50px; - border: none; - background-color: rgba(55, 58, 64, 1); - color: rgba(230, 230, 230, 1); - transition: all 0.3s ease; - margin-right: 0.5rem; -} - -.codeColumn :global(.tabs__item:hover) { - background-color: rgba(65, 68, 74, 1); - color: rgba(240, 240, 240, 1); -} - -.codeColumn :global(.tabs__item--active) { - background-color: rgba(200, 200, 200, 0.3); - color: rgba(255, 255, 255, 1); - border: none; -} - -.codeColumn :global(.tabs__item--active:hover) { - background-color: rgba(200, 200, 200, 0.4); - color: rgba(255, 255, 255, 1); -} - -@media screen and (max-width: 996px) { - .alternatingSection { - grid-template-columns: 1fr; - gap: 2rem; - } - - .alternatingSection:nth-child(even) .textColumn { - order: 1; - } - - .visualColumn { - margin-top: 2rem; - } - - .alternatingSection .textColumn h2 { - font-size: 2.2rem; - } -} \ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx deleted file mode 100644 index 2e83a54..0000000 --- a/src/pages/index.tsx +++ /dev/null @@ -1,433 +0,0 @@ -import React from "react"; -import clsx from "clsx"; -import Link from "@docusaurus/Link"; -import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import Layout from "@theme/Layout"; -import CodeBlock from "@theme/CodeBlock"; -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; -import styles from "./index.module.css"; -import Head from "@docusaurus/Head"; -import { FaGithub } from "react-icons/fa"; -import { trackButtonClick } from "../utils/analytics"; - -function HomepageHeader() { - return ( -
-
-
-
-

Suites

-

- - A unit testing framework for TypeScript backends working with - inversion of control and dependency injection - -

-
- trackButtonClick("get_started", "homepage_hero")} - > - Get Started - - trackButtonClick("why_suites", "homepage_hero")} - > - Why Suites? - - trackButtonClick("guides", "homepage_hero")} - > - Guides - - trackButtonClick("github", "homepage_hero")} - > - - GitHub - -
-
-

Works with projects using

-
- - NestJS - NestJS - Official - - - InversifyJS - InversifyJS - Official - -
- Vitest - Vitest -
-
- Jest - Jest -
-
- Sinon - Sinon -
-
-
+
- more -
-
-
-
-
- - - - {`import { TestBed, type Mocked } from '@suites/unit'; - -describe('User Service', () => { - let userService: UserService; // The unit we are testing - let userApi: Mocked; // The dependencies we are mocking - let database: Mocked; - - beforeAll(async () => { - // Create an isolated test env for the unit - const { unit, unitRef } = await TestBed.solitary(UserService).compile(); - - userService = unit; - // Retrieve the unit's dependency mocks - automatically generated - userApi = unitRef.get(UserApi); - database = unitRef.get(Database); - }); - - // ✅ Test test test - it('should generate a random user and save to the database', async () => { - userApi.getRandom.mockResolvedValue({id: 1, name: 'John'} as User); - await userService.generateRandomUser(); - expect(database.saveUser).toHaveBeenCalledWith(userFixture); - }); -});`} - - - - - {`// THE MANUAL WAY -// (Similar complexity exists in NestJS, InversifyJS, etc.) - -import { UserService } from './user-service'; -import { UserApi } from './user-api'; -import { Database } from './database'; - -describe('User Service', () => { - let userService: UserService; - let userApi: any; // ❌ Lost type safety! - let database: any; - - beforeAll(async () => { - // 🔧 Manually create mocks for each dependency - userApi = { - getRandom: jest.fn(), - // Missing methods? Who knows? No compile-time checks! - }; - - database = { - saveUser: jest.fn(), - // What other methods exist? ¯\\_(ツ)_/¯ - }; - - // Manual wiring - boilerplate for every test - userService = new UserService(userApi, database); - }); - - it('should generate a random user and save to the database', async () => { - userApi.getRandom.mockResolvedValue({id: 1, name: 'John'} as User); - await userService.generateRandomUser(); - expect(database.saveUser).toHaveBeenCalledWith(userFixture); - }); -}`} - - - -
-
-
-
-
-
👩‍💻
-

Declarative

-

- Suites' declarative API creates fully-typed, isolated test environments with a single declaration. - Suites auto-generates all mocks and wires dependencies automatically. -

-
-
-
-

Type-Safe

-

- Generate type-safe mocks bound to implementations. Eliminate - broken tests after refactors, silent runtime failures, and - manual type casting. -

-
-
-
🔄
-

Refactoring Confidence

-

- Change constructors, add dependencies, refactor classes - tests - adapt automatically. Skip manual mock updates. Catch breaking - changes at compile time, not runtime. -

-
-
-
-

AI Ready

-

- One canonical pattern teaches AI agents the entire API. Coding - agents like Claude Code and Cursor write correct tests in a - single pass with 95% less context consumption compared to manual - mocking patterns. -

-
-
-
-
-

Used by

-
-
- Monday.com -
-
- Lemonade -
-
- Balance -
-
- Harmonya -
-
- Vetric -
-
-

- Using Suites?{" "} - - Share your experience - {" "} - and help us shape the future of Suites -

-
- -
-
-

Standardized Testing Across Teams

-

- Stop relearning test patterns on every project. Suites provides a - consistent, standardized approach that works identically across - NestJS, InversifyJS, and any DI framework, giving teams a unified - testing experience. -

- - See Framework Support → - -
- - {`// Same pattern works everywhere -// NestJS, InversifyJS, TSyringe... - -TestBed.solitary(OrderService).compile(); - -// Or test with real dependencies -TestBed.sociable(OrderService) - .expose(PaymentProcessor) - .compile();`} - -
- -
-
-

Tests That Reveal Intent, Not Boilerplate

-

- Suites' declarative API removes 90% of test setup code. No more - scrolling through mock wiring, logic is front and center. New team - members write tests on day one, not day ten. -

- - See Quick Start → - -
- - {`// One line creates the entire test environment -const { unit, unitRef } = await TestBed - .solitary(UserService) - .compile(); - -// Just test the logic -const userApi = unitRef.get(UserApi); -userApi.getRandom.mockResolvedValue(user); -await unit.generateRandomUser();`} - -
- -
-
-

Type-Safe, Automatic Mocking

-

- No more debugging broken mocks. Suites automatically generates - fully-typed mocks bound to implementation. Catch errors at compile - time, not runtime. Refactor with confidence while mocks stay valid - when dependencies change. -

- - Learn about Mocking → - -
- - {`// No manual mocks needed! -const { unit, unitRef } = await TestBed - .solitary(UserService) - .compile(); - -// Fully-typed mocks, automatically generated -const userApi = unitRef.get(UserApi); - -userApi.get.mockResolvedValue({ name: 'John' });`} - -
- -
-
-

Built for AI-First Development

-

- Manual mocking forces AI agents to hold 40+ lines of boilerplate - per test in context. Suites provides one canonical pattern that - reduces token consumption by 95%. AI coding assistants like Claude - Code, Cursor, and GitHub Copilot generate accurate tests in a - single pass without burning tokens on repetitive setup code. -

- - Suites and AI → - -
- - {`// Manual: 40+ lines per test in AI context -// class MockUserApi { getRandom = jest.fn(); ... } -// class MockDatabase { saveUser = jest.fn(); ... } -// const userService = new UserService(mockUserApi, mockDb); - -// Suites: Single canonical pattern -const { unit, unitRef } = await TestBed - .solitary(UserService) - .compile(); - -// AI agents learn the entire API from one example`} - -
-
-
- ); -} - -export default function Home(): JSX.Element { - return ( - - - Suites | Unit Testing Framework - - - - - ); -} diff --git a/src/theme/Footer/index.tsx b/src/theme/Footer/index.tsx deleted file mode 100644 index f073e02..0000000 --- a/src/theme/Footer/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import SiteFooter from '@site/src/components/Footer'; - -export default function Footer() { - return ; -} \ No newline at end of file diff --git a/src/theme/NotFound/index.tsx b/src/theme/NotFound/index.tsx deleted file mode 100644 index 4a8eadd..0000000 --- a/src/theme/NotFound/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; -import Translate, { translate } from "@docusaurus/Translate"; -import { PageMetadata } from "@docusaurus/theme-common"; -import Layout from "@theme/Layout"; -import NotFoundContent from "../../components/NotFoundContent"; - -export default function NotFound(): React.ReactElement { - return ( - <> - - - - - - ); -} diff --git a/src/theme/Root.tsx b/src/theme/Root.tsx deleted file mode 100644 index e2aeb56..0000000 --- a/src/theme/Root.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { useLocation } from '@docusaurus/router'; -import ClientOnly from '@site/src/components/ClientOnly'; -import AskAIButton from '@site/src/components/AskAI'; - -export default function Root({children}) { - const location = useLocation(); - - // Only show the Ask AI button on documentation pages - const isDocsPage = location.pathname.startsWith('/docs'); - - return ( - <> - {children} - {isDocsPage && ( - - - - )} - - ); -} \ No newline at end of file diff --git a/src/types/docusaurus-theme.d.ts b/src/types/docusaurus-theme.d.ts deleted file mode 100644 index 829988e..0000000 --- a/src/types/docusaurus-theme.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -declare module "@theme/Tabs" { - import type { ReactNode } from "react"; - - export interface Props { - children: ReactNode; - defaultValue?: string; - values?: Array<{ label: string; value: string }>; - groupId?: string; - className?: string; - queryString?: boolean | string; - } - - export default function Tabs(props: Props): JSX.Element; -} - -declare module "@theme/TabItem" { - import type { ReactNode } from "react"; - - export interface Props { - children: ReactNode; - value: string; - label?: string; - default?: boolean; - className?: string; - attributes?: Record; - } - - export default function TabItem(props: Props): JSX.Element; -} diff --git a/src/utils/analytics.ts b/src/utils/analytics.ts index a0b6d46..beaf30a 100644 --- a/src/utils/analytics.ts +++ b/src/utils/analytics.ts @@ -9,6 +9,8 @@ declare global { eventName: string, params?: Record ) => void; + // Shim for Agent 2's HTML buttons to call inline: window.__suitesTrack('button_name', 'location') + __suitesTrack?: (name: string, location: string) => void; } } @@ -39,4 +41,10 @@ export const trackButtonClick = ( button_name: buttonName, location, }); -}; \ No newline at end of file +}; + +// Install the global shim so plain HTML onclick attributes can call window.__suitesTrack('name', 'loc') +if (typeof window !== 'undefined') { + window.__suitesTrack = (name: string, location: string) => + trackButtonClick(name, location); +} diff --git a/static/img/balance-logo.svg b/static/img/balance-logo.svg deleted file mode 100644 index b6f7c6a..0000000 --- a/static/img/balance-logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/static/img/banner.png b/static/img/banner.png deleted file mode 100644 index eb3d736d3c261caf5a9486e2a1a7b97fdf2fbec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5933 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 E0F0o-F#rGn diff --git a/static/img/favicon.ico b/static/img/favicon.ico deleted file mode 100644 index f4f0ee76124a78851a3fcc5bbbbae77af5ad0c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmd6lu}d3q6vtmBQwIq_96~5T96IHGXThmMhmInlIED@x>|KW7AP7=Q2~wP-6roTg zE>c297nlAG#jRu4w#n~;E*Tu+=bO7Lr}zhW;gk2?_r3SKm*0!o6F%j#@m;s5WVUQ( z&jAS~)iIC$i30yDcK#!D^I`E{!*>|M2i4@cqU|_eBmWcHagbD$i-Yk~;*&T`7O~5* zOWLaGxN)`EJFj(qi`-Ct)c9kOo6q9V`t;SeUyK&Ax?vppE&0WVx|V9AaHMx0fo6UQ z($C-vXb#Tvtzxfyv@RUS;kb&`9qfZ@-+*#G=Ft66bLW1f?ZOXOE1nw%egih|Xw+o2 z>QQeU-e+1PuYDI@FQ9Eeb9?Q2{@ax!Ze+FUsps|h>HKa|;++-Z186eqTWk-l%#L*C zG5p_ep~Z~`Hb8%9e>L<=>RXXZ zmhi9wGw9M-5fF zAO;a$04ai0k@7@TY6vKTG!f-d1BWv=H*<4yv$Ol1{qBBd|J=Jyjy6YNaxee@j@a2^ zTn<&~XF?%|l|-TZ_}K*5x;Ov;@aAziybQ&o=M(;$9rxce4W_! z`b;j7R(W%+=O0uV z{tST7w`KWhO7-6CEJll2d!?kZ}nsvn4A=n^Imzb-L>`!A61W zx?%kvEl%JrEqR{G{YbzrQO~|hJUAvSa^6t>wU-f#D-5Df&h#mfjo0+ClEQ{%&Xn@T zV8PLxczC$-zH~Q%`W^1EjgGhNzqlIZ))(0%n-lBIMHRmGu1Nn#2WHi~PiaH6L9jN} zmWkHqx_!ka6`G}+jlK`ko1kW3Bup=`s*8@aA0ll&-Ab}_i`sN0sB2E?uZyhNJcN49 zx=Qyr?}-C0Go&taMJJnPZ{FvxZ<^Il>@vMtsMl{P2xG%#jQAqQQ+5j;vi}xyEg0{_ z2Y743v#{EK|Dqtn_szgbaOWn=$nly#P-6TE9ZPUM?WsdKlQy+oC_617T|~H;R?vtG z7AwGgZ<7puwU|@AmdxreHOqbL;79v)V&nn6w$@mb@n=Bvy3+8TD$5T^h!{%)zYO1S zuMckR_vlPFH$>Ck?JDd$TkqRr+yqh27dbg^=aHcx{tLQ#K0n4d*c$wH?_F9RgU+VF z2e`JH#Fc!eY#|5U|4JcsjFOZS8~rrd*{iaSrN(K_@Ehk}?ij_ECAYb{p%AKd8cz0_ z!~yQpcS|W3xbKEy?hjtclQU+L8W`0KBk-e{Eb=v*H9xs5>oHIQn=ccUnMov}pJb;~ zO&_ih*&i%+txF){sWSRpk=mP9i+dc8<}@1EQ1`88H7=N_FcBEHL~i~-2u)sVKi?g zmzY;e5~$vzq?*DgGFuW0VWd^|S{SKsDMIvZf8#p<%t!?pARf#@k9EaH(<_R0~xMK`*m)Vo4H@orEOgnGf|_wDNW zd<7L4KjfjuaM@ogj?b&oK_nTHGVD%ogUy0)TRNJ87~G0-Ay0jp!SRVJ37s2^?#STN z{Z>SL!&g4vjuMG`>J{wLm_ko*kJAt*$W4ZtB{eR`NmF8ht#rogaf)>?cb z6__ydyMXiB%?aY@NeuVWPLS5XBWxc` z$cq5Ql@3vt5runQPZhuVEfjwD|GyI?rAx|W;%gky^q*pT>)Ng z>9$-|{>bebRm|hhJ|`iX+J9y8()}+VOG2W-NT;kmB%z@{Vy9o;NcfHY=C9H;2sK)l z7jSDQO%H#w(+n&0<2W8`B6Jlz2ua4RPv6&UlB~-L0cU@Oof&2eK;de5`Q^_hknQf?;Nb9|3|5d0a`#7Fskv)7}==7rAw zR(6UieIqI~(0?Py!iM%w*7)mF^#v{OnN5(fiaK_|2L}V#a%6NQ!^ogYC{gNary>mC z{#7a8`!;R1=%|QI_>&dPdlaV$ufYz3?@s&lk0i=wd|hg1g5g@#e@?@#J@DMb{MJlG zZouw~+5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/img/inversify-logo.png b/static/img/inversify-logo.png deleted file mode 100644 index dd25837ab7350547074a0105b32117d53222c9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1209 zcmV;q1V;ObP)R_kXzufQe_x#%G z_UM54p8x;^J4r-ARA}DqT8FNyFbstxj+;IH|6^YmEv0NoxY85W6{6$fcpUr0X;nS) z$Rm$Da!~L#8S4cj?h-OqY$dxzxK|^aQSf`b?buI@K?=Mfm1s?WlS|cbgJP~H<{@|G zO`f%mOuUd?=HrQum#!6JUIWysth3320u-`reode>MM{4n-LQwh$D+ehw zYk@2XDUfExDAc7Owe{rnbzOoI#q*K4AluoqmV4(Ny^WU@v|WPIc7;I3vYWiGCT^v{ z87S@Q0tFzo_ldb7MR%5^?2y`Di1$EhiJ{LyX|EldkU|7%G~-forVXjql^@`*xZJXv zPr+~>!z+aFN)n=F25<#R2XIGL@}DvvqL)lJ`w`8gPwInbw8F!WI_q_kD7C$T=> zbEe<}=DFd~bN{0@y%9N4HpSYGjXqNne#;FKX@&DvgXt{}Z_6EF@#PJ;*66Fe;-_RM zY;$3)07TiTmB#Q+wFfl*6YrtvxhCQS}Q8l0fJWus2 z$dqOk>+nSTucv!ifn#vByS|eHU^F_2O|b~p>AK76-tE}nELq?8sw)(IfCGF-AdU-2 z=sk-1YZVt6)O*!H>9@&a#czY#yn6fn;x=rElM)0!t)l+c+of5nH-$z zXQEdte6XftW5@Z<_NWF^6}64o&EtE9nf{2j(TY(g&M`n54X2VXnYB_Y0?msGh|W;k=>)s)uM8atCJXU@3Q=u?{Ju1rJ5h ztZ)lf@)#HwAyxR4ZUs_>kNTI|e2%TdDPluPpFJ;_mX+^R2ZBkIG}{sGfzkw0<@nA93%UzRzYw|)N!ys6~t923l@9n!tGMvA}OvydCwqUEKQQ& zd#|`Q24rWQK-m{dZj+e)N8;+>Q-|`q8@OC^*!4wBk2iuigEEQiIA$ySm!LaA{Qt-h zRp)&;OP|Nvr4Z5$&8Q4eyPkk& zTJ~U{ZtLO_9&6Z~ZUoXeDfC=bO%GlOfHJiF=D+|?-E~xT({De4Jmp*4$ z!7{4qvsh(IM^hIyWrJ~Mp0MH!A$~TNCRs5`+K^+@`hXhSJ#}Wex$sF%*mk|Y)AvF4TOsEDL7KAz0U;>5Al|0%v$c~ z9oe$(ePkkD7ud9Cy4aBazZ_8jV01KyR$@< z6t-?hOj2}CD!s2*QkO%wN;@!|@>1izFz=W?@+R&7tg&v#vV&4F*RdRWCUq?MqLRaL zjAw1GGsEj~8OT~a&2>oEOiG?_*LY}fyn{6dR6M^P+#Fu?)NuTcRD<30pyonx@h(4SM;8V0j4nB^Alcx>AcP>}f#O7= z4+Lad3`9uDKsZ-W$FEVxnnuLp@w0df!6Bk!Zj~vuub=p($~0&$EM)HHKIwEvVH^II>V$y!rH1y zSNg$NGz7|FZ6X^XPdCLb!=khHv}yIX>Cc&g%D|DN;p^jO30uS6faL7v#tkiG)Wyi^ z9L9*iW5Lri>(v;>3oc zZ^-p=pX0kUnby9E^{dXAaLw{I>5J35GYxQ|aTn^>V0|MpiGzU#`@+2q)P`Pe@Dpt*Wh*qYF~EAUu=eSmiRRMub*#NpJ={S5$Ou z(iwBhm|eS3fSz|ctUTtbfG$+b*02PRD>n*(R7YY{t285rqKz6~@>T#=RqLi!-~XQx zj&$ZT*ab0{-$-yUL!0ya!z!&v?-7fEY=Z{JDfy0eYYPXxPFjMXk;{y8Xv~S&L2ooX zkj)}5E$)L}nkv%~xBD)d+riTI;F6Q?wg2Z`F@uhT;hMKx6)DPlf58{|`oZd|Yn)$S zyT2DiEeBR9<`UMCVXpk5ZA7v)71C+t+CVaVx-;vz&$d-(DW17z3ITh(qnCWZw`W}5 zd%X^J8oSMXn&`yi$tO4QH=_6M!;j>E6Pqf3Ot3GV`7H06Fv$@8I0;` - - - - - image/svg+xml - - - - - - - - - - - diff --git a/static/img/logo.png b/static/img/logo.png deleted file mode 100644 index 71980b45206872ee77f79079be56eaa671abb4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15240 zcmW+-1yEZ}7sV;XKA^ZmaJS+`f&_Oj?oeEUd$A%RxNDJ8DDG~>9g0J7DFoL7fBH`* zlgZorviEIfubgu>MqO1N`z_g91Ox+Q{H^u|4Soe_s?8Jrfo7p3FN5&< z?^V!QmW+TPDy|?SrR}qFYK)QcQKu2RJVcpygr*)P%v%%I$q5~%*!L}!lB9vEKc7`O zE8HV~pbiZQ3qhjR1~3OfglVp5P-Opu_%e>8fZizRdFe3GN=idt4z$JJaeKD4pS91e z`d772H@>7-drXPWiQDEQA|n)}XAm?7x04Yzv&mm1<%SA%@x42kX)VH!H9E{sKFkj; zzIsRf2yU-j{OSyW8^^eu>8O~F^Izq@`kw?wPZVIBi;_nAoyj0*iM1|Fd>)!#Op+B(Q z@=4au7jJ}^qr%AAeo&n?N+0~5lr+&!*wx6Ds>Q%Z4v90Db6$JC@bYjnnZgRk@3bKjWnbm}9_Lge^Q9fq26ziUIWL zs37ypgsTcmobochX8dT01>Q15o}9R$}m z6grxuR=?ay^0WB~*sq5XZ?0di8HLM|6~hw@FbvJ8);Ty#i~Wx@1Ew$?MO3UmJWg@6 zI3m>iM`?aidYzQ8rz*%ho^REQc;hP4N)dC$SznIkmhxzfzHRA{(vmpoMmgb5Q-XsK zSv2L&xxvHI->ij5S z=sf~X*{_3B#iceTeh`<#m5mLoa~$?%&1NH)D*#y#2_asD)~~#bw4ll{yyQBxx0T<0 zo4lgc(%3GQGYU{@;Q7js=X4Th*gPbTnS0m8ZwLa(vPtIE5MNmeQqe7X?& ztFvcR9$}Kcu|9e?0B3__7U(p+5G1~JHm9&w6=m*- z0P69OUaKB=p>!oOoLXo1w=-kiYr{C}#N0Ugt@8LjNX13kM%=WlbK^7`h;rE-%@HGZ~70> z9&E-8_%kmsv;4|EC=7BHutZ8>LQO?{bP$m)k)OQj2QJUI@s?! zJ$2YKvg>(q9PaOEa=DF>tECh?`t)$3JFYiMM3)cM^sw2Q$KDpVp0h_`9z=B%FTS|8 zolN}B8>#Fkjl45o+WaW_4IS*Ac-N~CovlJ$RvijcwIlOsabe4X<-qS)>Wk`@MpJ2d z=YkTEP6+%6+&HB)zX?~lw?=kca_?^jSNt5ZBFey-M)Co+&)0uMTJQEv=F9lw8L6bM?3C(mU8ce_E$nYl{}@y;&NuNaNEM~ z1(g9nqpe}-?H&pFLt1-MMu(j zJ)0MU_+-6NFirA>RY`*k)>OFZ@AdZbZv!9m``?b!IS=r_NxPh=Dq>(9=wT?SLRsvZ z9fD*F`0D>>@KPb@e(Jd2!D-o?xmwXO3cu@3_$FQF$aH7kpF_VdvZ@nk=?QAk{{OrEO&v46VQAGu}ALokkdH1Q!uw#?Q+O0mbT&ViN7hj z9;GyLP%2iVRjO;u`Pl&-z`~17=Xi~@HD>`#(?b*TemSY$#e6t0v?2WIbi*_KW{{eP zJ)7s}yV$e{>Y0_d=mHJ_n9Zo{a-rz#vTxnXI>}Xbh`%K*Q3)=n*YKzm0{sv)y|&t& z?H|bE5#vfkv+W(}@#~z-c<>s;CKoR$go|IdAIR1;i@&yS2eHD24rnd8kfD+$R+h#1 zBCrrHk>bbp8F?a{rVYdo>>(DlG9f9WaX%4_KE;P{aNA?)hBGl;o17W&a)=H>mtYLExwthK*R6utT?XnxB z6pT2=-M0D=`Dw_q1u-96Ew_I1Khsn(0ztE?8G9|ysbm_JS4r#JdX;5tDzzT$dk3HL z`ic3CWEOfk&M5L4esxmzUwX60N^9P8SD*K2HM+UI#%eder>?4`oZ7vAE4bxkFZXv2 zltK^_NE>)kyj3VhiJlVYyF43b=QS$;Y-SN!lwo8=2j8G_IP07?t)48*^ zQxZD9?ry|LknqbvH#1HEfT^P>f5LQV8Q$%Ml$Ln|{`*P(=F=A#LB@RVFV$ti!BizjOg6jQ0$x)LwWk*3Xh;6Zlp|GGG6G=W zrE_R{F$*tEa1?)M6VsjjkEY$&ep=sPMII&+eGXb$U*h<9D7XZ-c4yQv$}=al_puhz zA^7&4X{Ax9BsJ_iuuWP)Qrg%b?nkC)U~BQ2YI`M(ubO1~L!1q27Dk2W2}F*~;S&j} z{UgR%6Mgn<;c}@M;)s8d*hlFZiitJE5!(-sxd`@tlr3u&%d`_=^MUF)B5Ii%*CLSa zkX=6N=MR|nj~~5arWRDC(zw1OkF-|{B`p~Qcj_fX?B*r}!E|PBH`nLuuu6_95>PI9 zRwy+|5<_-#6Rl+MII<+EDWUkfiSG4(;cHNta7fKif#SvnfC)u+JzK2DYGMEUjx^Gq zqcc|gF4Y+~g8zBod#OexX@*nBe^9UlwAJ9p>@X>$ZM8g-S6jPH9Ch}(?XjqJj0<8yr_0{46hPPmA-qAsP6+$`1P!;^D z=-Z6CO+U}C>t!wb8FdZ9XuPPeNt^n)7X+gVG}J5kMQr>m!8OghxQ~k|W1yeCm?G5v>w#i?$U$fJ0O0uCWe@Y>ri+uvRn0lL}~q_!;kjc{&DF-}a12 zBx^VJ5kq${k;d1S{-f`A=g++~CGrfSvQC{DvX=xDb|k})nwX{EDQznCee5Cg;&1Kj zB0<=>+8qM_o|%p4=qqC~z9x9FV7N9*FFhEk;wju=o{X7?PU9~SG-njWZ|X5EiUv2J zjoA@k8>0ZNQ@e)8()Fzq(5Sdj&dO)4cKwt-b_I2c>%fORaY?%Q*N@8HikwcuH;xym z{x<}{h*A?n^KNoWS#O&3h6yxl^n4frMEc|f;-mHIF0jK`U5Au3Kh7XVp)4IkMj>rr zyz})XI;`sgYC<7EK{}3tOFCsPCum(X{7N3xj|UZctt(+uIEHg*EJ7LM?YWE?A0o0l zsaY#b1ifCQomdbv)Qp&47hpu~JZiWn(UecaR;*AKF7eezczZpY5l!tl3E2l8=UFco zQeZsN6re{nNP0wi@|T=_ihM_1=zq|ubeWk%-i+iTXU!N2Ah>66vo*AjeUdcuSC0536Iv7O`R2K$lC6=~r-3HP2;1-v+PU zswO>8@F(6JL`das>}_L$@?XA;NXKkD>K~lnrc!!={6=)>eM#8c+h>%%1i3Ffm; zcwCrOOEIbLbD)ZS2Ha7%R!Hd;#X(@0p@$=A~ z&iCUj$!O}c<=W-H91B)v5g!FUyh&SMK5S~q_l`>83h2+mjr?%vuDuqMGtF?_+*w>) z5&mKfcAXzvPA4|-t{-M`2So|NBG8(+#?W|1Joy_$$4GN(uQWxnyDGVckue`bHq!qX z-i>d6C~+Wh(Z<>3VqVGlCLZ>5XResarWm@`yO&Dw_cr;a5%FV@N?4X^_#=Pv=qT|; znr^n@#>(C_J2=W3d;=`{BiY>NO1WP08>C2uiA9z$m}~1h_w|$^V=xrPSBV_|>F=S- zYm{}{fc1X+!|HoZYQMYL=cln&A9;Om+mqM9Q%^Q!0gC$Am(67|*NSo8{@ND4R*FIS zw*8Eh?<570|A7_PErR{X{YHZVW2wKRxRYzSXD#qM2t1QpPCT0w{C=bM7w*Epe#qF7 zGJDkg8WuQ%XnXx|)uLo2BVo?xHJtCOp?7?iK3cuxvtOHDKDpjpIbF%3BK0HrMc)oZrHyZgY1cKhY(50h94@^Ap0V-72ugd!f(noH*FZMAV|J|C0 zF}hN`^RH_x?%r|2&C$$!82`h(yzs_0*JSo*rsy*^%&&l0$0)8Yrj*43=Ya_B?AF*^ zHTOWE&4;2y+>4&`bC%3WAxFP=Bc_!Z={z@gQ^SLfvzzB_#3FdnJEs^vj+C)}!QI8* z4?}39tj2oEKBsU!=MLpNJgQVQ`4wMmYVs7JTlJJ9Zjq`Xr8H+u&l5fMk&02^n>7OK ztf6g_j=#?RFqGP0+r-LgtQoiRy|DXX<%jn{(*(9Mn`vUxj8D)2OIJ`xCr->!?Dq#V zJCb?{HUNIwIWfV9`d`V$f>#q{0N;9+MOWE)x|MW6LvFO15T(>{&!ofItD9VT0ml0e zSBuLwratH-@LBK3p|ZPCBgYYmejlUdaBn*r5+$nhyh$!TkU4woQEDk*oVcByWEbBv z*=+1Ota_4frY_9a#r=duV;+ggAM~wE0vyhcj_%xV<-SlxL5o?rtMH$%;`3gbeMt+P zZU<3(`6%!yG&eUOeLfL7yl-~$gIm95QOrE#YMi9S+fa-H^}sgUJSvyDKjp?H;b_Q6 z27uD5-ZNE;C4;og;zMLM$}mrE>LsM?^lR7Zcw98t~bmy{mXAfno<1?yUu6M zKTxw~yR!K(L>tZdy;Ch(H<}G<-o8w9_C7Ft_hZZDptYspRkzesvF=w&`}+3NGELbf zd31h)Rgh1gg+w~~no|RpvT@03*V3>R(sf%T)elEAI~Tnty4G!*b^4)TV^7ZF&Z?Od<-5$#(007Rn}peW!c&BRRXSVbwiDF-)QAf4&Ak%XHuYV9bZP zyHAgl&?QXhE7(TY$TUy&*LvXNHHhlFjhqUW;|ZjwxZbUIp! zzouZSNf0mxO6y+FnH3#!_EYp8eEuZJ*fI1W_pbe3s&p%ik&98i@G^iX(<~%NKJH?1 z$=5{+Bay0Nq{cX{uPrvJfrLuO1vRC%>{c-H676O=D4??9W{a~2v?|D}1D5iFJ>S6W zXExLRL}+b;ze@h4{rt>bAyHFlh&N@GbEJ*r@P(O}HSIK4%pYyyREi6WTOft5mJ0xL zhr4hzG2!Rsm8yY4CRQKi2HwMxSfWk{uF{eSR# z;sxW>e#V-&_k8-Vks$y_{5s9!BEg}qby4zWbI5~b4Y6#RbVAb6jq9eb=L6tdPY%4) z%%c6gEx2@O_q%icZg^bhe(~ap|J6i?;6beT>l!nfTejjO^{5#*GV+#p>uYP>cTOgh z$71f#76rk4;^VW<36njcRHu<~bx0PFPK4P=FS*>>I+`oQ=C%+;CGNCq@!N$ zhn#p3Pc9K9#E(nD#!pSNRaI04N6H#U;R0>VYEo%oyB)VCzQOc;saAcwFTCuT*>bCN zqxrDd*^CZ_0b656fp5{F!Iten&Gk@)6NaE~5QS%uomDr*tkr~0MytIpa!5+g1S*<{ z8Kcx?;7b9uF5qdz{yBaD^y$aIp;mUyX!n<#^UV||3seTkktjkSWNIrY5Sfx&5BSgg zuCB9CW*Grc^;i8yaG|M}^&0|rwlIHfH=<5J)$I%v^apXIT^Hx=;0Rh%RzlS7lfGdU zL9MFByc1Z4Rh5saNvDL`sDcgrEi--_yO&bMUDnP*f)bx+ihOHK3=s08~O8E5Q=>$2f*dqf;fln=Ek-;DvgRXvMDOgb8iIC z%aBwY;!xGD(9XOj^l8q-bK=cE#zxHR-Who@k&zbwltl7N8{-8CtlJ-TS0g3nwJGqe z-#cWG4cs16K%q&IzT-KF*ncD(Tzm`l3)VMEK=YW)Xr0uA*vjhNNF#z~X2@>2vHlt2 z-&@)qp+#hiK00jOj)Vvd*w`20(_#$0y(eg7}`2S*YnL<`wg4C7$MY!d$hz(O=CVd$33?wR5x2> zhPCx? ztdiA%;&ypt89wscb;du{Ti=(sRBEDJ5;JPrnxx_!u|1Ukpz~Gzw5vYv)6$5e;56cF zQH+j-&02qWPeafYl}Sevh}p}Qu7cG+TXD&bg+gd#C_LkWHT56xDw0 zrL8!$u^ZnnMM>Jiv8c{H!OTWCk`s84Qdk?^3O4Fb>Y0zrku8XGd+&-Y1WOS3TD7Ce zhb5u!pp?NVY`v)AMb9y%k+KXY3!1kGki@p=nrZBs@&FwH7}n%D2u9f*8Ee3*#J z0c|YpC?d>SlXjrh|5UZGjUTc0$NM>~7%}zw>h-X<-^^Z9%g{Hm>ZvQIp4FtQfKhni z;4S`NE6ZgKKw=+<)i5o*GgI84u*ah<$;3_p3eSE_1DM#5#~4kAoRy|oGXq+ciyGIZZc(EWT$;1`6bC+%4 z-m`fS2k`+jy`BxsyQKW#`{swHv~?x!vibWrYl>-OoR`e97NvEH=6sKVwh@h_9{7J(MFi*S=9ySFw;Kj#*@7<){vZ_{cOGNTSoD0fE%A9WaF3@GrqUu0!=W&9)1aztj8XRsT+9sD_?r&hlU-3Npi zwtl{yD4(v(4440bYLB!RVD3Ra3N|%~Ql<3$Tm#KV1=6RZg*@x}*EOKBgs0?+bLT zDGZRmZ)FMfJD)0i4IqAQ0do-kO`q!gD)sYw#1!hiv<&%x6YI63?p*l-jmj1u;GJDE zMQwb}%=(D&)J-H`tBydNphfnNTTA+~nN?u$bi`xKkFUY1C7-qvBB*w(MRep*+FRRdfQj=9V(k= z=FK)U)fx^2FQ4$W3Dx%@(ih}}*g_CMfijbag^@*JcZKuS^sUot%m6U8#!HR=144XQ zq#>6EH^~zt0E0iTYRpM&zhw-?Yr4Jz_9g-2kP9kn8Groy1irS^HK*H*sI!F!Qk1(> zz8z#Sr-d7m5)`vA9mo^>-^us-VemJkQk+Kb2K+oQ@sCT@raWxah~C|M>j~2V;U97= z$uT&s>PsYrUTHWt#|Rv7GFkRphO zlHpft7C0u;DiknjM>b&7iu)q5jn@b6!^!RoVFYoZ632Ik%VQA0d8!CejQ5mb%hLg* zT=hYldW!t|^`0m<)04I1U=ZD$`vh567vT%XGU~Pns>m%q03(33Q3v0F*OlCRx|XY) zTZQQ9%`IWz1;_R4T?u~SdmTm(?vt_(eTP6X5I52*|4|);jO;82lGw;Pt+<=M3nw+%4dYVWC zuZ3MJ*v)nGY%#wGkqjVyOWv&B4#bC!`B2RE2Kf72Dz-{i>M!KYNy|NlHmDxXYEsZ;6ydOB72KRl zB&`m-3jViisl>6ZjHHzJQuu;Nvg?i=r{p*+*=7#B{Vv~SM5X~hCQjLMk?SxPN; z=$lkvOqnz^bGVd?XE%;Ys$w$ljdyur`7ZE$?E$y#fbHGks3&OF<$M$k*#Csd(*UzI z_)7id*DfVA(Tp*Bw@8~?Y7vM5II^cv_K#Hd{56AcHbomamh^{u=Cvk+ zU{(4tNE**&TUw?*s0bdxRF-n!2({!RC&_<`);AKILuJyJU1^s8a-!8}bkdkq7S*vl z^G|YD&=0B0NoJ7KUhA22dbjjtP*^GK3*6`*`vxgZN36N^b}>=F8EG%3VQf29gmg6H z)ntYKg!7F5MqSH-+z)&NK^uhsfYY%7WrX@f;G>BRNWOA9QB!>lUXWsbEk6}S3)@sv z`X^?Y1+zK$>NXdpAhjX`VCEsk(HdQ3qyNobPfX4?>796k)FdyfN%1VU->d&}irN() zhamYD6!|t*(Wq=vK*c6|{BIs00diyPfksZ8oV7Ys9W7tVMvekc-#;FVb#UX9r8E6U z&HPs1Tb0)1%J?O5E>j(2yR+TMu*=4r!6qy;bgAF`ckUO59dk6^l2xbV{_6nqhmsT5 zyh3pfq5M=&`r02WtdeV43=bDV=%S2c6tlT22Z>=qVV}WRe-CX#o>#xEa0-AwNe0h- zaYaibnP+~XrO@oR#jCGf;ucBFj34mNa%_h!U#{97U^8k%osA2I8fHEJ>BMh$m-5h#GA&)uJ)cA`Mpaw+JZPZnwoGEouj#vKZ`=( z*X!DkAw`QE4Q2CiusXTBHHQr+>Y{nUXH)||H(yCvT%hB1&}VoHd`JC>lj{2`viZ(S3)8AQN-2?q0z5LW$7 zgI7PHKqS9-1C?UkIjRYPF_?j=d(5sz$NFN3+i$O_;)iF%6?+MxkgYq(w))t@gf@wl z?`+CD#ob7JHiUMi#ao(5&Y#WO=!mV7JCL=pNwdKBQUU)Db4ncS6EkK46Kc5%ck|W` z;=+mS`mmacn~%+(lzFuf;^nx}%ELcyXDQNku%P|o>5zvZ%L*|nU5AcJDadIH2-)(t zQw$^Lx~?@)8ny?xpPoo*8OL8^F=I_cemaE4;d`G4lTdlH&saVfY#s5YaA;*_+WQ<* z?UO8q|N3ZAUmbZN_r@o*E6|Qc;v-#)s%gyb4~~q!e6YWE1JD0Yt?+v$UB+P3uGzwpXdOB_(N*%Od&8^J)CZLJFYz4q9eTsRjwl;06Ad}< zKb=rawj*1sp$2`N zY^&x2)5yd7>;Q{PPOFpSq|6So!7m}dPy{j=PMku5NauY7*WdDqo9b_{m8p7NM$9bV zHlqB{oDXzkV7mJ~EP(kqL8t3oa^U>d zUC*s`V2X9$nYvfcp%>F~@0e$h8Z4SV&@Q!V;>}DoN0FIB+4%XRVd?MD7rHD#`k$@o zE}JOb_QzaaL;n4B?G7^bJ*w@%OP^Ees>q{6&~EQ}-Nk|x>e^ayMDhlm#-FoKW%}W*orBIV>W?Ep^W}9;KKuAL^>jv@DvWHi z2TRTrTBZ!DiK|v2xMkIo`EwFKO5*-7KHjMoUHQ}r9_B_AcoyPL+9>P^`?ZS$*fyo= zEM!e1-wn$5)rnTJU+S*|gA9^+Bs7^gwlUcSpjWegzm!&jxV~e9AJ6R40=@yFk^>!& zk3Iuu$FitLG~i2__UE`gxZ&)1^;qi^4u z5Sb?+s;y;9%Oky}I^?29{7c%-8)OWppQ>=|aY{Cnc0QQ>o%O1g@&!6L&CMrNU%FH` zwmh9iZxp)h$5nq^9h#mt5iP-m^Y@~Znlv9G=bv!$4howy-;d_x)%iw4SONn+X>JL2 z!DY8e;V5>N`INI_aJn9R^TPaskwLbGB!7^ zR-MPQipE{R9b9KqiN^6x-VqE^;TV&=Jm&E@KWy|VWj60VJC^;qv#B-9lHT@*F}Y*% zfKsHZT9zkf#m0I)d}Ck=;~&p(WczfM2M3u&0Qo^yhN}sRr^7Mf8I2k3LR`7LH9|ja zEVQ6M1sXZp1{e`lX8r>lQD1*Rfr15qyfwHZQP!@L!ps{=z%}2r^+*xbW+ zHI5)LHLL9OS(g_)3P_MAyhn7Hg7j?%!JQ@5Txu(W2XPxD&;}Ay>Z}o!tqoevRL(A? z6OyR0;S)~^IlJqajkyeQ*529w?E&74XOQTAZ0H>^pZkt3sG|N`^5hrKv)xo8xXN)Y z7JE|Y%PHn&;@P@M=o%c>fA^1)dra?zOR#*WZoYMCc3eD5X}B>tt4yun(7I4)GT#c; z^aYT>DJqeyJ;`SQ6E}VUtdmxA#=bdPa6&o@2c0qWzV=qop~kKSlj;$U|Eossii1J1 zBB!jvwHzf!HB>0uWo@UJb@q2-Y<_|wXxkQ`b#PQk>0ClsI$g<;dnv`MZapvyyP_Qi z*_au(1rwB<3AQ9_CUq%?@EbRAT-r?F9C5()KT+2$HV%pMaOp?yCyH2*0ChOOxzVF5 zRp@-KT4keFX9s45Z6AqvS(qsf)+*G`Ockhza?z96AaQT&tzk9 zMze22cjla)y5 z<)$hGnFe9li`eNE-AAn;um7J_aTY2EScG^z@Pjt)-uRBQimk1*bPeE2XQ}F%428Fl z9`ZRTPp|yK`f@_^pqz4A%549sz>5r0>Vb2FHi3MXFR2!wktf*|=8GulyBxU~vNOR` z-#aXt8mH4iKbg3+y_4XKsc%Ss!5!%6aQW}F!H2COSJ$(sGdl8-L?DF-zX=iwYk`ASu z`FlcTQ9SnG7VT9Jr?%NMz6{3YOi0---y{p8yaW<7s*?V#Vd#GqP3f|IbF z+y(wy_PqLr1ll~1EW3G%4yzBR%cq=6oL+6-(%3N{B;p1M!ImJRZ*(n0*P6bd?X$^*hUKwpb)ODN~$vs zm7Ar4fJ7g`xRf--Z#gYHjOO%bL(6^wz_FUPFz6q#MK*Db< z*Crk~VfCZ`qxRnuBP&~%ylAM{oLSm6nETf6o8GsT(BgY-&>R#YtxJcsS;CB66v-I! z3TitgBGcmCUg+oWAyJ6hwvrXOq$sgRA12MUuGVHE((d=6Uz28h$I-P=P{e_B@h$it zV)M$f($M6b-8DQ7(1XM>+tS1P>wl%O5xowkh2Rs8YcWuw?hhtZHRnI)DTB zYJ9Bdg`mT{TtOzS2i~-$4Wa6IA^IN=f*ROP`=~+w>Zx9U*3Xt%Suxdsrn@fyLbLu zi+lp<5(Gr-6QlDLgQ#?$h*Z!klI}5`>EYjsi1i^X7duD3{|I%;=IwyxGa}i@Bk{O5 zCAcs9pv40tGh_$<+HZweZfwg5aY0Toyq9mo&_&^j7dJMX6D^vc5{SD47l>c{e8@Bp zyW!x8n0Q;a&ROz!)vC;BH>I>_xz|{`pQn=9(&^100K`w}N=!Zi&XS$9Gqj)PVf$?p zf|xtu4ld?H|Dv#7vHZIzfw7g&`KN*C3MHj@HnBsQ9-?D`6-2S{~fTi@)x>Ra|wlNPa# zjR9MIYG$kY;V>4&0j6$>PWSVo+2R7+QG*{N?rPKn&DAu{Z0C@e0~PN40|H$w7tsV+ z(SK0GsJMgdL5)$GEPa^ua1^6OV63i$ zX2a-o2h2{h@G8S%s$XW3Rh)#u)MemC<&1r3)FAt3qGUJNU8eV8ym&vVvYgG4*?EeH zlB}Em2ZNr^&xOfe_drk+r;*M0fdF_?4YGri|h+Ml)xkz$wX3ETP8u%Ou)7=%=xv!9%%V4Q_P!=Sl8N;HA-yo-3P ze8&La%kJVEX1?`%CWlvVTY&rw7@V%e(E5XUF84DpWx+-bid*FgwY)pym0vhKH0=Oq z{+pghvnEW>uq&=`=|!Dba*`Zsm;72KdMG$~wOdFv3Io zoK}il_mo%xlGu8HgAC2XhxD7O{`x3FJ+=2Is;;#>h0T1HIj2%5h=FL4br`%G>H0(X z)tB5xg9Lk$FJbiJ+(2eHudlojoYMSvj?~ifA@wHmrcBOXXDW=y@3C{qAbbXv3L$sn2CS&q0!!I=?41fPmaoQhx7X1em zDB{G_61WFeBRKg_((jF|8+s7Ly()i9iiNO1OzxMut!385B1pn{^ z8-??~{Q-D_>k`VOJnpS2ZD+2t;>j(_7}#iQaS5oI z+hUufO=n0|s5$a|kK-`3AAUDMGAPw8>qC$ZQO=OwW^b1nwmlG4s z(IMkS?}jPurmwy47?*Y&-TYa@-`S)ja)oPg&k4w{M>VJP`JnLQAuRF8I&CVHu9mf4 z1OXVFIk3xi|7H>V8g*xypb+!pu%kv`pJc|v)n$kc*3U<-y{pYeXK*t*3dtlA+XwNh zUTEzU08FIp$Plg>97l;43!@)|+||`q<;Ww*{M*W_Du;1!Kd#um#jWIG$vt#0oc8em? zu-Ek#R28uJVMZ!GE45Ho-c-(%x9>$4uN@8o2|_*A)wGkekHNz1Gz5;=US=uz%*QID zH6te+Y@VneTN2Ep%(4fC;PWErN3MtV|M*;Ruf7q7#9xos3A=6U=Cb}IUGV-tnJiu}<_rDmj zUZX=m=ycc2H)`#CgZc1BHl99d<3Hgq48Ye&2J7bZ6aU^_pG6ibQ!}}@YeWbL&uD!9 z9vswASM-0JwL4mIGS2ufP1e(i;(|RDhoT2ZTL2dapAN|S>Nn{g#8a8CmR$WGE zFh$MFfmJwR852rcrm!ZR>si|={rb#d0@8be&Ff1Zs6I~V%}Q{Uygq4-!q28vW%K>& gqRPNUNWBj>nOe47O0lwo{}_UTtg1}4v{~5y0BwhlkpKVy diff --git a/static/img/logo.svg b/static/img/logo.svg deleted file mode 100644 index 995f60a..0000000 --- a/static/img/logo.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/static/img/monday-logo.svg b/static/img/monday-logo.svg deleted file mode 100644 index b22d286..0000000 --- a/static/img/monday-logo.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - image/svg+xml - - - - - - - Logo / monday.com - - - - - - - - - - diff --git a/static/img/nestjs-logo.png b/static/img/nestjs-logo.png deleted file mode 100644 index 44c064e69362bbec29b105645a683808dd296fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1614 zcmV-U2C?~xP);37`oBTnHXPT(U>;3H1pBTnEWPT(U>;3H1pBTnHXPT(U>;3H1pBTnEW zPT(U>;3H1pBTkHspzHtu02OpnPE!ENbteed6#DVzRh(LCMFnTG@^oC4|DqT%$X}iEw>h$rhxQ>aR+I0yHL+U zV9GvzHn-wa6{3I#atENf5xM6NWED?4#1GK;z9WMNFz*}l_<;}THsn#)Og5T@QS1Gk zz-*vsJb4rW?@>2(QNa)+7m{#z3vep}kywK87Ow9A_JOp<^Dr0D*2hJH_r`^Vxcad~ z2TzA3ZeaDVx#L!{FW^AR#4wDhK@Tw$FMOo~Mt$R6KQcD0gkCv9h!7(F36zJjH50s6 zh^zo#x@C-HrwIR6B;!PN5{=-fYxx>5KW*5!9|Q~A!i0i0Vz<$e*Q7fOt9aNIp`>Zd zs;Yy+)nLbSldgBGe{;sJmx1WF@O4#-4xG$s;$xr6 zwl36>3+O;Pzjf$l-RBOF51*k30I_oQSwzT)bmQXNvrmQ6p6{1D;-$Kjhh@& z%qCTEr^4JWEogG78k(M35mE!Fjswwlxuu39a$9)8e~YY2CiSDf2AW*5LChb zMWkul5%$}^%OP{;b!)9{dpH2TpQNoS7pNKILhJ?psfNUmg*%1!?-s_bz{$KS#_O%{ zGL>>x{FAO5&2L4X)$5Yn2|VwOpkB1O#9xZ+Wl<%~bQflZG5EZ`Qg91fh z7af{)md?r?Os({QS97QlShRXc1a|{(flF>$84tZxXBb_ywjqn&2>j7xrV_9kp8P!Y z&-n?3#p2A-{(ZSb=8w)EU>O5v>Tv(7P>6HQKXu;7i5{mdfh^86b!`D{^K(&Wa} zBU|!+0&Y6?Pry|D6Yyo0Ce8vk7r8h&4NR|jGdMqxl9!IG&I8j+U8>>A2=&5|FHIfI zh4{rUEiZJ}M+U!!;Sxf*{?9%Jne33_cgL)z8}&)_u1AqW?zP8!P>PI%?&(?`DRr67 zjmTfX;~;77$`GEeoqmPIVL^N8;5s|+B=A-qxni6d73UL_abfG>!vfAWFaXVnWSlSh zK3ha%vfB9=7}^xISf^&Cc19Z*fILm>uyV!J_0t`Qw@TU^VDGau-M}?tkWuXu+vBq- zK!&O{%(CejaF`~8R5AIzT=TGjec-gEvOB-m^CAnU%)sC`?RgZ{`|bqj(`t5CCFZxr zo-Jqu0{bRC<0Q{#gsYJ-341L42rsQ&4^NMaz`OL1$>*qVzffE@{1{(vkB*JH{Uk}A z+aki2VmHq@Ps=k%2PJvSFj?&8)xCf@xjzDvtj&;&QiXMRnh@`%U`kltCf|Nr_l285 z@bzd2Ds$1wxV6*M4~ zl~0?>+(T)w24Wjmyq8M04$P%L$D@(ov>7qjeWE)gE&&ejb=hvMk;sT|@y7z}#_Zu` z>|CCp?WSL}jTuoI<;0m7()2oI%Qi8qy>ejOiyUB&KK~osZPrJxutKivd1Gp#(3MZ$ z8l=RW^`xPv6n%adY9a^Bq64kZc$YAo`PJ6N0y zI@;UERV$QI45_i+jRpb+*wW=yGi8!{iz?3tY>Vhhdy{#Za;m6f(Ccm0^itum(BI#P zn^r*LfkEx{{r-*12Q$$oXDj2*>QRe*;BOaw6?F+W-In M07*qoM6N<$f-avD9{>OV diff --git a/static/img/sinon-logo.png b/static/img/sinon-logo.png deleted file mode 100644 index 9a89334bf389a86d0a7827fbbad6925d06cff33c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4116 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 - - - \ No newline at end of file diff --git a/static/img/vitest-logo.png b/static/img/vitest-logo.png deleted file mode 100644 index 7b0e2f34d1cafd887bf74e22c15afd79f86191bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmeAS@N?(olHy`uVBq!ia0vp^6+oQF!3-pCo2sV)snP(S5LfpCpW@llMYDiNs%WMZ zkX*P*0mvwvCAo5qLeXrgKgYF!f`37zB!pWCRtXdb3IY*G!Ay`cGz8T<8*1#I*$hB) zK#FHepZ)6W0d#Q~ z5^gK-*%o3@+vS zF>$|&F1~+t=>GvVwQP62pPYACeLb?04{`qFowGCE!u?Of-XE_gu?W6n?d7_E$1X;p zoZ0TryS6;9CwVWPwcX*p@xdbFk@DP~T>s4rp7g~mne4w_y5M1xPh!tx|7S)Ils;X1 zx7^XZ=DnV|$7G$Tj|?Vn+BV8PcNLqJ;mH40!O!dK!FEGINvRsab-Pjv-Cj!mf7X3i zOIn-fgnxp^1+RELFOLiBcHQf6a8y4fr{QK^pcX1#!pIdB8|$if;Oo`7R`sGL>!l@T zhqYYiZC-FSS2m6(vOq7Y=Ud!$-_mII{j%SVFaB6}UjMLXpyOE@`amG8J8ef4XU zY~T6&y}!${FV5fpxBmKvN7GVsW(7Mhue$K{-u5u-=yfqqHfm2PKf`(JhUxp2eYXz( z;t9W&qrXQrb3?_alP-6bS!T~?)jy?gtF`i-H|yQ<*g1Wv7dTz9%{6(fq}i^wK-w*@xHjWkU{KqhHGOw4x87^s z^oeDj{=?4KTW&8|GUw-_y9SR>ol36Q*7DNsWSQ#I*$JG*F_t?;xM#igI=M7}Q-6n1 zkz&xHUz4;I)tT-pJUH|;Wv6sY%!WDoWz7q?r@XDv%t#bhyZzG1oFQhypVpg>%`qK0 z$L{1Y>|)qiy)%K0w=8-mfAn<8o7@(66&_yVVc+!FBIjrAr^K@6DYs9}-!k{^=ib8? zpC^WyznJ~YGGP1kZ#x&&$C`gVHp9AM!>)rju9n7&mF?a#_f>6cRr-eWRcrEI+}X}k zV4r=jBs}57+t{-=HdWRFLl>UKa}u&=QG7K zzvfK86LqL|U1iDC)X2`&H^2R5nS4C&tw)`0qLr!3ydBT?s#*RvPB{C^Z6^1msk{6m z4RVjJ+py-2=#=n+)+eDcjFqa>75RTxnwD#s*H%7~o3e9_>1z!=_qdyLr-qlOr?5=d zT)bn=^UC%|Mky-go^j`wetKxG=O1@{?)2+r&!2pa-PZGPQ;JNvR`O2eod=8Cjh5Y> yEFClbl;3Zm>e30ZzudlCgj{{7`1gI*e}_RelF{r5}E)^Su6 Suites is a unit testing framework for TypeScript backends working with inversion of control and dependency injection. It generates mocks for class dependencies and provides a virtual test container that mirrors your real DI container, so you can write solitary or sociable unit tests with minimal boilerplate. - -Suites supports NestJS and InversifyJS, integrates with Jest, Sinon, and Vitest, and offers a migration path from Automock. - -## Get started - -- [Get Started overview](https://suites.dev/docs/get-started/): entry point for new users -- [Why Suites](https://suites.dev/docs/get-started/why-suites): the problem Suites solves and how it differs from manual mocking -- [Installation](https://suites.dev/docs/get-started/installation): install the right packages for your DI framework and test runner -- [Quickstart](https://suites.dev/docs/get-started/quickstart): a minimal end-to-end example - -## Guides - -- [Guides overview](https://suites.dev/docs/guides/): index of conceptual and how-to guides -- [Fundamentals](https://suites.dev/docs/guides/fundamentals): core concepts and the testing model -- [Solitary tests](https://suites.dev/docs/guides/solitary): isolating a single class with auto-generated mocks -- [Sociable tests](https://suites.dev/docs/guides/sociable): testing a class together with selected real collaborators -- [Test doubles](https://suites.dev/docs/guides/test-doubles): mocks, stubs, and spies in Suites -- [Virtual test container](https://suites.dev/docs/guides/virtual-test-container): how Suites builds an isolated DI graph for each test - -## API reference - -- [API Reference index](https://suites.dev/docs/api-reference/) -- [TestBed (solitary)](https://suites.dev/docs/api-reference/testbed-solitary) -- [TestBed (sociable)](https://suites.dev/docs/api-reference/testbed-sociable) -- [Mock](https://suites.dev/docs/api-reference/mock) -- [Mock configuration](https://suites.dev/docs/api-reference/mock-configuration) -- [Unit reference](https://suites.dev/docs/api-reference/unit-reference) -- [Types](https://suites.dev/docs/api-reference/types) - -## Migration - -- [Migrating from Automock](https://suites.dev/docs/migration-guides/from-automock) - -## Project - -- [Changelog](https://suites.dev/docs/changelog) -- [GitHub repository](https://github.com/suites-dev/suites) -- [Examples repository](https://github.com/suites-dev/examples) diff --git a/static/robots.txt b/static/robots.txt deleted file mode 100644 index 0a16aaf..0000000 --- a/static/robots.txt +++ /dev/null @@ -1,71 +0,0 @@ -# Default: allow crawling -User-agent: * -Allow: / - -# =========================================== -# Search engines: explicitly allowed -# =========================================== -User-agent: Googlebot -Allow: / - -User-agent: Bingbot -Allow: / - -User-agent: DuckDuckBot -Allow: / - -# =========================================== -# AI crawlers: explicitly allowed so Suites -# shows up in AI-generated answers. -# =========================================== -User-agent: OAI-SearchBot -Allow: / - -User-agent: ChatGPT-User -Allow: / - -User-agent: GPTBot -Allow: / - -User-agent: ClaudeBot -Allow: / - -User-agent: Claude-Web -Allow: / - -User-agent: PerplexityBot -Allow: / - -User-agent: Google-Extended -Allow: / - -# =========================================== -# SEO scrapers: blocked. -# They consume bandwidth, skew analytics, -# and provide no discovery value to us. -# =========================================== -User-agent: AhrefsBot -Disallow: / - -User-agent: SemrushBot -Disallow: / - -User-agent: MJ12bot -Disallow: / - -User-agent: DotBot -Disallow: / - -User-agent: PetalBot -Disallow: / - -User-agent: BLEXBot -Disallow: / - -User-agent: DataForSeoBot -Disallow: / - -User-agent: serpstatbot -Disallow: / - -Sitemap: https://suites.dev/sitemap.xml diff --git a/tsconfig.json b/tsconfig.json index 1757261..2510b83 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,13 @@ { - // This file is not used in compilation. It is here just for a nice editor experience. - "extends": "@docusaurus/tsconfig", + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"], "compilerOptions": { - "moduleResolution": "node", - "baseUrl": "." + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + }, + "jsx": "react-jsx", + "jsxImportSource": "react" } } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fdfaa9c..0000000 --- a/yarn.lock +++ /dev/null @@ -1,9343 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@algolia/autocomplete-core@1.9.3": - version "1.9.3" - resolved "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz" - integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-plugin-algolia-insights@1.9.3": - version "1.9.3" - resolved "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz" - integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-preset-algolia@1.9.3": - version "1.9.3" - resolved "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz" - integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-shared@1.9.3": - version "1.9.3" - resolved "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz" - integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== - -"@algolia/cache-browser-local-storage@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.19.1.tgz" - integrity sha512-FYAZWcGsFTTaSAwj9Std8UML3Bu8dyWDncM7Ls8g+58UOe4XYdlgzXWbrIgjaguP63pCCbMoExKr61B+ztK3tw== - dependencies: - "@algolia/cache-common" "4.19.1" - -"@algolia/cache-browser-local-storage@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz" - integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== - dependencies: - "@algolia/cache-common" "4.22.1" - -"@algolia/cache-common@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.19.1.tgz" - integrity sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg== - -"@algolia/cache-common@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz" - integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== - -"@algolia/cache-common@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz" - integrity sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g== - -"@algolia/cache-in-memory@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.19.1.tgz" - integrity sha512-+PDWL+XALGvIginigzu8oU6eWw+o76Z8zHbBovWYcrtWOEtinbl7a7UTt3x3lthv+wNuFr/YD1Gf+B+A9V8n5w== - dependencies: - "@algolia/cache-common" "4.19.1" - -"@algolia/cache-in-memory@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz" - integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== - dependencies: - "@algolia/cache-common" "4.22.1" - -"@algolia/client-account@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.19.1.tgz" - integrity sha512-Oy0ritA2k7AMxQ2JwNpfaEcgXEDgeyKu0V7E7xt/ZJRdXfEpZcwp9TOg4TJHC7Ia62gIeT2Y/ynzsxccPw92GA== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/client-search" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-account@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz" - integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-analytics@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.19.1.tgz" - integrity sha512-5QCq2zmgdZLIQhHqwl55ZvKVpLM3DNWjFI4T+bHr3rGu23ew2bLO4YtyxaZeChmDb85jUdPDouDlCumGfk6wOg== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/client-search" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-analytics@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz" - integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-common@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.19.1.tgz" - integrity sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA== - dependencies: - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-common@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz" - integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== - dependencies: - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-common@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz" - integrity sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA== - dependencies: - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" - -"@algolia/client-personalization@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.19.1.tgz" - integrity sha512-8CWz4/H5FA+krm9HMw2HUQenizC/DxUtsI5oYC0Jxxyce1vsr8cb1aEiSJArQT6IzMynrERif1RVWLac1m36xw== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-personalization@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz" - integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-search@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.19.1.tgz" - integrity sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw== - dependencies: - "@algolia/client-common" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/transporter" "4.19.1" - -"@algolia/client-search@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz" - integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-search@^4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz" - integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== - dependencies: - "@algolia/client-common" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" - -"@algolia/events@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz" - integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== - -"@algolia/logger-common@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.19.1.tgz" - integrity sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw== - -"@algolia/logger-common@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz" - integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== - -"@algolia/logger-common@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz" - integrity sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA== - -"@algolia/logger-console@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.19.1.tgz" - integrity sha512-jj72k9GKb9W0c7TyC3cuZtTr0CngLBLmc8trzZlXdfvQiigpUdvTi1KoWIb2ZMcRBG7Tl8hSb81zEY3zI2RlXg== - dependencies: - "@algolia/logger-common" "4.19.1" - -"@algolia/logger-console@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz" - integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== - dependencies: - "@algolia/logger-common" "4.22.1" - -"@algolia/requester-browser-xhr@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.19.1.tgz" - integrity sha512-09K/+t7lptsweRTueHnSnmPqIxbHMowejAkn9XIcJMLdseS3zl8ObnS5GWea86mu3vy4+8H+ZBKkUN82Zsq/zg== - dependencies: - "@algolia/requester-common" "4.19.1" - -"@algolia/requester-browser-xhr@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz" - integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== - dependencies: - "@algolia/requester-common" "4.22.1" - -"@algolia/requester-common@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.19.1.tgz" - integrity sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ== - -"@algolia/requester-common@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz" - integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== - -"@algolia/requester-common@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz" - integrity sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA== - -"@algolia/requester-node-http@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.19.1.tgz" - integrity sha512-6DK52DHviBHTG2BK/Vv2GIlEw7i+vxm7ypZW0Z7vybGCNDeWzADx+/TmxjkES2h15+FZOqVf/Ja677gePsVItA== - dependencies: - "@algolia/requester-common" "4.19.1" - -"@algolia/requester-node-http@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz" - integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== - dependencies: - "@algolia/requester-common" "4.22.1" - -"@algolia/transporter@4.19.1": - version "4.19.1" - resolved "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.19.1.tgz" - integrity sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ== - dependencies: - "@algolia/cache-common" "4.19.1" - "@algolia/logger-common" "4.19.1" - "@algolia/requester-common" "4.19.1" - -"@algolia/transporter@4.22.1": - version "4.22.1" - resolved "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz" - integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== - dependencies: - "@algolia/cache-common" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - -"@algolia/transporter@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz" - integrity sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA== - dependencies: - "@algolia/cache-common" "4.24.0" - "@algolia/logger-common" "4.24.0" - "@algolia/requester-common" "4.24.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.8.3": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz" - integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== - -"@babel/core@^7.21.3", "@babel/core@^7.23.3": - 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== - 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" - -"@babel/generator@^7.23.3", "@babel/generator@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz" - integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== - 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" - -"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": - 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== - dependencies: - "@babel/types" "^7.27.3" - -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== - 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" - -"@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3", "@babel/helper-create-class-features-plugin@^7.28.5": - 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== - 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" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": - 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== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - regexpu-core "^6.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.5": - 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== - 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" - -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== - -"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5": - 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== - dependencies: - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" - -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" - -"@babel/helper-optimise-call-expression@^7.27.1": - 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== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - 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== - -"@babel/helper-remap-async-to-generator@^7.27.1": - 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== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-wrap-function" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - 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== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helper-wrap-function@^7.27.1": - version "7.28.3" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz" - integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g== - dependencies: - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.3" - "@babel/types" "^7.28.2" - -"@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== - dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" - -"@babel/parser@^7.27.2", "@babel/parser@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== - dependencies: - "@babel/types" "^7.28.5" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.5" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.3" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - 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== - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-import-assertions@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-import-attributes@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-jsx@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-typescript@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-async-generator-functions@^7.28.0": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" - -"@babel/plugin-transform-async-to-generator@^7.27.1": - 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== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - -"@babel/plugin-transform-block-scoped-functions@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-block-scoping@^7.28.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-class-properties@^7.27.1": - 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== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-class-static-block@^7.28.3": - 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== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-classes@^7.28.4": - 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== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@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/plugin-transform-computed-properties@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" - -"@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz" - integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.5" - -"@babel/plugin-transform-dotall-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-duplicate-keys@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-dynamic-import@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - -"@babel/plugin-transform-exponentiation-operator@^7.28.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-export-namespace-from@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-for-of@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-function-name@^7.27.1": - 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== - dependencies: - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-transform-json-strings@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz" - integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-logical-assignment-operators@^7.28.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-member-expression-literals@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-amd@^7.27.1": - 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== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-commonjs@^7.27.1": - 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== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-systemjs@^7.28.5": - 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== - dependencies: - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.5" - -"@babel/plugin-transform-modules-umd@^7.27.1": - 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== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-new-target@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-numeric-separator@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-object-rest-spread@^7.28.4": - 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== - dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.4" - -"@babel/plugin-transform-object-super@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - -"@babel/plugin-transform-optional-catch-binding@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-parameters@^7.27.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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-private-methods@^7.27.1": - 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== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-private-property-in-object@^7.27.1": - 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== - 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/plugin-transform-property-literals@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-react-constant-elements@^7.21.3": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz" - integrity sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-display-name@^7.28.0": - version "7.28.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz" - integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-react-jsx-development@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz" - integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.27.1" - -"@babel/plugin-transform-react-jsx@^7.27.1": - 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== - 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/plugin-transform-react-pure-annotations@^7.27.1": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz" - integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-regenerator@^7.28.4": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-reserved-words@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-runtime@^7.22.9": - 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== - 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" - -"@babel/plugin-transform-shorthand-properties@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-spread@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-sticky-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-template-literals@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-typeof-symbol@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-typescript@^7.28.5": - 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== - 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-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" - -"@babel/plugin-transform-unicode-escapes@^7.27.1": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - 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== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz" - integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg== - 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" - -"@babel/preset-modules@0.1.6-no-external-plugins": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz" - integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-transform-react-display-name" "^7.28.0" - "@babel/plugin-transform-react-jsx" "^7.27.1" - "@babel/plugin-transform-react-jsx-development" "^7.27.1" - "@babel/plugin-transform-react-pure-annotations" "^7.27.1" - -"@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz" - integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.28.5" - -"@babel/runtime-corejs3@^7.22.6": - version "7.28.4" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz" - integrity sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ== - dependencies: - core-js-pure "^3.43.0" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.3.1": - version "7.28.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz" - integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== - -"@babel/template@^7.27.1", "@babel/template@^7.27.2": - version "7.27.2" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.22.8", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz" - integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.5" - debug "^4.3.1" - -"@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.4.4": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" - -"@braintree/sanitize-url@^6.0.1": - version "6.0.4" - resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz" - integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@discoveryjs/json-ext@0.5.7": - version "0.5.7" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@docsearch/css@3.5.2": - version "3.5.2" - resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz" - integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== - -"@docsearch/react@^3.5.2": - version "3.5.2" - resolved "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz" - integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== - dependencies: - "@algolia/autocomplete-core" "1.9.3" - "@algolia/autocomplete-preset-algolia" "1.9.3" - "@docsearch/css" "3.5.2" - algoliasearch "^4.19.1" - -"@docusaurus/core@3.4.0", "@docusaurus/core@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz" - integrity sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w== - dependencies: - "@babel/core" "^7.23.3" - "@babel/generator" "^7.23.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/preset-react" "^7.22.5" - "@babel/preset-typescript" "^7.22.5" - "@babel/runtime" "^7.22.6" - "@babel/runtime-corejs3" "^7.22.6" - "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - autoprefixer "^10.4.14" - babel-loader "^9.1.3" - babel-plugin-dynamic-import-node "^2.3.3" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - clean-css "^5.3.2" - cli-table3 "^0.6.3" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^11.0.0" - core-js "^3.31.1" - css-loader "^6.8.1" - css-minimizer-webpack-plugin "^5.0.1" - cssnano "^6.1.2" - del "^6.1.1" - detect-port "^1.5.1" - escape-html "^1.0.3" - eta "^2.2.0" - eval "^0.1.8" - file-loader "^6.2.0" - fs-extra "^11.1.1" - html-minifier-terser "^7.2.0" - html-tags "^3.3.1" - html-webpack-plugin "^5.5.3" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.7.6" - p-map "^4.0.0" - postcss "^8.4.26" - postcss-loader "^7.3.3" - prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@6.0.0" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.3.4" - react-router-config "^5.1.1" - react-router-dom "^5.3.4" - rtl-detect "^1.0.4" - semver "^7.5.4" - serve-handler "^6.1.5" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.9" - tslib "^2.6.0" - update-notifier "^6.0.2" - url-loader "^4.1.1" - webpack "^5.88.1" - webpack-bundle-analyzer "^4.9.0" - webpack-dev-server "^4.15.1" - webpack-merge "^5.9.0" - webpackbar "^5.0.2" - -"@docusaurus/cssnano-preset@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz" - integrity sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ== - dependencies: - cssnano-preset-advanced "^6.1.2" - postcss "^8.4.38" - postcss-sort-media-queries "^5.2.0" - tslib "^2.6.0" - -"@docusaurus/logger@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.4.0.tgz" - integrity sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q== - dependencies: - chalk "^4.1.2" - tslib "^2.6.0" - -"@docusaurus/mdx-loader@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz" - integrity sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw== - dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - "@mdx-js/mdx" "^3.0.0" - "@slorber/remark-comment" "^1.0.0" - escape-html "^1.0.3" - estree-util-value-to-estree "^3.0.1" - file-loader "^6.2.0" - fs-extra "^11.1.1" - image-size "^1.0.2" - mdast-util-mdx "^3.0.0" - mdast-util-to-string "^4.0.0" - rehype-raw "^7.0.0" - remark-directive "^3.0.0" - remark-emoji "^4.0.0" - remark-frontmatter "^5.0.0" - remark-gfm "^4.0.0" - stringify-object "^3.3.0" - tslib "^2.6.0" - unified "^11.0.3" - unist-util-visit "^5.0.0" - url-loader "^4.1.1" - vfile "^6.0.1" - webpack "^5.88.1" - -"@docusaurus/module-type-aliases@3.4.0", "@docusaurus/module-type-aliases@^3.1.1": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz" - integrity sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw== - dependencies: - "@docusaurus/types" "3.4.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@6.0.0" - -"@docusaurus/plugin-client-redirects@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.4.0.tgz" - integrity sha512-Pr8kyh/+OsmYCvdZhc60jy/FnrY6flD2TEAhl4rJxeVFxnvvRgEhoaIVX8q9MuJmaQoh6frPk94pjs7/6YgBDQ== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - eta "^2.2.0" - fs-extra "^11.1.1" - lodash "^4.17.21" - tslib "^2.6.0" - -"@docusaurus/plugin-content-blog@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz" - integrity sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - cheerio "^1.0.0-rc.12" - feed "^4.2.2" - fs-extra "^11.1.1" - lodash "^4.17.21" - reading-time "^1.5.0" - srcset "^4.0.0" - tslib "^2.6.0" - unist-util-visit "^5.0.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-docs@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz" - integrity sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/module-type-aliases" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - "@types/react-router-config" "^5.0.7" - combine-promises "^1.1.0" - fs-extra "^11.1.1" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-pages@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz" - integrity sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - fs-extra "^11.1.1" - tslib "^2.6.0" - webpack "^5.88.1" - -"@docusaurus/plugin-debug@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz" - integrity sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - fs-extra "^11.1.1" - react-json-view-lite "^1.2.0" - tslib "^2.6.0" - -"@docusaurus/plugin-google-analytics@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz" - integrity sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - tslib "^2.6.0" - -"@docusaurus/plugin-google-gtag@3.4.0", "@docusaurus/plugin-google-gtag@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz" - integrity sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - "@types/gtag.js" "^0.0.12" - tslib "^2.6.0" - -"@docusaurus/plugin-google-tag-manager@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz" - integrity sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - tslib "^2.6.0" - -"@docusaurus/plugin-sitemap@3.4.0", "@docusaurus/plugin-sitemap@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz" - integrity sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - fs-extra "^11.1.1" - sitemap "^7.1.1" - tslib "^2.6.0" - -"@docusaurus/preset-classic@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz" - integrity sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/plugin-content-blog" "3.4.0" - "@docusaurus/plugin-content-docs" "3.4.0" - "@docusaurus/plugin-content-pages" "3.4.0" - "@docusaurus/plugin-debug" "3.4.0" - "@docusaurus/plugin-google-analytics" "3.4.0" - "@docusaurus/plugin-google-gtag" "3.4.0" - "@docusaurus/plugin-google-tag-manager" "3.4.0" - "@docusaurus/plugin-sitemap" "3.4.0" - "@docusaurus/theme-classic" "3.4.0" - "@docusaurus/theme-common" "3.4.0" - "@docusaurus/theme-search-algolia" "3.4.0" - "@docusaurus/types" "3.4.0" - -"@docusaurus/remark-plugin-npm2yarn@^3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-3.1.1.tgz" - integrity sha512-3dbQqXIOPIM6EYASWFodG+Ha5i8YGTPKukPYjupQeRzBGWXzunsr1z8voOjm+ljxSgRtgyZ7+q9tlpmYFi7x9A== - dependencies: - mdast-util-mdx "^3.0.0" - npm-to-yarn "^2.0.0" - tslib "^2.6.0" - unified "^11.0.3" - unist-util-visit "^5.0.0" - -"@docusaurus/theme-classic@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz" - integrity sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/module-type-aliases" "3.4.0" - "@docusaurus/plugin-content-blog" "3.4.0" - "@docusaurus/plugin-content-docs" "3.4.0" - "@docusaurus/plugin-content-pages" "3.4.0" - "@docusaurus/theme-common" "3.4.0" - "@docusaurus/theme-translations" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - "@mdx-js/react" "^3.0.0" - clsx "^2.0.0" - copy-text-to-clipboard "^3.2.0" - infima "0.2.0-alpha.43" - lodash "^4.17.21" - nprogress "^0.2.0" - postcss "^8.4.26" - prism-react-renderer "^2.3.0" - prismjs "^1.29.0" - react-router-dom "^5.3.4" - rtlcss "^4.1.0" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-common@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz" - integrity sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA== - dependencies: - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/module-type-aliases" "3.4.0" - "@docusaurus/plugin-content-blog" "3.4.0" - "@docusaurus/plugin-content-docs" "3.4.0" - "@docusaurus/plugin-content-pages" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - clsx "^2.0.0" - parse-numeric-range "^1.3.0" - prism-react-renderer "^2.3.0" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-mermaid@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.4.0.tgz" - integrity sha512-3w5QW0HEZ2O6x2w6lU3ZvOe1gNXP2HIoKDMJBil1VmLBc9PmpAG17VmfhI/p3L2etNmOiVs5GgniUqvn8AFEGQ== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/module-type-aliases" "3.4.0" - "@docusaurus/theme-common" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - mermaid "^10.4.0" - tslib "^2.6.0" - -"@docusaurus/theme-search-algolia@3.4.0", "@docusaurus/theme-search-algolia@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz" - integrity sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q== - dependencies: - "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/plugin-content-docs" "3.4.0" - "@docusaurus/theme-common" "3.4.0" - "@docusaurus/theme-translations" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - algoliasearch "^4.18.0" - algoliasearch-helper "^3.13.3" - clsx "^2.0.0" - eta "^2.2.0" - fs-extra "^11.1.1" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-translations@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz" - integrity sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg== - dependencies: - fs-extra "^11.1.1" - tslib "^2.6.0" - -"@docusaurus/tsconfig@^3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.1.1.tgz" - integrity sha512-FTBuY3KvaHfMVBgvlPmDQ+KS9Q/bYtVftq2ugou3PgBDJoQmw2aUZ4Sg15HKqLGbfIkxoy9t6cqE4Yw1Ta8Q1A== - -"@docusaurus/types@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz" - integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A== - dependencies: - "@mdx-js/mdx" "^3.0.0" - "@types/history" "^4.7.11" - "@types/react" "*" - commander "^5.1.0" - joi "^17.9.2" - react-helmet-async "^1.3.0" - utility-types "^3.10.0" - webpack "^5.88.1" - webpack-merge "^5.9.0" - -"@docusaurus/utils-common@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz" - integrity sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ== - dependencies: - tslib "^2.6.0" - -"@docusaurus/utils-validation@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz" - integrity sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g== - dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - fs-extra "^11.2.0" - joi "^17.9.2" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - -"@docusaurus/utils@3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz" - integrity sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g== - dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@svgr/webpack" "^8.1.0" - escape-string-regexp "^4.0.0" - file-loader "^6.2.0" - fs-extra "^11.1.1" - github-slugger "^1.5.0" - globby "^11.1.0" - gray-matter "^4.0.3" - jiti "^1.20.0" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - prompts "^2.4.2" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.6.0" - url-loader "^4.1.1" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@emotion/is-prop-valid@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz" - integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== - dependencies: - "@emotion/memoize" "^0.8.1" - -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - -"@emotion/unitless@0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" - integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== - -"@fortawesome/fontawesome-common-types@6.5.2": - version "6.5.2" - resolved "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz" - integrity sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw== - -"@fortawesome/fontawesome-svg-core@^6.5.2": - version "6.5.2" - resolved "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz" - integrity sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw== - dependencies: - "@fortawesome/fontawesome-common-types" "6.5.2" - -"@fortawesome/free-solid-svg-icons@^6.5.2": - version "6.5.2" - resolved "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz" - integrity sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw== - dependencies: - "@fortawesome/fontawesome-common-types" "6.5.2" - -"@fortawesome/react-fontawesome@^0.2.2": - version "0.2.2" - resolved "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz" - integrity sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g== - dependencies: - prop-types "^15.8.1" - -"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": - version "9.3.0" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - 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" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": - 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== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/remapping@^2.3.5": - version "2.3.5" - resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" - integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.5" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== - -"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.31" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" - integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - -"@mdx-js/mdx@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz" - integrity sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw== - dependencies: - "@types/estree" "^1.0.0" - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdx" "^2.0.0" - collapse-white-space "^2.0.0" - devlop "^1.0.0" - estree-util-build-jsx "^3.0.0" - estree-util-is-identifier-name "^3.0.0" - estree-util-to-js "^2.0.0" - estree-walker "^3.0.0" - hast-util-to-estree "^3.0.0" - hast-util-to-jsx-runtime "^2.0.0" - markdown-extensions "^2.0.0" - periscopic "^3.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" - -"@mdx-js/react@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.0.tgz" - integrity sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ== - dependencies: - "@types/mdx" "^2.0.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pnpm/config.env-replace@^1.1.0": - 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== - -"@pnpm/network.ca-file@^1.0.1": - 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== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^2.1.0": - version "2.2.2" - resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz" - integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== - dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.24" - resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz" - integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== - -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sindresorhus/is@^4.6.0": - version "4.6.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - -"@sindresorhus/is@^5.2.0": - version "5.6.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz" - integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== - -"@slorber/remark-comment@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz" - integrity sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.1.0" - micromark-util-symbol "^1.0.1" - -"@svgr/babel-plugin-add-jsx-attribute@8.0.0": - 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== - -"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": - 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== - -"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": - 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== - -"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": - 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== - -"@svgr/babel-plugin-svg-dynamic-title@8.0.0": - 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== - -"@svgr/babel-plugin-svg-em-dimensions@8.0.0": - 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== - -"@svgr/babel-plugin-transform-react-native-svg@8.1.0": - 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== - -"@svgr/babel-plugin-transform-svg-component@8.0.0": - 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== - -"@svgr/babel-preset@8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz" - integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== - 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" - -"@svgr/core@8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" - integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== - 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" - -"@svgr/hast-util-to-babel-ast@8.0.0": - 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== - dependencies: - "@babel/types" "^7.21.3" - entities "^4.4.0" - -"@svgr/plugin-jsx@8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" - integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== - 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" - -"@svgr/plugin-svgo@8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz" - integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== - dependencies: - cosmiconfig "^8.1.3" - deepmerge "^4.3.1" - svgo "^3.0.2" - -"@svgr/webpack@^8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz" - integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== - 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" - -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/acorn@^4.0.0": - version "4.0.6" - resolved "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz" - integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== - dependencies: - "@types/estree" "*" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.13" - resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz" - integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - 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== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/d3-scale-chromatic@^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" - integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== - -"@types/d3-scale@^4.0.3": - version "4.0.9" - resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz" - integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== - dependencies: - "@types/d3-time" "*" - -"@types/d3-time@*": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz" - integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== - -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - -"@types/eslint-scope@^3.7.7": - 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== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@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== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree-jsx@^1.0.0": - version "1.0.4" - resolved "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.4.tgz" - integrity sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ== - dependencies: - "@types/estree" "*" - -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.8": - version "1.0.8" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.36" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz" - integrity sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.25" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz" - integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "^1" - -"@types/gtag.js@^0.0.12": - version "0.0.12" - resolved "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz" - integrity sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== - -"@types/hast@^2.0.0": - version "2.3.10" - resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz" - integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== - dependencies: - "@types/unist" "^2" - -"@types/hast@^3.0.0": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/history@^4.7.11": - version "4.7.11" - resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" - integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-cache-semantics@^4.0.2": - 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== - -"@types/http-errors@*": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== - -"@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/mdast@^3.0.0": - version "3.0.15" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz" - integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== - dependencies: - "@types/unist" "^2" - -"@types/mdast@^4.0.0", "@types/mdast@^4.0.2": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz" - integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== - dependencies: - "@types/unist" "*" - -"@types/mdx@^2.0.0": - version "2.0.11" - resolved "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz" - integrity sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/ms@*": - version "0.7.34" - resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz" - integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== - -"@types/node-forge@^1.3.0": - version "1.3.14" - resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz" - integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "20.5.3" - resolved "https://registry.npmjs.org/@types/node/-/node-20.5.3.tgz" - integrity sha512-ITI7rbWczR8a/S6qjAW7DMqxqFMjjTo61qZVWJ1ubPvbIQsL5D/TvwjYEalM8Kthpe3hTzOGrF2TGbAu2uyqeA== - -"@types/node@^17.0.5": - version "17.0.45" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prismjs@^1.26.0": - version "1.26.3" - resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz" - integrity sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw== - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/react-router-config@*": - version "5.0.7" - resolved "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz" - integrity sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "^5.1.0" - -"@types/react-router-config@^5.0.7": - version "5.0.11" - resolved "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz" - integrity sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "^5.1.0" - -"@types/react-router-dom@*": - version "5.3.3" - resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" - integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*", "@types/react-router@^5.1.0": - version "5.1.20" - resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz" - integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - -"@types/react@*", "@types/react@16": - version "16.14.60" - resolved "https://registry.npmjs.org/@types/react/-/react-16.14.60.tgz" - integrity sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "^0.16" - csstype "^3.0.2" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/sax@^1.2.1": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz" - integrity sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw== - dependencies: - "@types/node" "*" - -"@types/scheduler@^0.16": - version "0.16.8" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - -"@types/send@*", "@types/send@<1": - version "0.17.1" - resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.1": - 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== - dependencies: - "@types/express" "*" - -"@types/serve-static@^1", "@types/serve-static@^1.13.10": - version "1.15.10" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz" - integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "<1" - -"@types/sockjs@^0.3.33": - 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== - dependencies: - "@types/node" "*" - -"@types/stylis@4.2.0": - version "4.2.0" - resolved "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz" - integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== - -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz" - integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== - -"@types/unist@^2": - version "2.0.10" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== - -"@types/unist@^2.0.0": - version "2.0.11" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" - integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== - -"@types/ws@^8.5.5": - version "8.18.1" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz" - integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== - dependencies: - "@types/yargs-parser" "*" - -"@ungap/structured-clone@^1.0.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" - integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - -"@webassemblyjs/floating-point-hex-parser@1.13.2": - 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== - -"@webassemblyjs/helper-api-error@1.13.2": - 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== - -"@webassemblyjs/helper-buffer@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" - integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== - -"@webassemblyjs/helper-numbers@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" - integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.13.2" - "@webassemblyjs/helper-api-error" "1.13.2" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.13.2": - 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== - -"@webassemblyjs/helper-wasm-section@1.14.1": - 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== - 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" - -"@webassemblyjs/ieee754@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" - integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" - integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.13.2": - version "1.13.2" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" - integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== - -"@webassemblyjs/wasm-edit@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" - integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== - 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" - -"@webassemblyjs/wasm-gen@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" - integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== - 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" - -"@webassemblyjs/wasm-opt@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" - integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" - integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== - 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" - -"@webassemblyjs/wast-printer@1.14.1": - 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== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - 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== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-phases@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz" - integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== - -acorn-jsx@^5.0.0: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.0: - version "8.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.0.0, acorn@^8.0.4, acorn@^8.15.0: - version "8.15.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - -address@^1.0.1, address@^1.1.2: - version "1.2.2" - resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.2, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -algoliasearch-helper@^3.13.3: - version "3.16.2" - resolved "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.16.2.tgz" - integrity sha512-Yl/Gu5Cq4Z5s/AJ0jR37OPI1H3+z7PHz657ibyaXgMOaWvPlZ3OACN13N+7HCLPUlB0BN+8BtmrG/CqTilowBA== - dependencies: - "@algolia/events" "^4.0.1" - -algoliasearch@^4.18.0: - version "4.22.1" - resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz" - integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== - dependencies: - "@algolia/cache-browser-local-storage" "4.22.1" - "@algolia/cache-common" "4.22.1" - "@algolia/cache-in-memory" "4.22.1" - "@algolia/client-account" "4.22.1" - "@algolia/client-analytics" "4.22.1" - "@algolia/client-common" "4.22.1" - "@algolia/client-personalization" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/logger-console" "4.22.1" - "@algolia/requester-browser-xhr" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/requester-node-http" "4.22.1" - "@algolia/transporter" "4.22.1" - -algoliasearch@^4.19.1: - version "4.19.1" - resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.19.1.tgz" - integrity sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g== - dependencies: - "@algolia/cache-browser-local-storage" "4.19.1" - "@algolia/cache-common" "4.19.1" - "@algolia/cache-in-memory" "4.19.1" - "@algolia/client-account" "4.19.1" - "@algolia/client-analytics" "4.19.1" - "@algolia/client-common" "4.19.1" - "@algolia/client-personalization" "4.19.1" - "@algolia/client-search" "4.19.1" - "@algolia/logger-common" "4.19.1" - "@algolia/logger-console" "4.19.1" - "@algolia/requester-browser-xhr" "4.19.1" - "@algolia/requester-common" "4.19.1" - "@algolia/requester-node-http" "4.19.1" - "@algolia/transporter" "4.19.1" - -ansi-align@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-html-community@^0.0.8: - 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== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.0: - version "5.0.2" - resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -astring@^1.8.0: - version "1.8.6" - resolved "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz" - integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -autoprefixer@^10.4.14, autoprefixer@^10.4.19: - version "10.4.21" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz" - integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== - 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" - -babel-loader@^9.1.3: - version "9.2.1" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz" - integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.4.14: - 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== - dependencies: - "@babel/compat-data" "^7.27.7" - "@babel/helper-define-polyfill-provider" "^0.6.5" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.13.0: - 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== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - core-js-compat "^3.43.0" - -babel-plugin-polyfill-regenerator@^0.6.5: - 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== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - -bail@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -baseline-browser-mapping@^2.8.19: - version "2.8.21" - resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz" - integrity sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q== - -batch@0.6.1: - 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== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -body-parser@1.20.3: - version "1.20.3" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== - 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.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.3.0" - resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz" - integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -boxen@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz" - integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== - dependencies: - ansi-align "^3.0.1" - camelcase "^6.2.0" - chalk "^4.1.2" - cli-boxes "^3.0.0" - string-width "^5.0.1" - type-fest "^2.5.0" - widest-line "^4.0.1" - wrap-ansi "^8.0.1" - -boxen@^7.0.0: - version "7.1.1" - resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz" - integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== - dependencies: - ansi-align "^3.0.1" - camelcase "^7.0.1" - chalk "^5.2.0" - cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.26.3: - version "4.27.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz" - integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== - dependencies: - baseline-browser-mapping "^2.8.19" - caniuse-lite "^1.0.30001751" - electron-to-chromium "^1.5.238" - node-releases "^2.0.26" - update-browserslist-db "^1.1.4" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacheable-lookup@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz" - integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== - -cacheable-request@^10.2.8: - version "10.2.14" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz" - integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== - 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" - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - 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== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-bound@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz" - integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== - -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - -caniuse-api@^3.0.0: - 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== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001751: - version "1.0.30001751" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz" - integrity sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw== - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.1, chalk@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities-legacy@^3.0.0: - 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== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-entities@^2.0.0: - 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== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -character-reference-invalid@^2.0.0: - 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== - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.12: - version "1.0.0-rc.12" - resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@^3.4.2, chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== - -clean-css@^5.2.2: - version "5.3.2" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" - integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== - dependencies: - source-map "~0.6.0" - -clean-css@^5.3.2, clean-css@~5.3.2: - version "5.3.3" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - -cli-table3@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" - integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clsx@^2.0.0, clsx@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== - -collapse-white-space@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz" - integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colord@^2.9.3: - version "2.9.3" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.10: - version "2.0.20" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -combine-promises@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz" - integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== - -comma-separated-tokens@^1.0.0: - version "1.0.8" - resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" - integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== - -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - -commander@7, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.20.0: - 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== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -common-path-prefix@^3.0.0: - 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== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -config-chain@^1.1.11: - 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== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz" - integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== - dependencies: - dot-prop "^6.0.1" - graceful-fs "^4.2.6" - unique-string "^3.0.0" - write-file-atomic "^3.0.3" - xdg-basedir "^5.0.1" - -connect-history-api-fallback@^2.0.0: - 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== - -consola@^2.15.3: - version "2.15.3" - resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" - integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - 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== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== - -copy-text-to-clipboard@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz" - integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== - -copy-webpack-plugin@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz" - integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== - dependencies: - fast-glob "^3.2.11" - glob-parent "^6.0.1" - globby "^13.1.1" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -core-js-compat@^3.43.0: - 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== - dependencies: - browserslist "^4.26.3" - -core-js-pure@^3.43.0: - version "3.46.0" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz" - integrity sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw== - -core-js@^3.31.1: - version "3.35.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz" - integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cose-base@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz" - integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== - dependencies: - layout-base "^1.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - 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" - -cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: - version "8.3.6" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz" - integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== - dependencies: - type-fest "^1.0.1" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-declaration-sorter@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz" - integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== - -css-loader@^6.8.1: - version "6.11.0" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz" - integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== - 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" - -css-minimizer-webpack-plugin@^5.0.1: - 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== - 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" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-to-react-native@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz" - integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - -css-tree@^2.3.1: - 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== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-tree@~2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - dependencies: - mdn-data "2.0.28" - source-map-js "^1.0.1" - -css-what@^6.0.1, css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-advanced@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz" - integrity sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ== - dependencies: - autoprefixer "^10.4.19" - browserslist "^4.23.0" - cssnano-preset-default "^6.1.2" - postcss-discard-unused "^6.0.5" - postcss-merge-idents "^6.0.3" - postcss-reduce-idents "^6.0.3" - postcss-zindex "^6.0.2" - -cssnano-preset-default@^6.1.2: - 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== - 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" - -cssnano-utils@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz" - integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== - -cssnano@^6.0.1, cssnano@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz" - integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== - dependencies: - cssnano-preset-default "^6.1.2" - lilconfig "^3.1.1" - -csso@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" - integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - dependencies: - css-tree "~2.2.0" - -csstype@3.1.2, csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -cytoscape-cose-bilkent@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz" - integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== - dependencies: - cose-base "^1.0.0" - -cytoscape@^3.28.1: - version "3.33.1" - resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz" - integrity sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ== - -"d3-array@1 - 2": - version "2.12.1" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz" - integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== - dependencies: - internmap "^1.0.0" - -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== - dependencies: - internmap "1 - 2" - -d3-axis@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" - integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== - -d3-brush@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" - integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "3" - d3-transition "3" - -d3-chord@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" - integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== - dependencies: - d3-path "1 - 3" - -"d3-color@1 - 3", d3-color@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" - integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== - -d3-contour@4: - version "4.0.2" - resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz" - integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== - dependencies: - d3-array "^3.2.0" - -d3-delaunay@6: - version "6.0.4" - resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" - integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== - dependencies: - delaunator "5" - -"d3-dispatch@1 - 3", d3-dispatch@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" - integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== - -"d3-drag@2 - 3", d3-drag@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" - integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== - dependencies: - d3-dispatch "1 - 3" - d3-selection "3" - -"d3-dsv@1 - 3", d3-dsv@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" - integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== - dependencies: - commander "7" - iconv-lite "0.6" - rw "1" - -"d3-ease@1 - 3", d3-ease@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" - integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== - -d3-fetch@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" - integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== - dependencies: - d3-dsv "1 - 3" - -d3-force@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" - integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== - dependencies: - d3-dispatch "1 - 3" - d3-quadtree "1 - 3" - d3-timer "1 - 3" - -"d3-format@1 - 3", d3-format@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" - integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== - -d3-geo@3: - version "3.1.1" - resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz" - integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== - dependencies: - d3-array "2.5.0 - 3" - -d3-hierarchy@3: - version "3.1.2" - resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" - integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== - -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" - integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== - dependencies: - d3-color "1 - 3" - -d3-path@1: - version "1.0.9" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" - integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== - -d3-polygon@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" - integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== - -"d3-quadtree@1 - 3", d3-quadtree@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" - integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== - -d3-random@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" - integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== - -d3-sankey@^0.12.3: - version "0.12.3" - resolved "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz" - integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== - dependencies: - d3-array "1 - 2" - d3-shape "^1.2.0" - -d3-scale-chromatic@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" - integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== - dependencies: - d3-color "1 - 3" - d3-interpolate "1 - 3" - -d3-scale@4: - version "4.0.2" - resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" - integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== - dependencies: - d3-array "2.10.0 - 3" - d3-format "1 - 3" - d3-interpolate "1.2.0 - 3" - d3-time "2.1.1 - 3" - d3-time-format "2 - 4" - -"d3-selection@2 - 3", d3-selection@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" - integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== - -d3-shape@3: - version "3.2.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" - integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== - dependencies: - d3-path "^3.1.0" - -d3-shape@^1.2.0: - version "1.3.7" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -"d3-time-format@2 - 4", d3-time-format@4: - version "4.1.0" - resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" - integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== - dependencies: - d3-time "1 - 3" - -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" - integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== - dependencies: - d3-array "2 - 3" - -"d3-timer@1 - 3", d3-timer@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" - integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== - -"d3-transition@2 - 3", d3-transition@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" - integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== - dependencies: - d3-color "1 - 3" - d3-dispatch "1 - 3" - d3-ease "1 - 3" - d3-interpolate "1 - 3" - d3-timer "1 - 3" - -d3-zoom@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" - integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "2 - 3" - d3-transition "2 - 3" - -d3@^7.4.0, d3@^7.8.2: - version "7.9.0" - resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" - integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== - dependencies: - d3-array "3" - d3-axis "3" - d3-brush "3" - d3-chord "3" - d3-color "3" - d3-contour "4" - d3-delaunay "6" - d3-dispatch "3" - d3-drag "3" - d3-dsv "3" - d3-ease "3" - d3-fetch "3" - d3-force "3" - d3-format "3" - d3-geo "3" - d3-hierarchy "3" - d3-interpolate "3" - d3-path "3" - d3-polygon "3" - d3-quadtree "3" - d3-random "3" - d3-scale "4" - d3-scale-chromatic "3" - d3-selection "3" - d3-shape "3" - d3-time "3" - d3-time-format "4" - d3-timer "3" - d3-transition "3" - d3-zoom "3" - -dagre-d3-es@7.0.10: - version "7.0.10" - resolved "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz" - integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== - dependencies: - d3 "^7.8.2" - lodash-es "^4.17.21" - -dayjs@^1.11.7: - version "1.11.19" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz" - integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== - -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@2.6.9, debug@^2.6.0: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.1: - version "4.4.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - -decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== - dependencies: - character-entities "^2.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deepmerge@^4.2.2, deepmerge@^4.3.1: - 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== - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.4: - version "1.2.0" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -del@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delaunator@5: - version "5.0.1" - resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz" - integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== - dependencies: - robust-predicates "^3.0.2" - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detect-port@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - dependencies: - address "^1.0.1" - debug "4" - -devlop@^1.0.0, devlop@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -diff@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-packet@^5.2.2: - version "5.6.0" - resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz" - integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -"dompurify@^3.0.5 <3.1.7": - version "3.1.6" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz" - integrity sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ== - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.5.238: - version "1.5.243" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.243.tgz" - integrity sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g== - -elkjs@^0.9.0: - version "0.9.3" - resolved "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz" - integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojilib@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" - integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -emoticon@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz" - integrity sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -enhanced-resolve@^5.17.3: - version "5.18.3" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz" - integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz" - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - 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== - dependencies: - es-errors "^1.3.0" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-goat@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz" - integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^5.0.0: - 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== - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-util-attach-comments@^3.0.0: - 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== - dependencies: - "@types/estree" "^1.0.0" - -estree-util-build-jsx@^3.0.0: - 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== - dependencies: - "@types/estree-jsx" "^1.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - estree-walker "^3.0.0" - -estree-util-is-identifier-name@^3.0.0: - 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== - -estree-util-to-js@^2.0.0: - 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== - dependencies: - "@types/estree-jsx" "^1.0.0" - astring "^1.8.0" - source-map "^0.7.0" - -estree-util-value-to-estree@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz" - integrity sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA== - dependencies: - "@types/estree" "^1.0.0" - is-plain-obj "^4.0.0" - -estree-util-visit@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz" - integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/unist" "^3.0.0" - -estree-walker@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" - integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== - dependencies: - "@types/estree" "^1.0.0" - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eta@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz" - integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eval@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz" - integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== - dependencies: - "@types/node" "*" - require-like ">= 0.1.1" - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -express@^4.17.3: - version "4.21.2" - resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" - integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== - 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.13.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" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - 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== - -fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.1" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== - 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" - -fast-json-stable-stringify@^2.0.0: - 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== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -fault@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - -fault@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz" - integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== - dependencies: - format "^0.2.0" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -feed@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz" - integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== - dependencies: - xml-js "^1.6.11" - -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== - 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.1" - unpipe "~1.0.0" - -find-cache-dir@^4.0.0: - 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== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -form-data-encoder@^2.1.2: - 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== - -format@^0.2.0: - version "0.2.2" - resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" - integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.2.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.1, function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gensync@^1.0.0-beta.2: - 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== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - 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" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -github-slugger@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" - integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - 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== - -glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" - integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== - dependencies: - ini "2.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - 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" - -globby@^13.1.1: - version "13.2.2" - resolved "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -got@^12.1.0: - version "12.6.1" - resolved "https://registry.npmjs.org/got/-/got-12.6.1.tgz" - integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== - 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" - -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - 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== - -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-yarn@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz" - integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hast-util-from-parse5@^8.0.0: - version "8.0.1" - resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz" - integrity sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - hastscript "^8.0.0" - property-information "^6.0.0" - vfile "^6.0.0" - vfile-location "^5.0.0" - web-namespaces "^2.0.0" - -hast-util-parse-selector@^2.0.0: - version "2.2.5" - resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" - integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== - -hast-util-parse-selector@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz" - integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-raw@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz" - integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== - 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" - -hast-util-to-estree@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz" - integrity sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== - 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 "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^0.4.0" - unist-util-position "^5.0.0" - zwitch "^2.0.0" - -hast-util-to-jsx-runtime@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz" - integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== - 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 "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^1.0.0" - unist-util-position "^5.0.0" - vfile-message "^4.0.0" - -hast-util-to-parse5@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz" - integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== - 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" - -hast-util-whitespace@^3.0.0: - 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== - dependencies: - "@types/hast" "^3.0.0" - -hastscript@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" - integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== - dependencies: - "@types/hast" "^2.0.0" - comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.0.0" - property-information "^5.0.0" - space-separated-tokens "^1.0.0" - -hastscript@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz" - integrity sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== - dependencies: - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - hast-util-parse-selector "^4.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -highlight.js@^10.4.1, highlight.js@~10.7.0: - version "10.7.3" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hoist-non-react-statics@^3.1.0: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^2.3.2: - version "2.4.0" - resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" - integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== - -html-escaper@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-minifier-terser@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz" - integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== - dependencies: - camel-case "^4.1.2" - clean-css "~5.3.2" - commander "^10.0.0" - entities "^4.4.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.15.1" - -html-tags@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== - -html-void-elements@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz" - integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== - -html-webpack-plugin@^5.5.3: - version "5.6.0" - resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy-middleware@^2.0.3: - 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== - 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" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http2-wrapper@^2.1.10: - version "2.2.1" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz" - integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.2.4" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== - dependencies: - queue "6.0.2" - -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - -import-fresh@^3.1.0, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infima@0.2.0-alpha.43: - version "0.2.0-alpha.43" - resolved "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz" - integrity sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inline-style-parser@0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" - integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== - -inline-style-parser@0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz" - integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== - -"internmap@1 - 2": - version "2.0.3" - resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" - integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== - -internmap@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" - integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ipaddr.js@1.9.1: - 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== - -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphabetical@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" - integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-alphanumerical@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz" - integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-ci@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.16.1: - version "2.16.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-decimal@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz" - integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - 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== - -is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-hexadecimal@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz" - integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-npm@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz" - integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2: - 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== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== - -is-plain-object@^2.0.4: - 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== - dependencies: - isobject "^3.0.1" - -is-reference@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz" - integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== - dependencies: - "@types/estree" "*" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz" - integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - 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" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.4.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jiti@^1.20.0: - version "1.21.0" - resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -joi@^17.9.2: - version "17.12.1" - resolved "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz" - integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== - dependencies: - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^3.0.2, jsesc@~3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - 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== - -json-schema-traverse@^0.4.1: - 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== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json5@^2.1.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -katex@^0.16.9: - version "0.16.25" - resolved "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz" - integrity sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q== - dependencies: - commander "^8.3.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -khroma@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz" - integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kleur@^4.0.3: - version "4.1.5" - resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -latest-version@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz" - integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== - dependencies: - package-json "^8.1.0" - -launch-editor@^2.6.0: - version "2.12.0" - resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz" - integrity sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg== - dependencies: - picocolors "^1.1.1" - shell-quote "^1.8.3" - -layout-base@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz" - integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -lilconfig@^3.1.1: - version "3.1.2" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz" - integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - 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== - dependencies: - p-locate "^6.0.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -longest-streak@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz" - integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lowlight@^1.17.0: - version "1.20.0" - resolved "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz" - integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== - dependencies: - fault "^1.0.0" - highlight.js "~10.7.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -markdown-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz" - integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== - -markdown-table@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz" - integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -mdast-util-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz" - integrity sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz" - integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== - dependencies: - "@types/mdast" "^4.0.0" - escape-string-regexp "^5.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-from-markdown@^1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz" - integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - decode-named-character-reference "^1.0.0" - mdast-util-to-string "^3.1.0" - micromark "^3.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-decode-string "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" - -mdast-util-from-markdown@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz" - integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - mdast-util-to-string "^4.0.0" - micromark "^4.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-decode-string "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-stringify-position "^4.0.0" - -mdast-util-frontmatter@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz" - integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - escape-string-regexp "^5.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-extension-frontmatter "^2.0.0" - -mdast-util-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz" - integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== - dependencies: - "@types/mdast" "^4.0.0" - ccount "^2.0.0" - devlop "^1.0.0" - mdast-util-find-and-replace "^3.0.0" - micromark-util-character "^2.0.0" - -mdast-util-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz" - integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - -mdast-util-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz" - integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz" - integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - markdown-table "^3.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-task-list-item@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz" - integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz" - integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-gfm-autolink-literal "^2.0.0" - mdast-util-gfm-footnote "^2.0.0" - mdast-util-gfm-strikethrough "^2.0.0" - mdast-util-gfm-table "^2.0.0" - mdast-util-gfm-task-list-item "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-expression@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz" - integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-jsx@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz" - integrity sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-remove-position "^5.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -mdast-util-mdx@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz" - integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdxjs-esm@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz" - integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-phrasing@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz" - integrity sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA== - dependencies: - "@types/mdast" "^4.0.0" - unist-util-is "^6.0.0" - -mdast-util-to-hast@^13.0.0: - version "13.1.0" - resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz" - integrity sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -mdast-util-to-markdown@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz" - integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - longest-streak "^3.0.0" - mdast-util-phrasing "^4.0.0" - mdast-util-to-string "^4.0.0" - micromark-util-decode-string "^2.0.0" - unist-util-visit "^5.0.0" - zwitch "^2.0.0" - -mdast-util-to-string@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz" - integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== - dependencies: - "@types/mdast" "^3.0.0" - -mdast-util-to-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz" - integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== - dependencies: - "@types/mdast" "^4.0.0" - -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.1.2, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -mermaid@^10.4.0: - version "10.9.4" - resolved "https://registry.npmjs.org/mermaid/-/mermaid-10.9.4.tgz" - integrity sha512-VIG2B0R9ydvkS+wShA8sXqkzfpYglM2Qwj7VyUeqzNVqSGPoP/tcaUr3ub4ESykv8eqQJn3p99bHNvYdg3gCHQ== - dependencies: - "@braintree/sanitize-url" "^6.0.1" - "@types/d3-scale" "^4.0.3" - "@types/d3-scale-chromatic" "^3.0.0" - cytoscape "^3.28.1" - cytoscape-cose-bilkent "^4.1.0" - d3 "^7.4.0" - d3-sankey "^0.12.3" - dagre-d3-es "7.0.10" - dayjs "^1.11.7" - dompurify "^3.0.5 <3.1.7" - elkjs "^0.9.0" - katex "^0.16.9" - khroma "^2.0.0" - lodash-es "^4.17.21" - mdast-util-from-markdown "^1.3.0" - non-layered-tidy-tree-layout "^2.0.2" - stylis "^4.1.3" - ts-dedent "^2.2.0" - uuid "^9.0.0" - web-worker "^1.2.0" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromark-core-commonmark@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz" - integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-factory-destination "^1.0.0" - micromark-factory-label "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-factory-title "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-html-tag-name "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - -micromark-core-commonmark@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz" - integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz" - integrity sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - parse-entities "^4.0.0" - -micromark-extension-frontmatter@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz" - integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== - dependencies: - fault "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz" - integrity sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz" - integrity sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg== - dependencies: - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz" - integrity sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz" - integrity sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-tagfilter@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz" - integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-gfm-task-list-item@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz" - integrity sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz" - integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== - dependencies: - micromark-extension-gfm-autolink-literal "^2.0.0" - micromark-extension-gfm-footnote "^2.0.0" - micromark-extension-gfm-strikethrough "^2.0.0" - micromark-extension-gfm-table "^2.0.0" - micromark-extension-gfm-tagfilter "^2.0.0" - micromark-extension-gfm-task-list-item "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-mdx-expression@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz" - integrity sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-factory-mdx-expression "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-mdx-jsx@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz" - integrity sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w== - dependencies: - "@types/acorn" "^4.0.0" - "@types/estree" "^1.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - micromark-factory-mdx-expression "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - vfile-message "^4.0.0" - -micromark-extension-mdx-md@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz" - integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-mdxjs-esm@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz" - integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-position-from-estree "^2.0.0" - vfile-message "^4.0.0" - -micromark-extension-mdxjs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz" - integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== - dependencies: - acorn "^8.0.0" - acorn-jsx "^5.0.0" - micromark-extension-mdx-expression "^3.0.0" - micromark-extension-mdx-jsx "^3.0.0" - micromark-extension-mdx-md "^2.0.0" - micromark-extension-mdxjs-esm "^3.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-destination@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz" - integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-destination@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz" - integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-label@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz" - integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - -micromark-factory-label@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz" - integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== - dependencies: - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-mdx-expression@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz" - integrity sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-position-from-estree "^2.0.0" - vfile-message "^4.0.0" - -micromark-factory-space@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz" - integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-space@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz" - integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-title@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz" - integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-title@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz" - integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-whitespace@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz" - integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-whitespace@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz" - integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-character@^1.0.0, micromark-util-character@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz" - integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-character@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz" - integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-chunked@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz" - integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== - dependencies: - micromark-util-symbol "^1.0.0" - -micromark-util-chunked@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz" - integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-classify-character@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz" - integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-classify-character@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz" - integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-combine-extensions@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz" - integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== - dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-combine-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz" - integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== - dependencies: - micromark-util-chunked "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-decode-numeric-character-reference@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz" - integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== - dependencies: - micromark-util-symbol "^1.0.0" - -micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz" - integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-decode-string@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz" - integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-symbol "^1.0.0" - -micromark-util-decode-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz" - integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz" - integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== - -micromark-util-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz" - integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== - -micromark-util-events-to-acorn@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz" - integrity sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== - dependencies: - "@types/acorn" "^4.0.0" - "@types/estree" "^1.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - estree-util-visit "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - vfile-message "^4.0.0" - -micromark-util-html-tag-name@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz" - integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== - -micromark-util-html-tag-name@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz" - integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== - -micromark-util-normalize-identifier@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz" - integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== - dependencies: - micromark-util-symbol "^1.0.0" - -micromark-util-normalize-identifier@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz" - integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-resolve-all@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz" - integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== - dependencies: - micromark-util-types "^1.0.0" - -micromark-util-resolve-all@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz" - integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== - dependencies: - micromark-util-types "^2.0.0" - -micromark-util-sanitize-uri@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz" - integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-symbol "^1.0.0" - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz" - integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-subtokenize@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz" - integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== - dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - -micromark-util-subtokenize@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz" - integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz" - integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== - -micromark-util-symbol@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz" - integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== - -micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz" - integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== - -micromark-util-types@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz" - integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== - -micromark@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz" - integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - micromark-core-commonmark "^1.0.1" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-combine-extensions "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-sanitize-uri "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - -micromark@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz" - integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" - -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^3.1.0: - 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== - -mimic-response@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz" - integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== - -mini-css-extract-plugin@^2.7.6: - 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== - dependencies: - schema-utils "^4.0.0" - tapable "^2.2.1" - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0: - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.3, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -nanoid@^3.3.11, nanoid@^3.3.6: - version "3.3.11" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-emoji@^2.1.0: - version "2.1.3" - resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz" - integrity sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA== - dependencies: - "@sindresorhus/is" "^4.6.0" - char-regex "^1.0.2" - emojilib "^2.4.0" - skin-tone "^2.0.0" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-releases@^2.0.26: - version "2.0.27" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz" - integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== - -non-layered-tidy-tree-layout@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz" - integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz" - integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-to-yarn@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.0.0.tgz" - integrity sha512-/IbjiJ7vqbxfxJxAZ+QI9CCRjnIbvGxn5KQcSY9xHh0lMKc/Sgqmm7yp7KPmd6TiTZX5/KiSBKlkGHo59ucZbg== - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" - integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0: - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.9, open@^8.4.0: - version "8.4.2" - resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^8.1.0: - version "8.1.1" - resolved "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz" - integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== - dependencies: - got "^12.1.0" - registry-auth-token "^5.0.1" - registry-url "^6.0.0" - semver "^7.3.7" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - 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== - dependencies: - callsites "^3.0.0" - -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-entities@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz" - integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== - dependencies: - "@types/unist" "^2.0.0" - character-entities "^2.0.0" - character-entities-legacy "^3.0.0" - character-reference-invalid "^2.0.0" - decode-named-character-reference "^1.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-numeric-range@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz" - integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.12: - version "0.1.12" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" - integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== - -path-to-regexp@3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" - integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -periscopic@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz" - integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^3.0.0" - is-reference "^3.0.0" - -picocolors@^1.0.0, picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -postcss-calc@^9.0.1: - version "9.0.1" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" - integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== - dependencies: - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - -postcss-colormin@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz" - integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - colord "^2.9.3" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz" - integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== - dependencies: - browserslist "^4.23.0" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz" - integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== - -postcss-discard-duplicates@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz" - integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== - -postcss-discard-empty@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz" - integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== - -postcss-discard-overridden@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz" - integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== - -postcss-discard-unused@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz" - integrity sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA== - dependencies: - postcss-selector-parser "^6.0.16" - -postcss-loader@^7.3.3: - version "7.3.4" - resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz" - integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== - dependencies: - cosmiconfig "^8.3.5" - jiti "^1.20.0" - semver "^7.5.4" - -postcss-merge-idents@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz" - integrity sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g== - dependencies: - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-merge-longhand@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz" - integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^6.1.1" - -postcss-merge-rules@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz" - integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - cssnano-utils "^4.0.2" - postcss-selector-parser "^6.0.16" - -postcss-minify-font-values@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz" - integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz" - integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== - dependencies: - colord "^2.9.3" - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz" - integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== - dependencies: - browserslist "^4.23.0" - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^6.0.4: - version "6.0.4" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz" - integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== - dependencies: - postcss-selector-parser "^6.0.16" - -postcss-modules-extract-imports@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== - -postcss-modules-local-by-default@^4.0.5: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz" - integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^7.0.0" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz" - integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== - dependencies: - postcss-selector-parser "^7.0.0" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-normalize-charset@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz" - integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== - -postcss-normalize-display-values@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz" - integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz" - integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz" - integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz" - integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz" - integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz" - integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== - dependencies: - browserslist "^4.23.0" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz" - integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz" - integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz" - integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== - dependencies: - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-reduce-idents@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz" - integrity sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz" - integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz" - integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: - version "6.1.0" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz" - integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^7.0.0: - 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== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-sort-media-queries@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz" - integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== - dependencies: - sort-css-media-queries "2.2.0" - -postcss-svgo@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz" - integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^3.2.0" - -postcss-unique-selectors@^6.0.4: - version "6.0.4" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz" - integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== - dependencies: - postcss-selector-parser "^6.0.16" - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss-zindex@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz" - integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== - -postcss@8.4.31: - version "8.4.31" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38: - version "8.5.6" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== - dependencies: - nanoid "^3.3.11" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -prism-react-renderer@^2.3.0, prism-react-renderer@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz" - integrity sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw== - dependencies: - "@types/prismjs" "^1.26.0" - clsx "^2.0.0" - -prismjs@^1.27.0, prismjs@^1.29.0: - version "1.29.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -prismjs@~1.27.0: - version "1.27.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prompts@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -property-information@^5.0.0: - version "5.6.0" - resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" - integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== - dependencies: - xtend "^4.0.0" - -property-information@^6.0.0: - version "6.4.1" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz" - integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -pupa@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz" - integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== - dependencies: - escape-goat "^4.0.0" - -qs@6.13.0: - version "6.13.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== - dependencies: - side-channel "^1.0.6" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue@6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-code-blocks@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/react-code-blocks/-/react-code-blocks-0.1.6.tgz" - integrity sha512-ENNuxG07yO+OuX1ChRje3ieefPRz6yrIpHmebQlaFQgzcAHbUfVeTINpOpoI9bSRSObeYo/OdHsporeToZ7fcg== - dependencies: - "@babel/runtime" "^7.10.4" - react-syntax-highlighter "^15.5.0" - styled-components "^6.1.0" - tslib "^2.6.0" - -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-fast-compare@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" - integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== - -react-helmet-async@*, react-helmet-async@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz" - integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== - dependencies: - "@babel/runtime" "^7.12.5" - invariant "^2.2.4" - prop-types "^15.7.2" - react-fast-compare "^3.2.0" - shallowequal "^1.1.0" - -react-icons@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz" - integrity sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw== - -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-json-view-lite@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.2.1.tgz" - integrity sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ== - -react-loadable-ssr-addon-v5-slorber@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz" - integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== - dependencies: - "@babel/runtime" "^7.10.3" - -"react-loadable@npm:@docusaurus/react-loadable@6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz" - integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== - dependencies: - "@types/react" "*" - -react-router-config@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz" - integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== - dependencies: - "@babel/runtime" "^7.1.2" - -react-router-dom@^5.3.4: - version "5.3.4" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" - integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.3.4" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.3.4, react-router@^5.3.4: - version "5.3.4" - resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" - integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-syntax-highlighter@^15.5.0: - version "15.5.0" - resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz" - integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== - dependencies: - "@babel/runtime" "^7.3.1" - highlight.js "^10.4.1" - lowlight "^1.17.0" - prismjs "^1.27.0" - refractor "^3.6.0" - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -readable-stream@^2.0.1: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reading-time@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz" - integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== - dependencies: - minimatch "^3.0.5" - -refractor@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz" - integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== - dependencies: - hastscript "^6.0.0" - parse-entities "^2.0.0" - prismjs "~1.27.0" - -regenerate-unicode-properties@^10.2.2: - 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== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regexpu-core@^6.3.1: - version "6.4.0" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz" - integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.2.2" - regjsgen "^0.8.0" - regjsparser "^0.13.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.2.1" - -registry-auth-token@^5.0.1: - version "5.0.2" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz" - integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== - dependencies: - "@pnpm/npm-conf" "^2.1.0" - -registry-url@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz" - integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== - dependencies: - rc "1.2.8" - -regjsgen@^0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz" - integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== - -regjsparser@^0.13.0: - version "0.13.0" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz" - integrity sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q== - dependencies: - jsesc "~3.1.0" - -rehype-raw@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz" - integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== - dependencies: - "@types/hast" "^3.0.0" - hast-util-raw "^9.0.0" - vfile "^6.0.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remark-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz" - integrity sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-directive "^3.0.0" - micromark-extension-directive "^3.0.0" - unified "^11.0.0" - -remark-emoji@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz" - integrity sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== - dependencies: - "@types/mdast" "^4.0.2" - emoticon "^4.0.1" - mdast-util-find-and-replace "^3.0.1" - node-emoji "^2.1.0" - unified "^11.0.4" - -remark-frontmatter@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz" - integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-frontmatter "^2.0.0" - micromark-extension-frontmatter "^2.0.0" - unified "^11.0.0" - -remark-gfm@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz" - integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-gfm "^3.0.0" - micromark-extension-gfm "^3.0.0" - remark-parse "^11.0.0" - remark-stringify "^11.0.0" - unified "^11.0.0" - -remark-mdx@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz" - integrity sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g== - dependencies: - mdast-util-mdx "^3.0.0" - micromark-extension-mdxjs "^3.0.0" - -remark-parse@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz" - integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - micromark-util-types "^2.0.0" - unified "^11.0.0" - -remark-rehype@^11.0.0: - version "11.1.0" - resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz" - integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - mdast-util-to-hast "^13.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -remark-stringify@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz" - integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-to-markdown "^2.0.0" - unified "^11.0.0" - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -"require-like@>= 0.1.1": - version "0.1.2" - resolved "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" - integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve@^1.1.6, resolve@^1.22.10: - version "1.22.11" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" - integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== - dependencies: - is-core-module "^2.16.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz" - integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== - dependencies: - lowercase-keys "^3.0.0" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -robust-predicates@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" - integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== - -rtl-detect@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz" - integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== - -rtlcss@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz" - integrity sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - postcss "^8.4.21" - strip-json-comments "^3.1.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rw@1: - version "1.3.3" - resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" - integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== - -sade@^1.7.3: - version "1.8.1" - resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^3.0.0: - 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== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.3.0, schema-utils@^4.3.3: - version "4.3.3" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz" - integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -search-insights@^2.15.0: - version "2.15.0" - resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.15.0.tgz" - integrity sha512-ch2sPCUDD4sbPQdknVl9ALSi9H7VyoeVbsxznYz6QV55jJ8CI3EtwpO1i84keN4+hF5IeHWIeGvc08530JkVXQ== - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz" - integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== - dependencies: - semver "^7.3.5" - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -send@0.19.0: - version "0.19.0" - resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-handler@^6.1.5: - version "6.1.6" - resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz" - integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - mime-types "2.1.18" - minimatch "3.1.2" - path-is-inside "1.0.2" - path-to-regexp "3.3.0" - range-parser "1.2.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - 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" - -serve-static@1.16.2: - version "1.16.2" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" - integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== - dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.19.0" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@1.1.0, shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.7.3, shell-quote@^1.8.3: - version "1.8.3" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz" - integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.0.6: - version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sitemap@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz" - integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== - dependencies: - "@types/node" "^17.0.5" - "@types/sax" "^1.2.1" - arg "^5.0.0" - sax "^1.2.4" - -skin-tone@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz" - integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== - dependencies: - unicode-emoji-modifier-base "^1.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -sort-css-media-queries@2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz" - integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== - -source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.0: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -srcset@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz" - integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -std-env@^3.0.1: - version "3.10.0" - resolved "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz" - integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-entities@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz" - integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" - integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.1: - 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== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -style-to-object@^0.4.0: - version "0.4.4" - resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz" - integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== - dependencies: - inline-style-parser "0.1.1" - -style-to-object@^1.0.0: - version "1.0.5" - resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz" - integrity sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ== - dependencies: - inline-style-parser "0.2.2" - -styled-components@^6.1.0: - version "6.1.8" - resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz" - integrity sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw== - dependencies: - "@emotion/is-prop-valid" "1.2.1" - "@emotion/unitless" "0.8.0" - "@types/stylis" "4.2.0" - css-to-react-native "3.2.0" - csstype "3.1.2" - postcss "8.4.31" - shallowequal "1.1.0" - stylis "4.3.1" - tslib "2.5.0" - -stylehacks@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz" - integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== - dependencies: - browserslist "^4.23.0" - postcss-selector-parser "^6.0.16" - -stylis@4.3.1, stylis@^4.1.3: - version "4.3.1" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz" - integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - 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== - -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^3.0.2, svgo@^3.2.0: - version "3.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz" - integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== - 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" - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz" - integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== - -terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.9: - version "5.3.14" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz" - integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== - 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" - -terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.44.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz" - integrity sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.15.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -tiny-invariant@^1.0.2: - version "1.3.1" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" - integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== - -tiny-warning@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -to-regex-range@^5.0.1: - 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== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - -trough@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz" - integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== - -ts-dedent@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" - integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== - -tslib@2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tslib@^2.0.3, tslib@^2.6.0: - version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -type-fest@^1.0.1: - version "1.4.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.13.0, type-fest@^2.5.0: - version "2.19.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^5.2.2: - version "5.3.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== - -unicode-canonical-property-names-ecmascript@^2.0.0: - 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== - -unicode-emoji-modifier-base@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz" - integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== - -unicode-match-property-ecmascript@^2.0.0: - 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== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.2.1: - 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== - -unicode-property-aliases-ecmascript@^2.0.0: - 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== - -unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: - version "11.0.4" - resolved "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz" - integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ== - dependencies: - "@types/unist" "^3.0.0" - bail "^2.0.0" - devlop "^1.0.0" - extend "^3.0.0" - is-plain-obj "^4.0.0" - trough "^2.0.0" - vfile "^6.0.0" - -unique-string@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz" - integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== - dependencies: - crypto-random-string "^4.0.0" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position-from-estree@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz" - integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-remove-position@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz" - integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== - dependencies: - "@types/unist" "^3.0.0" - unist-util-visit "^5.0.0" - -unist-util-stringify-position@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz" - integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== - dependencies: - "@types/unist" "^2.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - 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== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz" - integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -update-notifier@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz" - integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== - dependencies: - boxen "^7.0.0" - chalk "^5.0.1" - configstore "^6.0.0" - has-yarn "^3.0.0" - import-lazy "^4.0.0" - is-ci "^3.0.1" - is-installed-globally "^0.4.0" - is-npm "^6.0.0" - is-yarn-global "^0.4.0" - latest-version "^7.0.0" - pupa "^3.1.0" - semver "^7.3.7" - semver-diff "^4.0.0" - xdg-basedir "^5.1.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utila@~0.4: - version "0.4.0" - resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -uvu@^0.5.0: - version "0.5.6" - resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz" - integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== - dependencies: - dequal "^2.0.0" - diff "^5.0.0" - kleur "^4.0.3" - sade "^1.7.3" - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vfile-location@^5.0.0: - version "5.0.2" - resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz" - integrity sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== - dependencies: - "@types/unist" "^3.0.0" - vfile "^6.0.0" - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^6.0.0, vfile@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz" - integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -watchpack@^2.4.4: - version "2.4.4" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz" - integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -web-namespaces@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz" - integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== - -web-worker@^1.2.0: - version "1.5.0" - resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz" - integrity sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw== - -webpack-bundle-analyzer@^4.9.0: - version "4.10.2" - resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz" - integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.15.1: - version "4.15.1" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" - integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" - -webpack-merge@^5.9.0: - 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== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz" - integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== - -webpack@^5.88.1: - version "5.102.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz" - integrity sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ== - dependencies: - "@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.26.3" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.3" - es-module-lexer "^1.2.1" - 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.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^4.3.3" - tapable "^2.3.0" - terser-webpack-plugin "^5.3.11" - watchpack "^2.4.4" - webpack-sources "^3.3.3" - -webpackbar@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz" - integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== - dependencies: - chalk "^4.1.0" - consola "^2.15.3" - pretty-time "^1.1.0" - std-env "^3.0.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== - dependencies: - string-width "^5.0.1" - -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.3.1: - version "7.5.9" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.13.0: - version "8.13.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== - -xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz" - integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== - -xml-js@^1.6.11: - version "1.6.11" - resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz" - integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== - dependencies: - sax "^1.2.4" - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - -zwitch@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 4e5b75f13cb1cd05c9f120f36ae1e72c4ee809b2 Mon Sep 17 00:00:00 2001 From: omermorad Date: Tue, 16 Jun 2026 23:06:51 +0300 Subject: [PATCH 2/2] shaping --- astro.config.mjs | 137 + pnpm-lock.yaml | 7017 +++++++++++++++++ public/img/balance-logo.svg | 1 + public/img/banner.png | Bin 0 -> 5933 bytes public/img/favicon-16x16.png | Bin 0 -> 1175 bytes public/img/favicon.ico | Bin 0 -> 1150 bytes public/img/favicon.png | Bin 0 -> 2153 bytes public/img/harmonya-logo.svg | 44 + public/img/inversify-logo.png | Bin 0 -> 1209 bytes public/img/jest-logo.png | Bin 0 -> 2066 bytes public/img/lemonade-logo.svg | 61 + public/img/logo.png | Bin 0 -> 15240 bytes public/img/logo.svg | 15 + public/img/monday-logo.svg | 92 + public/img/nestjs-logo.png | Bin 0 -> 1614 bytes public/img/sinon-logo.png | Bin 0 -> 4116 bytes public/img/vetric.svg | 4 + public/img/vitest-logo.png | Bin 0 -> 1136 bytes public/llms.txt | 41 + public/robots.txt | 71 + src/components/blackbox/BddReverseDemo.astro | 203 + src/components/blackbox/BlackboxDemo.astro | 305 + src/components/blackbox/OverviewDiagram.astro | 345 + .../blackbox/QuickstartTrackDiagram.astro | 175 + .../blackbox/QuickstartTracks.astro | 648 ++ src/components/docs/Breadcrumb.astro | 54 + src/components/docs/LastUpdated.astro | 23 + src/components/docs/PageActions.astro | 132 + src/components/docs/PrevNext.astro | 39 + src/components/docs/Sidebar.astro | 46 + src/components/docs/TOC.astro | 90 + src/components/islands/AskAI.tsx | 238 + src/components/islands/DocSearch.tsx | 136 + src/components/islands/GoogleAnalytics.astro | 11 + src/components/mdx/Aside.astro | 50 + src/components/mdx/MermaidDiagram.tsx | 135 + src/components/mdx/TabItem.astro | 21 + src/components/mdx/Tabs.astro | 144 + src/components/site/Footer.astro | 129 + src/components/site/Header.astro | 57 + src/components/site/MarketingHeader.astro | 167 + src/components/site/ThemeToggle.astro | 69 + src/components/ui/Alert.astro | 30 + src/components/ui/Badge.astro | 10 + src/components/ui/Brand.astro | 10 + src/components/ui/Btn.astro | 39 + src/components/ui/Card.astro | 22 + src/components/ui/Chip.astro | 5 + src/components/ui/Eyebrow.astro | 5 + src/components/ui/Grid.astro | 9 + src/components/ui/Hero.astro | 7 + src/components/ui/Section.astro | 19 + src/components/ui/Shell.astro | 7 + src/components/ui/Topbar.astro | 8 + src/config/sidebar.ts | 221 + src/content/config.ts | 49 + src/content/docs/api-reference/index.md | 68 + .../docs/api-reference/mock-configuration.mdx | 128 + src/content/docs/api-reference/mock.mdx | 291 + .../docs/api-reference/testbed-sociable.mdx | 76 + .../docs/api-reference/testbed-solitary.md | 89 + src/content/docs/api-reference/types.mdx | 91 + .../docs/api-reference/unit-reference.md | 209 + .../concepts/bdd-runtime-and-effects.md | 88 + .../concepts/feature-files-and-staleness.md | 128 + .../docs/blackbox/concepts/omc-dc-coverage.md | 131 + .../blackbox/concepts/requires-and-forbids.md | 67 + .../docs/blackbox/concepts/system-effects.md | 123 + .../system-tests-and-runtime-evidence.md | 105 + ...integration-system-e2e-blackbox-testing.md | 123 + .../blackbox/guides/ci-behavioral-gates.md | 126 + .../guides/generating-feature-files.md | 199 + .../guides/reading-coverage-reports.md | 112 + .../docs/blackbox/guides/using-the-testbed.md | 145 + .../docs/blackbox/guides/writing-scenarios.md | 95 + .../blackbox/lifecycle/agentic-workflow.md | 97 + .../blackbox/lifecycle/developer-workflow.md | 72 + .../lifecycle/the-blackbox-lifecycle.md | 81 + .../overview/system-test-effect-coverage.mdx | 133 + .../tests-effects-and-feature-files.mdx | 137 + .../blackbox/overview/what-is-blackbox.mdx | 163 + .../blackbox/overview/when-to-use-blackbox.md | 79 + .../blackbox/overview/where-blackbox-fits.mdx | 119 + .../project/examples-and-sample-project.md | 102 + .../blackbox/project/license-and-support.md | 50 + .../supported-platforms-and-integrations.md | 54 + .../upgrade-and-version-compatibility.md | 65 + .../quickstart/feature-files-from-tests.mdx | 227 + .../quickstart/first-proven-feature.mdx | 32 + .../docs/blackbox/quickstart/install.md | 90 + .../docs/blackbox/quickstart/requirements.md | 63 + .../quickstart/troubleshooting-first-run.md | 69 + src/content/docs/blackbox/reference/api.md | 51 + .../docs/blackbox/reference/catalog-schema.md | 49 + src/content/docs/blackbox/reference/cli.md | 141 + .../docs/blackbox/reference/configuration.md | 56 + .../reference/environment-variables.md | 49 + .../docs/blackbox/reference/exit-codes.md | 56 + .../blackbox/reference/files-and-artifacts.md | 120 + .../reference/matchers-and-effect-builders.md | 49 + .../docs/blackbox/reference/report-formats.md | 111 + .../docs/blackbox/reference/scenario-dsl.md | 146 + .../docs/blackbox/reference/testbed-api.md | 50 + .../security-and-trust/data-and-telemetry.md | 65 + .../network-access-and-isolation.md | 55 + .../secrets-and-containers.md | 56 + .../security-and-trust/what-blackbox-runs.md | 81 + .../troubleshooting/catalog-failures.md | 63 + .../diagnostics-and-debug-logs.md | 58 + .../troubleshooting/docker-and-testbed.md | 82 + .../blackbox/troubleshooting/feature-drift.md | 63 + .../troubleshooting/no-spans-captured.md | 77 + .../troubleshooting/reporting-a-bug.md | 61 + .../use-cases/ai-assisted-development.md | 68 + .../use-cases/covering-before-refactor.md | 87 + .../blackbox/use-cases/incident-regression.md | 62 + .../use-cases/legacy-modernization.md | 63 + .../use-cases/microservices-regression.md | 102 + .../use-cases/spec-driven-development.md | 145 + src/content/docs/changelog.md | 122 + src/content/docs/get-started/index.mdx | 44 + src/content/docs/get-started/installation.mdx | 209 + src/content/docs/get-started/quickstart.mdx | 281 + src/content/docs/get-started/why-suites.mdx | 276 + src/content/docs/guides/fundamentals.mdx | 197 + src/content/docs/guides/index.mdx | 33 + src/content/docs/guides/sociable.mdx | 331 + src/content/docs/guides/solitary.mdx | 178 + src/content/docs/guides/test-doubles.mdx | 222 + .../docs/guides/virtual-test-container.md | 210 + .../docs/migration-guides/from-automock.mdx | 255 + src/content/docs/migration-guides/index.md | 17 + src/layouts/BaseLayout.astro | 103 + src/layouts/DocLayout.astro | 107 + src/layouts/MarketingLayout.astro | 13 + src/lib/algolia.ts | 3 + src/pages/404.astro | 53 + src/pages/docs/[...slug].astro | 36 + src/pages/docs/index.astro | 4 + src/pages/index.astro | 386 + src/styles/components.css | 3456 ++++++++ src/styles/globals.css | 75 + src/styles/suites-code-theme.json | 263 + src/styles/tokens.css | 172 + vercel.json | 65 + 145 files changed, 24345 insertions(+) create mode 100644 astro.config.mjs create mode 100644 pnpm-lock.yaml create mode 100644 public/img/balance-logo.svg create mode 100644 public/img/banner.png create mode 100644 public/img/favicon-16x16.png create mode 100644 public/img/favicon.ico create mode 100644 public/img/favicon.png create mode 100644 public/img/harmonya-logo.svg create mode 100644 public/img/inversify-logo.png create mode 100644 public/img/jest-logo.png create mode 100644 public/img/lemonade-logo.svg create mode 100644 public/img/logo.png create mode 100644 public/img/logo.svg create mode 100644 public/img/monday-logo.svg create mode 100644 public/img/nestjs-logo.png create mode 100644 public/img/sinon-logo.png create mode 100644 public/img/vetric.svg create mode 100644 public/img/vitest-logo.png create mode 100644 public/llms.txt create mode 100644 public/robots.txt create mode 100644 src/components/blackbox/BddReverseDemo.astro create mode 100644 src/components/blackbox/BlackboxDemo.astro create mode 100644 src/components/blackbox/OverviewDiagram.astro create mode 100644 src/components/blackbox/QuickstartTrackDiagram.astro create mode 100644 src/components/blackbox/QuickstartTracks.astro create mode 100644 src/components/docs/Breadcrumb.astro create mode 100644 src/components/docs/LastUpdated.astro create mode 100644 src/components/docs/PageActions.astro create mode 100644 src/components/docs/PrevNext.astro create mode 100644 src/components/docs/Sidebar.astro create mode 100644 src/components/docs/TOC.astro create mode 100644 src/components/islands/AskAI.tsx create mode 100644 src/components/islands/DocSearch.tsx create mode 100644 src/components/islands/GoogleAnalytics.astro create mode 100644 src/components/mdx/Aside.astro create mode 100644 src/components/mdx/MermaidDiagram.tsx create mode 100644 src/components/mdx/TabItem.astro create mode 100644 src/components/mdx/Tabs.astro create mode 100644 src/components/site/Footer.astro create mode 100644 src/components/site/Header.astro create mode 100644 src/components/site/MarketingHeader.astro create mode 100644 src/components/site/ThemeToggle.astro create mode 100644 src/components/ui/Alert.astro create mode 100644 src/components/ui/Badge.astro create mode 100644 src/components/ui/Brand.astro create mode 100644 src/components/ui/Btn.astro create mode 100644 src/components/ui/Card.astro create mode 100644 src/components/ui/Chip.astro create mode 100644 src/components/ui/Eyebrow.astro create mode 100644 src/components/ui/Grid.astro create mode 100644 src/components/ui/Hero.astro create mode 100644 src/components/ui/Section.astro create mode 100644 src/components/ui/Shell.astro create mode 100644 src/components/ui/Topbar.astro create mode 100644 src/config/sidebar.ts create mode 100644 src/content/config.ts create mode 100644 src/content/docs/api-reference/index.md create mode 100644 src/content/docs/api-reference/mock-configuration.mdx create mode 100644 src/content/docs/api-reference/mock.mdx create mode 100644 src/content/docs/api-reference/testbed-sociable.mdx create mode 100644 src/content/docs/api-reference/testbed-solitary.md create mode 100644 src/content/docs/api-reference/types.mdx create mode 100644 src/content/docs/api-reference/unit-reference.md create mode 100644 src/content/docs/blackbox/concepts/bdd-runtime-and-effects.md create mode 100644 src/content/docs/blackbox/concepts/feature-files-and-staleness.md create mode 100644 src/content/docs/blackbox/concepts/omc-dc-coverage.md create mode 100644 src/content/docs/blackbox/concepts/requires-and-forbids.md create mode 100644 src/content/docs/blackbox/concepts/system-effects.md create mode 100644 src/content/docs/blackbox/concepts/system-tests-and-runtime-evidence.md create mode 100644 src/content/docs/blackbox/concepts/unit-integration-system-e2e-blackbox-testing.md create mode 100644 src/content/docs/blackbox/guides/ci-behavioral-gates.md create mode 100644 src/content/docs/blackbox/guides/generating-feature-files.md create mode 100644 src/content/docs/blackbox/guides/reading-coverage-reports.md create mode 100644 src/content/docs/blackbox/guides/using-the-testbed.md create mode 100644 src/content/docs/blackbox/guides/writing-scenarios.md create mode 100644 src/content/docs/blackbox/lifecycle/agentic-workflow.md create mode 100644 src/content/docs/blackbox/lifecycle/developer-workflow.md create mode 100644 src/content/docs/blackbox/lifecycle/the-blackbox-lifecycle.md create mode 100644 src/content/docs/blackbox/overview/system-test-effect-coverage.mdx create mode 100644 src/content/docs/blackbox/overview/tests-effects-and-feature-files.mdx create mode 100644 src/content/docs/blackbox/overview/what-is-blackbox.mdx create mode 100644 src/content/docs/blackbox/overview/when-to-use-blackbox.md create mode 100644 src/content/docs/blackbox/overview/where-blackbox-fits.mdx create mode 100644 src/content/docs/blackbox/project/examples-and-sample-project.md create mode 100644 src/content/docs/blackbox/project/license-and-support.md create mode 100644 src/content/docs/blackbox/project/supported-platforms-and-integrations.md create mode 100644 src/content/docs/blackbox/project/upgrade-and-version-compatibility.md create mode 100644 src/content/docs/blackbox/quickstart/feature-files-from-tests.mdx create mode 100644 src/content/docs/blackbox/quickstart/first-proven-feature.mdx create mode 100644 src/content/docs/blackbox/quickstart/install.md create mode 100644 src/content/docs/blackbox/quickstart/requirements.md create mode 100644 src/content/docs/blackbox/quickstart/troubleshooting-first-run.md create mode 100644 src/content/docs/blackbox/reference/api.md create mode 100644 src/content/docs/blackbox/reference/catalog-schema.md create mode 100644 src/content/docs/blackbox/reference/cli.md create mode 100644 src/content/docs/blackbox/reference/configuration.md create mode 100644 src/content/docs/blackbox/reference/environment-variables.md create mode 100644 src/content/docs/blackbox/reference/exit-codes.md create mode 100644 src/content/docs/blackbox/reference/files-and-artifacts.md create mode 100644 src/content/docs/blackbox/reference/matchers-and-effect-builders.md create mode 100644 src/content/docs/blackbox/reference/report-formats.md create mode 100644 src/content/docs/blackbox/reference/scenario-dsl.md create mode 100644 src/content/docs/blackbox/reference/testbed-api.md create mode 100644 src/content/docs/blackbox/security-and-trust/data-and-telemetry.md create mode 100644 src/content/docs/blackbox/security-and-trust/network-access-and-isolation.md create mode 100644 src/content/docs/blackbox/security-and-trust/secrets-and-containers.md create mode 100644 src/content/docs/blackbox/security-and-trust/what-blackbox-runs.md create mode 100644 src/content/docs/blackbox/troubleshooting/catalog-failures.md create mode 100644 src/content/docs/blackbox/troubleshooting/diagnostics-and-debug-logs.md create mode 100644 src/content/docs/blackbox/troubleshooting/docker-and-testbed.md create mode 100644 src/content/docs/blackbox/troubleshooting/feature-drift.md create mode 100644 src/content/docs/blackbox/troubleshooting/no-spans-captured.md create mode 100644 src/content/docs/blackbox/troubleshooting/reporting-a-bug.md create mode 100644 src/content/docs/blackbox/use-cases/ai-assisted-development.md create mode 100644 src/content/docs/blackbox/use-cases/covering-before-refactor.md create mode 100644 src/content/docs/blackbox/use-cases/incident-regression.md create mode 100644 src/content/docs/blackbox/use-cases/legacy-modernization.md create mode 100644 src/content/docs/blackbox/use-cases/microservices-regression.md create mode 100644 src/content/docs/blackbox/use-cases/spec-driven-development.md create mode 100644 src/content/docs/changelog.md create mode 100644 src/content/docs/get-started/index.mdx create mode 100644 src/content/docs/get-started/installation.mdx create mode 100644 src/content/docs/get-started/quickstart.mdx create mode 100644 src/content/docs/get-started/why-suites.mdx create mode 100644 src/content/docs/guides/fundamentals.mdx create mode 100644 src/content/docs/guides/index.mdx create mode 100644 src/content/docs/guides/sociable.mdx create mode 100644 src/content/docs/guides/solitary.mdx create mode 100644 src/content/docs/guides/test-doubles.mdx create mode 100644 src/content/docs/guides/virtual-test-container.md create mode 100644 src/content/docs/migration-guides/from-automock.mdx create mode 100644 src/content/docs/migration-guides/index.md create mode 100644 src/layouts/BaseLayout.astro create mode 100644 src/layouts/DocLayout.astro create mode 100644 src/layouts/MarketingLayout.astro create mode 100644 src/lib/algolia.ts create mode 100644 src/pages/404.astro create mode 100644 src/pages/docs/[...slug].astro create mode 100644 src/pages/docs/index.astro create mode 100644 src/pages/index.astro create mode 100644 src/styles/components.css create mode 100644 src/styles/globals.css create mode 100644 src/styles/suites-code-theme.json create mode 100644 src/styles/tokens.css create mode 100644 vercel.json diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..1efc9bf --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,137 @@ +import { defineConfig } from 'astro/config'; +import fs from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import mdx from '@astrojs/mdx'; +import react from '@astrojs/react'; +import sitemap from '@astrojs/sitemap'; +import vercel from '@astrojs/vercel'; +import expressiveCode, { ExpressiveCodeTheme } from 'astro-expressive-code'; +import remarkGfm from 'remark-gfm'; + +const suitesCodeTheme = ExpressiveCodeTheme.fromJSONString( + fs.readFileSync( + fileURLToPath(new URL('./src/styles/suites-code-theme.json', import.meta.url)), + 'utf-8' + ) +); + +export default defineConfig({ + site: 'https://suites.dev', + trailingSlash: 'ignore', + output: 'static', + adapter: vercel({ + webAnalytics: { enabled: true }, + imageService: true, + }), + integrations: [ + expressiveCode({ + themes: [suitesCodeTheme], + styleOverrides: { + // intentionally empty; tokens live in src/styles/tokens.css. + }, + }), + mdx({ + remarkPlugins: [remarkGfm], + }), + react(), + sitemap(), + ], + redirects: { + // ============================================================ + // CRITICAL REDIRECTS (High Traffic Pages) + // ============================================================ + + // Quick Start + '/docs/overview/quickstart': { status: 301, destination: '/docs/get-started/quickstart' }, + '/docs/learn/get-started/quickstart': { status: 301, destination: '/docs/get-started/quickstart' }, + '/docs/introduction/quick-example': { status: 301, destination: '/docs/get-started/quickstart' }, + + // Installation + '/docs/overview/installation': { status: 301, destination: '/docs/get-started/installation' }, + '/docs/learn/get-started/installation': { status: 301, destination: '/docs/get-started/installation' }, + + // API Reference + '/docs/developer-guide/unit-tests/suites-api': { status: 301, destination: '/docs/api-reference/' }, + '/docs/learn/unit-tests/suites-api': { status: 301, destination: '/docs/api-reference/' }, + '/docs/api-reference/testbed-api': { status: 301, destination: '/docs/api-reference/' }, + '/docs/api-reference/fail-fast': { status: 301, destination: '/docs/api-reference/' }, + '/api-reference': { status: 301, destination: '/docs/api-reference/' }, + + // Solitary Tests + '/docs/developer-guide/unit-tests/solitary': { status: 301, destination: '/docs/guides/solitary' }, + '/docs/learn/unit-tests/solitary': { status: 301, destination: '/docs/guides/solitary' }, + + // Sociable Tests + '/docs/developer-guide/unit-tests/sociable': { status: 301, destination: '/docs/guides/sociable' }, + '/docs/learn/unit-tests/sociable': { status: 301, destination: '/docs/guides/sociable' }, + + // Test Doubles + '/docs/developer-guide/unit-tests/test-doubles': { status: 301, destination: '/docs/guides/test-doubles' }, + '/docs/learn/unit-tests/test-doubles': { status: 301, destination: '/docs/guides/test-doubles' }, + + // Fundamentals + '/docs/developer-guide/unit-tests/fundamentals': { status: 301, destination: '/docs/guides/fundamentals' }, + '/docs/learn/unit-tests/fundamentals': { status: 301, destination: '/docs/guides/fundamentals' }, + + // ============================================================ + // MIGRATION GUIDES + // ============================================================ + + '/docs/migrating-from-automock': { status: 301, destination: '/docs/migration-guides/from-automock' }, + '/docs/resources/migrating-from-automock': { status: 301, destination: '/docs/migration-guides/from-automock' }, + '/docs/overview/migrating-from-automock': { status: 301, destination: '/docs/migration-guides/from-automock' }, + '/docs/getting-started/change-log': { status: 301, destination: '/docs/migration-guides/from-automock' }, + + // ============================================================ + // OVERVIEW SECTION + // ============================================================ + + '/docs/overview': { status: 301, destination: '/docs/get-started/' }, + '/docs/overview/what-is-suites': { status: 301, destination: '/docs/get-started/' }, + '/docs/overview/problems-solved': { status: 301, destination: '/docs/get-started/why-suites' }, + '/docs/resources/problems-solved': { status: 301, destination: '/docs/get-started/why-suites' }, + '/docs/overview/comparisons': { status: 301, destination: '/docs/get-started/why-suites' }, + '/docs/overview/motivation': { status: 301, destination: '/docs/get-started/why-suites' }, + '/docs/overview/depdency-injection-and-automock': { status: 301, destination: '/docs/get-started/why-suites' }, + '/docs/overview/dependency-injection-and-automock': { status: 301, destination: '/docs/get-started/why-suites' }, + '/docs/core-concepts/dependency-injection': { status: 301, destination: '/docs/get-started/why-suites' }, + + // ============================================================ + // DEVELOPER GUIDE + // (wildcard variants for remaining old paths live in vercel.json) + // ============================================================ + + '/docs/developer-guide/unit-tests': { status: 301, destination: '/docs/guides/' }, + + // ============================================================ + // DOCS BASE PATH + // ============================================================ + + '/docs': { status: 301, destination: '/docs/get-started/' }, + + // ============================================================ + // CATEGORY PAGES + // ============================================================ + + '/docs/category/extras': { status: 301, destination: '/docs/guides/' }, + '/docs/category/getting-started': { status: 301, destination: '/docs/get-started/' }, + '/docs/category/di-framework-adapters': { status: 301, destination: '/docs/get-started/' }, + + // ============================================================ + // EXTRAS (removed pages) + // ============================================================ + + '/docs/extras/identical-injections': { status: 301, destination: '/docs/guides/' }, + + // ============================================================ + // ADAPTERS (restructured - bundled into core) + // ============================================================ + + '/docs/adapters/inversify': { status: 301, destination: '/docs/get-started/' }, + '/docs/adapters/identifiers': { status: 301, destination: '/docs/get-started/' }, + '/docs/developer-guide/adapters/inversifyjs': { status: 301, destination: '/docs/get-started/' }, + '/docs/developer-guide/adapters/identifiers': { status: 301, destination: '/docs/get-started/' }, + '/docs/guides/adapters/inversifyjs': { status: 301, destination: '/docs/get-started/' }, + // wildcard /docs/adapters/[...slug] lives in vercel.json + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..2856866 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7017 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@astrojs/check': + specifier: ^0.9.4 + version: 0.9.9(prettier@3.8.3)(typescript@5.9.3) + '@astrojs/mdx': + specifier: ^4.0.0 + version: 4.3.14(astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3)) + '@astrojs/react': + specifier: ^4.0.0 + version: 4.4.2(@types/node@24.12.2)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.8.3) + '@astrojs/sitemap': + specifier: ^3.2.0 + version: 3.7.2 + '@astrojs/vercel': + specifier: ^8.0.0 + version: 8.2.11(astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))(react@18.3.1)(rollup@4.60.1) + '@docsearch/css': + specifier: ^3.8.0 + version: 3.9.0 + '@docsearch/react': + specifier: ^3.8.0 + version: 3.9.0(@algolia/client-search@5.54.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + astro: + specifier: ^5.0.0 + version: 5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) + astro-expressive-code: + specifier: ^0.40.0 + version: 0.40.2(astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3)) + mermaid: + specifier: ^11.4.0 + version: 11.14.0 + react: + specifier: ^18.3.0 + version: 18.3.1 + react-dom: + specifier: ^18.3.0 + version: 18.3.1(react@18.3.1) + react-icons: + specifier: ^5.4.0 + version: 5.6.0(react@18.3.1) + remark-gfm: + specifier: ^4.0.0 + version: 4.0.1 + typescript: + specifier: ^5.6.0 + version: 5.9.3 + devDependencies: + '@types/react': + specifier: ^18.3.0 + version: 18.3.28 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.7(@types/react@18.3.28) + +packages: + + '@algolia/abtesting@1.20.0': + resolution: {integrity: sha512-5CqkS592H3+24b6H6CQ2RVpphdmAuIElZzv0Hngqo/ZEZpUZJ+KGLcueBhx33fv2wYBXyuuvskG5aQ7Ti+lR0g==} + engines: {node: '>= 14.0.0'} + + '@algolia/autocomplete-core@1.17.9': + resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} + + '@algolia/autocomplete-plugin-algolia-insights@1.17.9': + resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-preset-algolia@1.17.9': + resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/autocomplete-shared@1.17.9': + resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.54.0': + resolution: {integrity: sha512-IXnH1x3DBsPQA4/FRO0Pvkfy79tKy5Qr+ugAV9jdcGkpzHc476D0WV1MFJ+pZxtbts0xh2JqzUVmYEqA6LkOpA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.54.0': + resolution: {integrity: sha512-pBpRqm1wpE0GnGy2rNLk9rjDn0Le4iywNRtnAWblLeqfjxpWKg8lWnk7nmSoTShFO31sz2jatXXzxK2lz8ipbA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.54.0': + resolution: {integrity: sha512-WbuwRUlFvSOsuxqTDjSSmgusuF5KFt+oFPzobvPDvodra6EWnVwUXjz0elkNSsnsIlZGtcXlX3LhxkO7rF90jw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.54.0': + resolution: {integrity: sha512-/HNLVi3kPI+JhO59WbglLjPM2c4uECU+x4gk1iADseKtE5eYqJ/RJ+FIwM8xzPFKhFJaw+8hVq4lkd0nn8HDDg==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.54.0': + resolution: {integrity: sha512-6TolyyDRumIKeLGBGSFAZsSIJ8hrm6NFCGR1jO7pQTiOtSWgAIxcFE5/JRpZ3g+unG4OkNOFy+I0dUEquIDbig==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.54.0': + resolution: {integrity: sha512-AxW2MLBhjBtGX5kIZrVLO2SP2vRkZxJw5qHGxnQJfLcYhA04mFNP0fWRtHshlcVnDk9M8L9lwfr2lGpf3Er+hw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.54.0': + resolution: {integrity: sha512-ngdgVGp05lJzUyA+sUzr0MDZ7AMtANcJpwIzq4ZsfpZL5B3S7A4XYfMcU2sECZc3bx3ysOhYcdbbaTjc3ve0WQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.54.0': + resolution: {integrity: sha512-hee59Z7FgZ6/13FYL05ANPwRJY1pfvIlrwC8eBZYdiRFXTJVvf94IyTWOxLqRVpbseDP6eQQTW+PT7/DxTZIng==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.54.0': + resolution: {integrity: sha512-diCjZVbIO7Pzw98tEKqLWIAgmQBI3Zt1sHsXyAPNGZgn32derpIXTnjjpJbZl+uAhSSznd6SfxFGdC9uYdN1TA==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.54.0': + resolution: {integrity: sha512-6zeslypRAGWDgVJEJYAPuqmyquHvnw4MQwG+XXdrw5dTNDjXYIcCJdQQcCY06xPF9tUvmzy/1vHiH9QxhgwuOQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.54.0': + resolution: {integrity: sha512-iHZax214LPXd7XizQ4BNnTsegl8f3IeKm8JcrmSNZ/5x1rZ5xLkbG/anltAWtLpoRNnfpr4Z80YdYeVVPpx6wQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.54.0': + resolution: {integrity: sha512-YKtuG5YwPxZ+kkfd4HmUO7Z9aICPUSMlHslzKTmtMMhxGnetxEqGj9T/v2r/PdcuOUC5oW0CHe8akJk8cpS3gQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.54.0': + resolution: {integrity: sha512-zyZDJ4WS5TnjZZ5pqywTBFO9olW7QMtY2kf2dbLnu+UTzfc9ri/HGf27jRN2NTbX9FcRPxSqPqzUhF/BZIx0VA==} + engines: {node: '>= 14.0.0'} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@astrojs/check@0.9.9': + resolution: {integrity: sha512-A5UW8uIuErLWEoRQvzgXpO1gTjUFtK8r7nU2Z7GewAMxUb7bPvpk11qaKKgxqXlHJWlAvaaxy+Xg28A6bmQ1Tg==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 || ^6.0.0 + + '@astrojs/compiler@2.13.1': + resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} + + '@astrojs/internal-helpers@0.7.4': + resolution: {integrity: sha512-lDA9MqE8WGi7T/t2BMi+EAXhs4Vcvr94Gqx3q15cFEz8oFZMO4/SFBqYr/UcmNlvW+35alowkVj+w9VhLvs5Cw==} + + '@astrojs/internal-helpers@0.7.6': + resolution: {integrity: sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==} + + '@astrojs/language-server@2.16.10': + resolution: {integrity: sha512-87VQ/5GSdHlRnUA+hGuerYyIGAj+9RbZmATyuKLEUePinUXhQ5YkRnRrHhOD9sSi5JOErLjrLkHnfZFEvGrV8w==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + + '@astrojs/markdown-remark@6.3.11': + resolution: {integrity: sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==} + + '@astrojs/mdx@4.3.14': + resolution: {integrity: sha512-FBrqJQORVm+rkRa2TS5CjU9PBA6hkhrwLVBSS9A77gN2+iehvjq1w6yya/d0YKC7osiVorKkr3Qd9wNbl0ZkGA==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + peerDependencies: + astro: ^5.0.0 + + '@astrojs/prism@3.3.0': + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@astrojs/react@4.4.2': + resolution: {integrity: sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.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 + + '@astrojs/sitemap@3.7.2': + resolution: {integrity: sha512-PqkzkcZTb5ICiyIR8VoKbIAP/laNRXi5tw616N1Ckk+40oNB8Can1AzVV56lrbC5GKSZFCyJYUVYqVivMisvpA==} + + '@astrojs/telemetry@3.3.0': + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@astrojs/vercel@8.2.11': + resolution: {integrity: sha512-PGtWHvHYMkT8ftSR3yuR7oyf/oPvOv8AfhCFlSQg318hfpalSEPND9mjbdQGpMeZz3KtvvOnHyYwqmu5V8MSHg==} + peerDependencies: + astro: ^5.0.0 + + '@astrojs/yaml2ts@0.2.4': + resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.29.7': + resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.29.7': + resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + + '@capsizecss/unpack@4.0.0': + resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==} + engines: {node: '>=18'} + + '@chevrotain/cst-dts-gen@11.1.2': + resolution: {integrity: sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==} + + '@chevrotain/gast@11.1.2': + resolution: {integrity: sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==} + + '@chevrotain/regexp-to-ast@11.1.2': + resolution: {integrity: sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==} + + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + + '@chevrotain/utils@11.1.2': + resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==} + + '@ctrl/tinycolor@4.2.0': + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} + engines: {node: '>=14'} + + '@docsearch/css@3.9.0': + resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==} + + '@docsearch/react@3.9.0': + resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==} + peerDependencies: + '@types/react': '>= 16.8.0 < 20.0.0' + react: '>= 16.8.0 < 20.0.0' + react-dom: '>= 16.8.0 < 20.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + + '@emmetio/css-parser@0.4.1': + resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==} + + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@expressive-code/core@0.40.2': + resolution: {integrity: sha512-gXY3v7jbgz6nWKvRpoDxK4AHUPkZRuJsM79vHX/5uhV9/qX6Qnctp/U/dMHog/LCVXcuOps+5nRmf1uxQVPb3w==} + + '@expressive-code/plugin-frames@0.40.2': + resolution: {integrity: sha512-aLw5IlDlZWb10Jo/TTDCVsmJhKfZ7FJI83Zo9VDrV0OBlmHAg7klZqw68VDz7FlftIBVAmMby53/MNXPnMjTSQ==} + + '@expressive-code/plugin-shiki@0.40.2': + resolution: {integrity: sha512-t2HMR5BO6GdDW1c1ISBTk66xO503e/Z8ecZdNcr6E4NpUfvY+MRje+LtrcvbBqMwWBBO8RpVKcam/Uy+1GxwKQ==} + + '@expressive-code/plugin-text-markers@0.40.2': + resolution: {integrity: sha512-/XoLjD67K9nfM4TgDlXAExzMJp6ewFKxNpfUw4F7q5Ecy+IU3/9zQQG/O70Zy+RxYTwKGw2MA9kd7yelsxnSmw==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mapbox/node-pre-gyp@2.0.3': + resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} + engines: {node: '>=18'} + hasBin: true + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@mermaid-js/parser@1.1.0': + resolution: {integrity: sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw==} + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.60.1': + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.60.1': + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.60.1': + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.60.1': + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.60.1': + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.60.1': + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.60.1': + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.60.1': + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.60.1': + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.1': + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.60.1': + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.60.1': + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.60.1': + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.60.1': + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.60.1': + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.1': + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.1': + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.60.1': + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.60.1': + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.1': + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.29.2': + resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + + '@shikijs/core@3.23.0': + resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} + + '@shikijs/engine-javascript@1.29.2': + resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} + + '@shikijs/engine-javascript@3.23.0': + resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} + + '@shikijs/engine-oniguruma@1.29.2': + resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + + '@shikijs/langs@1.29.2': + resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} + + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + + '@shikijs/themes@1.29.2': + resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} + + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + + '@shikijs/types@1.29.2': + resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.28': + resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + + '@vercel/analytics@1.6.1': + resolution: {integrity: sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg==} + peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + + '@vercel/functions@2.2.13': + resolution: {integrity: sha512-14ArBSIIcOBx9nrEgaJb4Bw+en1gl6eSoJWh8qjifLl5G3E4dRXCFOT8HP+w66vb9Wqyd1lAQBrmRhRwOj9X9A==} + engines: {node: '>= 18'} + peerDependencies: + '@aws-sdk/credential-provider-web-identity': '*' + peerDependenciesMeta: + '@aws-sdk/credential-provider-web-identity': + optional: true + + '@vercel/nft@0.30.3': + resolution: {integrity: sha512-UEq+eF0ocEf9WQCV1gktxKhha36KDs7jln5qii6UpPf5clMqDc0p3E7d9l2Smx0i9Pm1qpq4S4lLfNl97bbv6w==} + engines: {node: '>=18'} + hasBin: true + + '@vercel/oidc@2.0.2': + resolution: {integrity: sha512-59PBFx3T+k5hLTEWa3ggiMpGRz1OVvl9eN8SUai+A43IsqiOuAe7qPBf+cray/Fj6mkgnxm/D7IAtjc8zSHi7g==} + engines: {node: '>= 18'} + + '@vercel/routing-utils@5.3.3': + resolution: {integrity: sha512-KYm2sLNUD48gDScv8ob4ejc3Gww2jcJyW80hTdYlenAPz/5BQar1Gyh38xrUuZ532TUwSb5mV1uRbAuiykq0EQ==} + + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@volar/kit@2.4.28': + resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/language-server@2.4.28': + resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==} + + '@volar/language-service@2.4.28': + resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vscode/emmet-helper@2.11.0': + resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + + algoliasearch@5.54.0: + resolution: {integrity: sha512-APAX4ajIOgsmYoUlGe++oNZkSTBgmXYM4maHC0OxC+Yo7xkaKQElV0ATZYCZA7jzrSJX1OBiqEs7mk+ZxXgYqA==} + engines: {node: '>= 14.0.0'} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + astro-expressive-code@0.40.2: + resolution: {integrity: sha512-yJMQId0yXSAbW9I6yqvJ3FcjKzJ8zRL7elbJbllkv1ZJPlsI0NI83Pxn1YL1IapEM347EvOOkSW2GL+2+NO61w==} + peerDependencies: + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 + + astro@5.18.1: + resolution: {integrity: sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + + async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + baseline-browser-mapping@2.10.29: + resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@8.0.1: + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} + + brace-expansion@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.1.2: + resolution: {integrity: sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-selector-parser@3.3.0: + resolution: {integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + defu@6.1.6: + resolution: {integrity: sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==} + + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} + + devalue@5.6.4: + resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.355: + resolution: {integrity: sha512-LUPZhKzZPYSPme1jEYohpkA+ybYCJztr1quAdBd7E7h3+VOBVcKkwwtBJu41nrjawrRzfb8mtMfzWozoaK0ZIQ==} + + emmet@2.4.11: + resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + expressive-code@0.40.2: + resolution: {integrity: sha512-1zIda2rB0qiDZACawzw2rbdBQiWHBT56uBctS+ezFe5XMAaFaHLnnSYND/Kd+dVzO9HfCXRDpzH3d+3fvOWRcw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + fontace@0.4.1: + resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} + + fontkitten@1.0.3: + resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} + engines: {node: '>=20'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-select@6.0.4: + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + katex@0.16.44: + resolution: {integrity: sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==} + hasBin: true + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + langium@4.2.1: + resolution: {integrity: sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==} + engines: {node: '>=20.10.0', npm: '>=10.2.3'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.2.7: + resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + mermaid@11.14.0: + resolution: {integrity: sha512-GSGloRsBs+JINmmhl0JDwjpuezCsHB4WGI4NASHxL3fHo3o/BRXTxhDLKnln8/Q0lRFRyDdEjmk1/d5Sn1Xz8g==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + neotraverse@0.6.18: + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + + node-releases@2.0.44: + resolution: {integrity: sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==} + + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + + oniguruma-to-es@4.3.5: + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} + + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} + engines: {node: '>=18'} + + p-queue@8.1.1: + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} + engines: {node: '>=18'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@6.1.0: + resolution: {integrity: sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + piccolore@0.1.3: + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} + hasBin: true + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-icons@5.6.0: + resolution: {integrity: sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==} + peerDependencies: + react: '*' + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + rehype-expressive-code@0.40.2: + resolution: {integrity: sha512-+kn+AMGCrGzvtH8Q5lC6Y5lnmTV/r33fdmi5QU/IH1KPHKobKr5UnLwJuqHv5jBTSN/0v2wLDS7RTM73FVzqmQ==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + rehype@13.0.2: + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + + rollup@4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.29.2: + resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} + + shiki@3.23.0: + resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} + hasBin: true + + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + svgo@4.0.1: + resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} + engines: {node: '>=16'} + hasBin: true + + tar@7.5.15: + resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==} + engines: {node: '>=18'} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.6: + resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + ultrahtml@1.6.0: + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unifont@0.7.4: + resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@6.4.2: + resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + 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 + + vitefu@1.1.3: + resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + vite: + optional: true + + volar-service-css@0.0.70: + resolution: {integrity: sha512-K1qyOvBpE3rzdAv3e4/6Rv5yizrYPy5R/ne3IWCAzLBuMO4qBMV3kSqWzj6KUVe6S0AnN6wxF7cRkiaKfYMYJw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.70: + resolution: {integrity: sha512-xi5bC4m/VyE3zy/n2CXspKeDZs3qA41tHLTw275/7dNWM/RqE2z3BnDICQybHIVp/6G1iOQj5c1qXMgQC08TNg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.70: + resolution: {integrity: sha512-eR6vCgMdmYAo4n+gcT7DSyBQbwB8S3HZZvSagTf0sxNaD4WppMCFfpqWnkrlGStPKMZvMiejRRVmqsX9dYcTvQ==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.70: + resolution: {integrity: sha512-Z6BCFSpGVCd8BPAsZ785Kce1BGlWd5ODqmqZGVuB14MJvrR4+CYz6cDy4F+igmE1gMifqfvMhdgT8Aud4M5ngg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.70: + resolution: {integrity: sha512-IdD13Z9N2Bu8EM6CM0fDV1E69olEYGHDU25X51YXmq8Y0CmJ2LNj6gOiBJgpS5JGUqFzECVhMNBW7R0sPdRTMQ==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.70: + resolution: {integrity: sha512-l46Bx4cokkUedTd74ojO5H/zqHZJ8SUuyZ0IB8JN4jfRqUM3bQFBHoOwlZCyZmOeO0A3RQNkMnFclxO4c++gsg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-yaml@0.0.70: + resolution: {integrity: sha512-0c8bXDBeoATF9F6iPIlOuYTuZAC4c+yi0siQo920u7eiBJk8oQmUmg9cDUbR4+Gl++bvGP4plj3fErbJuPqdcQ==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.10: + resolution: {integrity: sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==} + + vscode-html-languageservice@5.6.2: + resolution: {integrity: sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml-language-server@1.20.0: + resolution: {integrity: sha512-qhjK/bzSRZ6HtTvgeFvjNPJGWdZ0+x5NREV/9XZWFjIGezew2b4r5JPy66IfOhd5OA7KeFwk1JfmEbnTvev0cA==} + hasBin: true + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + + yocto-spinner@0.2.3: + resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} + engines: {node: '>=18.19'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zod-to-json-schema@3.25.2: + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} + peerDependencies: + zod: ^3.25.28 || ^4 + + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@algolia/abtesting@1.20.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0) + '@algolia/client-search': 5.54.0 + algoliasearch: 5.54.0 + + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)': + dependencies: + '@algolia/client-search': 5.54.0 + algoliasearch: 5.54.0 + + '@algolia/client-abtesting@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/client-analytics@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/client-common@5.54.0': {} + + '@algolia/client-insights@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/client-personalization@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/client-query-suggestions@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/client-search@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/ingestion@1.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/monitoring@1.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/recommend@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + '@algolia/requester-browser-xhr@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + + '@algolia/requester-fetch@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + + '@algolia/requester-node-http@5.54.0': + dependencies: + '@algolia/client-common': 5.54.0 + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.4 + + '@astrojs/check@0.9.9(prettier@3.8.3)(typescript@5.9.3)': + dependencies: + '@astrojs/language-server': 2.16.10(prettier@3.8.3)(typescript@5.9.3) + chokidar: 4.0.3 + kleur: 4.1.5 + typescript: 5.9.3 + yargs: 17.7.2 + transitivePeerDependencies: + - prettier + - prettier-plugin-astro + + '@astrojs/compiler@2.13.1': {} + + '@astrojs/internal-helpers@0.7.4': {} + + '@astrojs/internal-helpers@0.7.6': {} + + '@astrojs/language-server@2.16.10(prettier@3.8.3)(typescript@5.9.3)': + dependencies: + '@astrojs/compiler': 2.13.1 + '@astrojs/yaml2ts': 0.2.4 + '@jridgewell/sourcemap-codec': 1.5.5 + '@volar/kit': 2.4.28(typescript@5.9.3) + '@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.17 + volar-service-css: 0.0.70(@volar/language-service@2.4.28) + volar-service-emmet: 0.0.70(@volar/language-service@2.4.28) + volar-service-html: 0.0.70(@volar/language-service@2.4.28) + volar-service-prettier: 0.0.70(@volar/language-service@2.4.28)(prettier@3.8.3) + volar-service-typescript: 0.0.70(@volar/language-service@2.4.28) + volar-service-typescript-twoslash-queries: 0.0.70(@volar/language-service@2.4.28) + volar-service-yaml: 0.0.70(@volar/language-service@2.4.28) + vscode-html-languageservice: 5.6.2 + vscode-uri: 3.1.0 + optionalDependencies: + prettier: 3.8.3 + transitivePeerDependencies: + - typescript + + '@astrojs/markdown-remark@6.3.11': + dependencies: + '@astrojs/internal-helpers': 0.7.6 + '@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.23.0 + smol-toml: 1.6.1 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/mdx@4.3.14(astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))': + dependencies: + '@astrojs/markdown-remark': 6.3.11 + '@mdx-js/mdx': 3.1.1 + acorn: 8.16.0 + astro: 5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) + 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.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/prism@3.3.0': + dependencies: + prismjs: 1.30.0 + + '@astrojs/react@4.4.2(@types/node@24.12.2)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.8.3)': + dependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@vitejs/plugin-react': 4.7.0(vite@6.4.2(@types/node@24.12.2)(yaml@2.8.3)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + ultrahtml: 1.6.0 + vite: 6.4.2(@types/node@24.12.2)(yaml@2.8.3) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@astrojs/sitemap@3.7.2': + dependencies: + sitemap: 9.0.1 + stream-replace-string: 2.0.0 + zod: 4.3.6 + + '@astrojs/telemetry@3.3.0': + dependencies: + ci-info: 4.4.0 + debug: 4.4.3 + dlv: 1.1.3 + dset: 3.1.4 + is-docker: 3.0.0 + is-wsl: 3.1.1 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + + '@astrojs/vercel@8.2.11(astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3))(react@18.3.1)(rollup@4.60.1)': + dependencies: + '@astrojs/internal-helpers': 0.7.4 + '@vercel/analytics': 1.6.1(react@18.3.1) + '@vercel/functions': 2.2.13 + '@vercel/nft': 0.30.3(rollup@4.60.1) + '@vercel/routing-utils': 5.3.3 + astro: 5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) + esbuild: 0.25.12 + tinyglobby: 0.2.17 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-web-identity' + - '@remix-run/react' + - '@sveltejs/kit' + - encoding + - next + - react + - rollup + - supports-color + - svelte + - vue + - vue-router + + '@astrojs/yaml2ts@0.2.4': + dependencies: + yaml: 2.8.3 + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.2 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@braintree/sanitize-url@7.1.2': {} + + '@capsizecss/unpack@4.0.0': + dependencies: + fontkitten: 1.0.3 + + '@chevrotain/cst-dts-gen@11.1.2': + dependencies: + '@chevrotain/gast': 11.1.2 + '@chevrotain/types': 11.1.2 + lodash-es: 4.17.23 + + '@chevrotain/gast@11.1.2': + dependencies: + '@chevrotain/types': 11.1.2 + lodash-es: 4.17.23 + + '@chevrotain/regexp-to-ast@11.1.2': {} + + '@chevrotain/types@11.1.2': {} + + '@chevrotain/utils@11.1.2': {} + + '@ctrl/tinycolor@4.2.0': {} + + '@docsearch/css@3.9.0': {} + + '@docsearch/react@3.9.0(@algolia/client-search@5.54.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.54.0)(algoliasearch@5.54.0) + '@docsearch/css': 3.9.0 + algoliasearch: 5.54.0 + optionalDependencies: + '@types/react': 18.3.28 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + + '@emmetio/abbreviation@2.3.3': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-abbreviation@2.1.8': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-parser@0.4.1': + dependencies: + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 + + '@emmetio/html-matcher@1.3.0': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/scanner@1.0.4': {} + + '@emmetio/stream-reader-utils@0.1.0': {} + + '@emmetio/stream-reader@2.2.0': {} + + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@expressive-code/core@0.40.2': + dependencies: + '@ctrl/tinycolor': 4.2.0 + hast-util-select: 6.0.4 + hast-util-to-html: 9.0.5 + hast-util-to-text: 4.0.2 + hastscript: 9.0.1 + postcss: 8.5.8 + postcss-nested: 6.2.0(postcss@8.5.8) + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + + '@expressive-code/plugin-frames@0.40.2': + dependencies: + '@expressive-code/core': 0.40.2 + + '@expressive-code/plugin-shiki@0.40.2': + dependencies: + '@expressive-code/core': 0.40.2 + shiki: 1.29.2 + + '@expressive-code/plugin-text-markers@0.40.2': + dependencies: + '@expressive-code/core': 0.40.2 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.2 + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.9.2 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mapbox/node-pre-gyp@2.0.3': + dependencies: + consola: 3.4.2 + detect-libc: 2.1.2 + https-proxy-agent: 7.0.6 + node-fetch: 2.7.0 + nopt: 8.1.0 + semver: 7.8.4 + tar: 7.5.15 + transitivePeerDependencies: + - encoding + - supports-color + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.16.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.16.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mermaid-js/parser@1.1.0': + dependencies: + langium: 4.2.1 + + '@oslojs/encoding@1.1.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/pluginutils@5.3.0(rollup@4.60.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.4 + optionalDependencies: + rollup: 4.60.1 + + '@rollup/rollup-android-arm-eabi@4.60.1': + optional: true + + '@rollup/rollup-android-arm64@4.60.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.1': + optional: true + + '@rollup/rollup-darwin-x64@4.60.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.1': + optional: true + + '@shikijs/core@1.29.2': + dependencies: + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/core@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 2.3.0 + + '@shikijs/engine-javascript@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.5 + + '@shikijs/engine-oniguruma@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/engine-oniguruma@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/langs@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + + '@shikijs/themes@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/themes@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + + '@shikijs/types@1.29.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/types@3.23.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/geojson@7946.0.16': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/ms@2.1.0': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@24.12.2': + dependencies: + undici-types: 7.16.0 + + '@types/prop-types@15.7.15': {} + + '@types/react-dom@18.3.7(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + + '@types/react@18.3.28': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.2.3 + + '@types/sax@1.2.7': + dependencies: + '@types/node': 24.12.2 + + '@types/trusted-types@2.0.7': + optional: true + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@ungap/structured-clone@1.3.0': {} + + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + '@vercel/analytics@1.6.1(react@18.3.1)': + optionalDependencies: + react: 18.3.1 + + '@vercel/functions@2.2.13': + dependencies: + '@vercel/oidc': 2.0.2 + + '@vercel/nft@0.30.3(rollup@4.60.1)': + dependencies: + '@mapbox/node-pre-gyp': 2.0.3 + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 10.5.0 + graceful-fs: 4.2.11 + node-gyp-build: 4.8.4 + picomatch: 4.0.4 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - rollup + - supports-color + + '@vercel/oidc@2.0.2': + dependencies: + '@types/ms': 2.1.0 + ms: 2.1.3 + + '@vercel/routing-utils@5.3.3': + dependencies: + path-to-regexp: 6.1.0 + path-to-regexp-updated: path-to-regexp@6.3.0 + optionalDependencies: + ajv: 6.14.0 + + '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@24.12.2)(yaml@2.8.3))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.4.2(@types/node@24.12.2)(yaml@2.8.3) + transitivePeerDependencies: + - supports-color + + '@volar/kit@2.4.28(typescript@5.9.3)': + dependencies: + '@volar/language-service': 2.4.28 + '@volar/typescript': 2.4.28 + typesafe-path: 0.2.2 + typescript: 5.9.3 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/language-server@2.4.28': + 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.12 + vscode-uri: 3.1.0 + + '@volar/language-service@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vscode/emmet-helper@2.11.0': + dependencies: + emmet: 2.4.11 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + '@vscode/l10n@0.0.18': {} + + abbrev@3.0.1: {} + + acorn-import-attributes@1.9.5(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + agent-base@7.1.4: {} + + ajv-draft-04@1.0.0(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + + ajv@6.14.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + optional: true + + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + algoliasearch@5.54.0: + dependencies: + '@algolia/abtesting': 1.20.0 + '@algolia/client-abtesting': 5.54.0 + '@algolia/client-analytics': 5.54.0 + '@algolia/client-common': 5.54.0 + '@algolia/client-insights': 5.54.0 + '@algolia/client-personalization': 5.54.0 + '@algolia/client-query-suggestions': 5.54.0 + '@algolia/client-search': 5.54.0 + '@algolia/ingestion': 1.54.0 + '@algolia/monitoring': 1.54.0 + '@algolia/recommend': 5.54.0 + '@algolia/requester-browser-xhr': 5.54.0 + '@algolia/requester-fetch': 5.54.0 + '@algolia/requester-node-http': 5.54.0 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-iterate@2.0.1: {} + + astring@1.9.0: {} + + astro-expressive-code@0.40.2(astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3)): + dependencies: + astro: 5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3) + rehype-expressive-code: 0.40.2 + + astro@5.18.1(@types/node@24.12.2)(@vercel/functions@2.2.13)(rollup@4.60.1)(typescript@5.9.3)(yaml@2.8.3): + dependencies: + '@astrojs/compiler': 2.13.1 + '@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 + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) + acorn: 8.16.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + boxen: 8.0.1 + ci-info: 4.4.0 + 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.4 + diff: 8.0.4 + dlv: 1.1.3 + dset: 3.1.4 + es-module-lexer: 1.7.0 + esbuild: 0.27.7 + estree-walker: 3.0.3 + flattie: 1.1.1 + fontace: 0.4.1 + 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.2 + 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.4 + prompts: 2.4.2 + rehype: 13.0.2 + semver: 7.8.4 + shiki: 3.23.0 + smol-toml: 1.6.1 + svgo: 4.0.1 + tinyexec: 1.0.4 + tinyglobby: 0.2.17 + tsconfck: 3.1.6(typescript@5.9.3) + ultrahtml: 1.6.0 + unifont: 0.7.4 + unist-util-visit: 5.1.0 + unstorage: 1.17.5(@vercel/functions@2.2.13) + vfile: 6.0.3 + vite: 6.4.2(@types/node@24.12.2)(yaml@2.8.3) + vitefu: 1.1.3(vite@6.4.2(@types/node@24.12.2)(yaml@2.8.3)) + 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.2(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) + optionalDependencies: + sharp: 0.34.5 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - yaml + + async-sema@3.1.1: {} + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base-64@1.0.0: {} + + baseline-browser-mapping@2.10.29: {} + + bcp-47-match@2.0.3: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + boolbase@1.0.0: {} + + boxen@8.0.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 8.0.0 + chalk: 5.6.2 + cli-boxes: 3.0.0 + string-width: 7.2.0 + type-fest: 4.41.0 + widest-line: 5.0.0 + wrap-ansi: 9.0.2 + + brace-expansion@2.0.3: + dependencies: + balanced-match: 1.0.2 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.29 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.355 + node-releases: 2.0.44 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + camelcase@8.0.0: {} + + caniuse-lite@1.0.30001792: {} + + ccount@2.0.1: {} + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chevrotain-allstar@0.3.1(chevrotain@11.1.2): + dependencies: + chevrotain: 11.1.2 + lodash-es: 4.18.1 + + chevrotain@11.1.2: + dependencies: + '@chevrotain/cst-dts-gen': 11.1.2 + '@chevrotain/gast': 11.1.2 + '@chevrotain/regexp-to-ast': 11.1.2 + '@chevrotain/types': 11.1.2 + '@chevrotain/utils': 11.1.2 + lodash-es: 4.17.23 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + chownr@3.0.0: {} + + ci-info@4.4.0: {} + + cli-boxes@3.0.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.1.0: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + common-ancestor-path@1.0.1: {} + + confbox@0.1.8: {} + + consola@3.4.2: {} + + convert-source-map@2.0.0: {} + + cookie-es@1.2.3: {} + + cookie@1.1.1: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-selector-parser@3.3.0: {} + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + csstype@3.2.3: {} + + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + + dayjs@1.11.20: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + defu@6.1.6: {} + + delaunator@5.1.0: + dependencies: + robust-predicates: 3.0.3 + + dequal@2.0.3: {} + + destr@2.0.5: {} + + detect-libc@2.1.2: {} + + deterministic-object-hash@2.0.2: + dependencies: + base-64: 1.0.0 + + devalue@5.6.4: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@8.0.4: {} + + direction@2.0.1: {} + + dlv@1.1.3: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + dompurify@3.3.3: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dset@3.1.4: {} + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.355: {} + + emmet@2.4.11: + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 + + emoji-regex-xs@1.0.0: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + es-module-lexer@1.7.0: {} + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.16.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.25.12: + 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 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-string-regexp@5.0.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + eventemitter3@5.0.4: {} + + expressive-code@0.40.2: + dependencies: + '@expressive-code/core': 0.40.2 + '@expressive-code/plugin-frames': 0.40.2 + '@expressive-code/plugin-shiki': 0.40.2 + '@expressive-code/plugin-text-markers': 0.40.2 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: + optional: true + + fast-uri@3.1.0: {} + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + file-uri-to-path@1.0.0: {} + + flattie@1.1.1: {} + + fontace@0.4.1: + dependencies: + fontkitten: 1.0.3 + + fontkitten@1.0.3: + dependencies: + tiny-inflate: 1.0.3 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.5.0: {} + + github-slugger@2.0.0: {} + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + graceful-fs@4.2.11: {} + + h3@1.15.11: + dependencies: + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.6 + 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 + + hachure-fill@0.5.2: {} + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.0 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-select@6.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.3.0 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.1 + hast-util-whitespace: 3.0.0 + nth-check: 2.1.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.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.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + + html-escaper@3.0.3: {} + + html-void-elements@3.0.0: {} + + http-cache-semantics@4.2.0: {} + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + import-meta-resolve@4.2.0: {} + + inline-style-parser@0.2.7: {} + + internmap@1.0.1: {} + + internmap@2.0.3: {} + + iron-webcrypto@1.2.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-decimal@2.0.1: {} + + is-docker@3.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-hexadecimal@2.0.1: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-plain-obj@4.1.0: {} + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-schema-traverse@0.4.1: + optional: true + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonc-parser@2.3.1: {} + + jsonc-parser@3.3.1: {} + + katex@0.16.44: + dependencies: + commander: 8.3.0 + + khroma@2.1.0: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + langium@4.2.1: + dependencies: + chevrotain: 11.1.2 + chevrotain-allstar: 0.3.1(chevrotain@11.1.2) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + lodash-es@4.17.23: {} + + lodash-es@4.18.1: {} + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@10.4.3: {} + + lru-cache@11.2.7: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.2: + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + source-map-js: 1.2.1 + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + marked@16.4.2: {} + + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.28: {} + + mdn-data@2.27.1: {} + + mermaid@11.14.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.0 + '@mermaid-js/parser': 1.1.0 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.20 + dompurify: 3.3.3 + katex: 0.16.44 + khroma: 2.1.0 + lodash-es: 4.18.1 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.0.3 + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mlly@1.8.2: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.11: {} + + neotraverse@0.6.18: {} + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: {} + + node-mock-http@1.0.4: {} + + node-releases@2.0.44: {} + + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.3 + + ohash@2.0.11: {} + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@2.3.0: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + + oniguruma-to-es@4.3.5: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 + regex-recursion: 6.0.2 + + p-limit@6.2.0: + dependencies: + yocto-queue: 1.2.2 + + p-queue@8.1.1: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 6.1.4 + + p-timeout@6.1.4: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@1.6.0: {} + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-latin@7.0.0: + dependencies: + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-browserify@1.0.1: {} + + path-data-parser@0.1.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + path-to-regexp@6.1.0: {} + + path-to-regexp@6.3.0: {} + + pathe@2.0.3: {} + + piccolore@0.1.3: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-nested@6.2.0(postcss@8.5.8): + dependencies: + postcss: 8.5.8 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prettier@3.8.3: {} + + prismjs@1.30.0: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + property-information@7.1.0: {} + + punycode@2.3.1: + optional: true + + radix3@1.1.2: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-icons@5.6.0(react@18.3.1): + dependencies: + react: 18.3.1 + + react-refresh@0.17.0: {} + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@4.1.2: {} + + readdirp@5.0.0: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + rehype-expressive-code@0.40.2: + dependencies: + expressive-code: 0.40.2 + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + '@types/hast': 3.0.4 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.2: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + request-light@0.5.8: {} + + request-light@0.7.0: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@5.0.0: {} + + retext-latin@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 + + retext-smartypants@6.2.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.1.0 + + retext-stringify@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 + + retext@9.0.0: + dependencies: + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 + + robust-predicates@3.0.3: {} + + rollup@4.60.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 + fsevents: 2.3.3 + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + rw@1.3.3: {} + + safer-buffer@2.1.2: {} + + sax@1.6.0: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + search-insights@2.17.3: {} + + semver@6.3.1: {} + + semver@7.8.4: {} + + sharp@0.34.5: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.29.2: + dependencies: + '@shikijs/core': 1.29.2 + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/langs': 1.29.2 + '@shikijs/themes': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + shiki@3.23.0: + dependencies: + '@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 + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + sitemap@9.0.1: + dependencies: + '@types/node': 24.12.2 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.6.0 + + smol-toml@1.6.1: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + stream-replace-string@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + stylis@4.3.6: {} + + svgo@4.0.1: + dependencies: + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.2.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + sax: 1.6.0 + + tar@7.5.15: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + tiny-inflate@1.0.3: {} + + tinyexec@1.0.4: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-dedent@2.2.0: {} + + tsconfck@3.1.6(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + + tslib@2.8.1: + optional: true + + type-fest@4.41.0: {} + + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.6: + dependencies: + semver: 7.8.4 + + typescript@5.9.3: {} + + ufo@1.6.3: {} + + ultrahtml@1.6.0: {} + + uncrypto@0.1.3: {} + + undici-types@7.16.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unifont@0.7.4: + dependencies: + css-tree: 3.2.1 + ofetch: 1.5.1 + ohash: 2.0.11 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-modify-children@4.0.0: + dependencies: + '@types/unist': 3.0.3 + array-iterate: 2.0.1 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-children@3.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + unstorage@1.17.5(@vercel/functions@2.2.13): + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.2.7 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.3 + optionalDependencies: + '@vercel/functions': 2.2.13 + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + optional: true + + util-deprecate@1.0.2: {} + + uuid@11.1.0: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@6.4.2(@types/node@24.12.2)(yaml@2.8.3): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.8 + rollup: 4.60.1 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.12.2 + fsevents: 2.3.3 + yaml: 2.8.3 + + vitefu@1.1.3(vite@6.4.2(@types/node@24.12.2)(yaml@2.8.3)): + optionalDependencies: + vite: 6.4.2(@types/node@24.12.2)(yaml@2.8.3) + + volar-service-css@0.0.70(@volar/language-service@2.4.28): + dependencies: + vscode-css-languageservice: 6.3.10 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-emmet@0.0.70(@volar/language-service@2.4.28): + dependencies: + '@emmetio/css-parser': 0.4.1 + '@emmetio/html-matcher': 1.3.0 + '@vscode/emmet-helper': 2.11.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-html@0.0.70(@volar/language-service@2.4.28): + dependencies: + vscode-html-languageservice: 5.6.2 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-prettier@0.0.70(@volar/language-service@2.4.28)(prettier@3.8.3): + dependencies: + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + prettier: 3.8.3 + + volar-service-typescript-twoslash-queries@0.0.70(@volar/language-service@2.4.28): + dependencies: + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-typescript@0.0.70(@volar/language-service@2.4.28): + dependencies: + path-browserify: 1.0.1 + semver: 7.8.4 + typescript-auto-import-cache: 0.3.6 + vscode-languageserver-textdocument: 1.0.12 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + volar-service-yaml@0.0.70(@volar/language-service@2.4.28): + dependencies: + vscode-uri: 3.1.0 + yaml-language-server: 1.20.0 + optionalDependencies: + '@volar/language-service': 2.4.28 + + vscode-css-languageservice@6.3.10: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + vscode-html-languageservice@5.6.2: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} + + vscode-uri@3.1.0: {} + + web-namespaces@2.0.1: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-pm-runs@1.1.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@5.0.0: + dependencies: + string-width: 7.2.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + xxhash-wasm@1.1.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@5.0.0: {} + + yaml-language-server@1.20.0: + dependencies: + '@vscode/l10n': 0.0.18 + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + prettier: 3.8.3 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + yaml: 2.7.1 + + yaml@2.7.1: {} + + yaml@2.8.3: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@1.2.2: {} + + yocto-spinner@0.2.3: + dependencies: + yoctocolors: 2.1.2 + + yoctocolors@2.1.2: {} + + zod-to-json-schema@3.25.2(zod@3.25.76): + dependencies: + zod: 3.25.76 + + zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): + dependencies: + typescript: 5.9.3 + zod: 3.25.76 + + zod@3.25.76: {} + + zod@4.3.6: {} + + zwitch@2.0.4: {} diff --git a/public/img/balance-logo.svg b/public/img/balance-logo.svg new file mode 100644 index 0000000..b6f7c6a --- /dev/null +++ b/public/img/balance-logo.svg @@ -0,0 +1 @@ + diff --git a/public/img/banner.png b/public/img/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3d736d3c261caf5a9486e2a1a7b97fdf2fbec5 GIT binary patch literal 5933 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 E0F0o-F#rGn literal 0 HcmV?d00001 diff --git a/public/img/favicon.ico b/public/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f4f0ee76124a78851a3fcc5bbbbae77af5ad0c7b GIT binary patch literal 1150 zcmd6lu}d3q6vtmBQwIq_96~5T96IHGXThmMhmInlIED@x>|KW7AP7=Q2~wP-6roTg zE>c297nlAG#jRu4w#n~;E*Tu+=bO7Lr}zhW;gk2?_r3SKm*0!o6F%j#@m;s5WVUQ( z&jAS~)iIC$i30yDcK#!D^I`E{!*>|M2i4@cqU|_eBmWcHagbD$i-Yk~;*&T`7O~5* zOWLaGxN)`EJFj(qi`-Ct)c9kOo6q9V`t;SeUyK&Ax?vppE&0WVx|V9AaHMx0fo6UQ z($C-vXb#Tvtzxfyv@RUS;kb&`9qfZ@-+*#G=Ft66bLW1f?ZOXOE1nw%egih|Xw+o2 z>QQeU-e+1PuYDI@FQ9Eeb9?Q2{@ax!Ze+FUsps|h>HKa|;++-Z186eqTWk-l%#L*C zG5p_ep~Z~`Hb8%9e>L<=>RXXZ zmhi9wGw9M-5fF zAO;a$04ai0k@7@TY6vKTG!f-d1BWv=H*<4yv$Ol1{qBBd|J=Jyjy6YNaxee@j@a2^ zTn<&~XF?%|l|-TZ_}K*5x;Ov;@aAziybQ&o=M(;$9rxce4W_! z`b;j7R(W%+=O0uV z{tST7w`KWhO7-6CEJll2d!?kZ}nsvn4A=n^Imzb-L>`!A61W zx?%kvEl%JrEqR{G{YbzrQO~|hJUAvSa^6t>wU-f#D-5Df&h#mfjo0+ClEQ{%&Xn@T zV8PLxczC$-zH~Q%`W^1EjgGhNzqlIZ))(0%n-lBIMHRmGu1Nn#2WHi~PiaH6L9jN} zmWkHqx_!ka6`G}+jlK`ko1kW3Bup=`s*8@aA0ll&-Ab}_i`sN0sB2E?uZyhNJcN49 zx=Qyr?}-C0Go&taMJJnPZ{FvxZ<^Il>@vMtsMl{P2xG%#jQAqQQ+5j;vi}xyEg0{_ z2Y743v#{EK|Dqtn_szgbaOWn=$nly#P-6TE9ZPUM?WsdKlQy+oC_617T|~H;R?vtG z7AwGgZ<7puwU|@AmdxreHOqbL;79v)V&nn6w$@mb@n=Bvy3+8TD$5T^h!{%)zYO1S zuMckR_vlPFH$>Ck?JDd$TkqRr+yqh27dbg^=aHcx{tLQ#K0n4d*c$wH?_F9RgU+VF z2e`JH#Fc!eY#|5U|4JcsjFOZS8~rrd*{iaSrN(K_@Ehk}?ij_ECAYb{p%AKd8cz0_ z!~yQpcS|W3xbKEy?hjtclQU+L8W`0KBk-e{Eb=v*H9xs5>oHIQn=ccUnMov}pJb;~ zO&_ih*&i%+txF){sWSRpk=mP9i+dc8<}@1EQ1`88H7=N_FcBEHL~i~-2u)sVKi?g zmzY;e5~$vzq?*DgGFuW0VWd^|S{SKsDMIvZf8#p<%t!?pARf#@k9EaH(<_R0~xMK`*m)Vo4H@orEOgnGf|_wDNW zd<7L4KjfjuaM@ogj?b&oK_nTHGVD%ogUy0)TRNJ87~G0-Ay0jp!SRVJ37s2^?#STN z{Z>SL!&g4vjuMG`>J{wLm_ko*kJAt*$W4ZtB{eR`NmF8ht#rogaf)>?cb z6__ydyMXiB%?aY@NeuVWPLS5XBWxc` z$cq5Ql@3vt5runQPZhuVEfjwD|GyI?rAx|W;%gky^q*pT>)Ng z>9$-|{>bebRm|hhJ|`iX+J9y8()}+VOG2W-NT;kmB%z@{Vy9o;NcfHY=C9H;2sK)l z7jSDQO%H#w(+n&0<2W8`B6Jlz2ua4RPv6&UlB~-L0cU@Oof&2eK;de5`Q^_hknQf?;Nb9|3|5d0a`#7Fskv)7}==7rAw zR(6UieIqI~(0?Py!iM%w*7)mF^#v{OnN5(fiaK_|2L}V#a%6NQ!^ogYC{gNary>mC z{#7a8`!;R1=%|QI_>&dPdlaV$ufYz3?@s&lk0i=wd|hg1g5g@#e@?@#J@DMb{MJlG zZouw~+5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/inversify-logo.png b/public/img/inversify-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dd25837ab7350547074a0105b32117d53222c9b6 GIT binary patch literal 1209 zcmV;q1V;ObP)R_kXzufQe_x#%G z_UM54p8x;^J4r-ARA}DqT8FNyFbstxj+;IH|6^YmEv0NoxY85W6{6$fcpUr0X;nS) z$Rm$Da!~L#8S4cj?h-OqY$dxzxK|^aQSf`b?buI@K?=Mfm1s?WlS|cbgJP~H<{@|G zO`f%mOuUd?=HrQum#!6JUIWysth3320u-`reode>MM{4n-LQwh$D+ehw zYk@2XDUfExDAc7Owe{rnbzOoI#q*K4AluoqmV4(Ny^WU@v|WPIc7;I3vYWiGCT^v{ z87S@Q0tFzo_ldb7MR%5^?2y`Di1$EhiJ{LyX|EldkU|7%G~-forVXjql^@`*xZJXv zPr+~>!z+aFN)n=F25<#R2XIGL@}DvvqL)lJ`w`8gPwInbw8F!WI_q_kD7C$T=> zbEe<}=DFd~bN{0@y%9N4HpSYGjXqNne#;FKX@&DvgXt{}Z_6EF@#PJ;*66Fe;-_RM zY;$3)07TiTmB#Q+wFfl*6YrtvxhCQS}Q8l0fJWus2 z$dqOk>+nSTucv!ifn#vByS|eHU^F_2O|b~p>AK76-tE}nELq?8sw)(IfCGF-AdU-2 z=sk-1YZVt6)O*!H>9@&a#czY#yn6fn;x=rElM)0!t)l+c+of5nH-$z zXQEdte6XftW5@Z<_NWF^6}64o&EtE9nf{2j(TY(g&M`n54X2VXnYB_Y0?msGh|W;k=>)s)uM8atCJXU@3Q=u?{Ju1rJ5h ztZ)lf@)#HwAyxR4ZUs_>kNTI|e2%TdDPluPpFJ;_mX+^R2ZBkIG}{sGfzkw0<@nA93%UzRzYw|)N!ys6~t923l@9n!tGMvA}OvydCwqUEKQQ& zd#|`Q24rWQK-m{dZj+e)N8;+>Q-|`q8@OC^*!4wBk2iuigEEQiIA$ySm!LaA{Qt-h zRp)&;OP|Nvr4Z5$&8Q4eyPkk& zTJ~U{ZtLO_9&6Z~ZUoXeDfC=bO%GlOfHJiF=D+|?-E~xT({De4Jmp*4$ z!7{4qvsh(IM^hIyWrJ~Mp0MH!A$~TNCRs5`+K^+@`hXhSJ#}Wex$sF%*mk|Y)AvF4TOsEDL7KAz0U;>5Al|0%v$c~ z9oe$(ePkkD7ud9Cy4aBazZ_8jV01KyR$@< z6t-?hOj2}CD!s2*QkO%wN;@!|@>1izFz=W?@+R&7tg&v#vV&4F*RdRWCUq?MqLRaL zjAw1GGsEj~8OT~a&2>oEOiG?_*LY}fyn{6dR6M^P+#Fu?)NuTcRD<30pyonx@h(4SM;8V0j4nB^Alcx>AcP>}f#O7= z4+Lad3`9uDKsZ-W$FEVxnnuLp@w0df!6Bk!Zj~vuub=p($~0&$EM)HHKIwEvVH^II>V$y!rH1y zSNg$NGz7|FZ6X^XPdCLb!=khHv}yIX>Cc&g%D|DN;p^jO30uS6faL7v#tkiG)Wyi^ z9L9*iW5Lri>(v;>3oc zZ^-p=pX0kUnby9E^{dXAaLw{I>5J35GYxQ|aTn^>V0|MpiGzU#`@+2q)P`Pe@Dpt*Wh*qYF~EAUu=eSmiRRMub*#NpJ={S5$Ou z(iwBhm|eS3fSz|ctUTtbfG$+b*02PRD>n*(R7YY{t285rqKz6~@>T#=RqLi!-~XQx zj&$ZT*ab0{-$-yUL!0ya!z!&v?-7fEY=Z{JDfy0eYYPXxPFjMXk;{y8Xv~S&L2ooX zkj)}5E$)L}nkv%~xBD)d+riTI;F6Q?wg2Z`F@uhT;hMKx6)DPlf58{|`oZd|Yn)$S zyT2DiEeBR9<`UMCVXpk5ZA7v)71C+t+CVaVx-;vz&$d-(DW17z3ITh(qnCWZw`W}5 zd%X^J8oSMXn&`yi$tO4QH=_6M!;j>E6Pqf3Ot3GV`7H06Fv$@8I0;` + + + + + image/svg+xml + + + + + + + + + + + diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..71980b45206872ee77f79079be56eaa671abb4ca GIT binary patch literal 15240 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 literal 0 HcmV?d00001 diff --git a/public/img/logo.svg b/public/img/logo.svg new file mode 100644 index 0000000..995f60a --- /dev/null +++ b/public/img/logo.svg @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/public/img/monday-logo.svg b/public/img/monday-logo.svg new file mode 100644 index 0000000..b22d286 --- /dev/null +++ b/public/img/monday-logo.svg @@ -0,0 +1,92 @@ + + + + + + image/svg+xml + + + + + + + Logo / monday.com + + + + + + + + + + diff --git a/public/img/nestjs-logo.png b/public/img/nestjs-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..44c064e69362bbec29b105645a683808dd296fe8 GIT binary patch literal 1614 zcmV-U2C?~xP);37`oBTnHXPT(U>;3H1pBTnEWPT(U>;3H1pBTnHXPT(U>;3H1pBTnEW zPT(U>;3H1pBTkHspzHtu02OpnPE!ENbteed6#DVzRh(LCMFnTG@^oC4|DqT%$X}iEw>h$rhxQ>aR+I0yHL+U zV9GvzHn-wa6{3I#atENf5xM6NWED?4#1GK;z9WMNFz*}l_<;}THsn#)Og5T@QS1Gk zz-*vsJb4rW?@>2(QNa)+7m{#z3vep}kywK87Ow9A_JOp<^Dr0D*2hJH_r`^Vxcad~ z2TzA3ZeaDVx#L!{FW^AR#4wDhK@Tw$FMOo~Mt$R6KQcD0gkCv9h!7(F36zJjH50s6 zh^zo#x@C-HrwIR6B;!PN5{=-fYxx>5KW*5!9|Q~A!i0i0Vz<$e*Q7fOt9aNIp`>Zd zs;Yy+)nLbSldgBGe{;sJmx1WF@O4#-4xG$s;$xr6 zwl36>3+O;Pzjf$l-RBOF51*k30I_oQSwzT)bmQXNvrmQ6p6{1D;-$Kjhh@& z%qCTEr^4JWEogG78k(M35mE!Fjswwlxuu39a$9)8e~YY2CiSDf2AW*5LChb zMWkul5%$}^%OP{;b!)9{dpH2TpQNoS7pNKILhJ?psfNUmg*%1!?-s_bz{$KS#_O%{ zGL>>x{FAO5&2L4X)$5Yn2|VwOpkB1O#9xZ+Wl<%~bQflZG5EZ`Qg91fh z7af{)md?r?Os({QS97QlShRXc1a|{(flF>$84tZxXBb_ywjqn&2>j7xrV_9kp8P!Y z&-n?3#p2A-{(ZSb=8w)EU>O5v>Tv(7P>6HQKXu;7i5{mdfh^86b!`D{^K(&Wa} zBU|!+0&Y6?Pry|D6Yyo0Ce8vk7r8h&4NR|jGdMqxl9!IG&I8j+U8>>A2=&5|FHIfI zh4{rUEiZJ}M+U!!;Sxf*{?9%Jne33_cgL)z8}&)_u1AqW?zP8!P>PI%?&(?`DRr67 zjmTfX;~;77$`GEeoqmPIVL^N8;5s|+B=A-qxni6d73UL_abfG>!vfAWFaXVnWSlSh zK3ha%vfB9=7}^xISf^&Cc19Z*fILm>uyV!J_0t`Qw@TU^VDGau-M}?tkWuXu+vBq- zK!&O{%(CejaF`~8R5AIzT=TGjec-gEvOB-m^CAnU%)sC`?RgZ{`|bqj(`t5CCFZxr zo-Jqu0{bRC<0Q{#gsYJ-341L42rsQ&4^NMaz`OL1$>*qVzffE@{1{(vkB*JH{Uk}A z+aki2VmHq@Ps=k%2PJvSFj?&8)xCf@xjzDvtj&;&QiXMRnh@`%U`kltCf|Nr_l285 z@bzd2Ds$1wxV6*M4~ zl~0?>+(T)w24Wjmyq8M04$P%L$D@(ov>7qjeWE)gE&&ejb=hvMk;sT|@y7z}#_Zu` z>|CCp?WSL}jTuoI<;0m7()2oI%Qi8qy>ejOiyUB&KK~osZPrJxutKivd1Gp#(3MZ$ z8l=RW^`xPv6n%adY9a^Bq64kZc$YAo`PJ6N0y zI@;UERV$QI45_i+jRpb+*wW=yGi8!{iz?3tY>Vhhdy{#Za;m6f(Ccm0^itum(BI#P zn^r*LfkEx{{r-*12Q$$oXDj2*>QRe*;BOaw6?F+W-In M07*qoM6N<$f-avD9{>OV literal 0 HcmV?d00001 diff --git a/public/img/sinon-logo.png b/public/img/sinon-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9a89334bf389a86d0a7827fbbad6925d06cff33c GIT binary patch literal 4116 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 + + + \ No newline at end of file diff --git a/public/img/vitest-logo.png b/public/img/vitest-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0e2f34d1cafd887bf74e22c15afd79f86191bc GIT binary patch literal 1136 zcmeAS@N?(olHy`uVBq!ia0vp^6+oQF!3-pCo2sV)snP(S5LfpCpW@llMYDiNs%WMZ zkX*P*0mvwvCAo5qLeXrgKgYF!f`37zB!pWCRtXdb3IY*G!Ay`cGz8T<8*1#I*$hB) zK#FHepZ)6W0d#Q~ z5^gK-*%o3@+vS zF>$|&F1~+t=>GvVwQP62pPYACeLb?04{`qFowGCE!u?Of-XE_gu?W6n?d7_E$1X;p zoZ0TryS6;9CwVWPwcX*p@xdbFk@DP~T>s4rp7g~mne4w_y5M1xPh!tx|7S)Ils;X1 zx7^XZ=DnV|$7G$Tj|?Vn+BV8PcNLqJ;mH40!O!dK!FEGINvRsab-Pjv-Cj!mf7X3i zOIn-fgnxp^1+RELFOLiBcHQf6a8y4fr{QK^pcX1#!pIdB8|$if;Oo`7R`sGL>!l@T zhqYYiZC-FSS2m6(vOq7Y=Ud!$-_mII{j%SVFaB6}UjMLXpyOE@`amG8J8ef4XU zY~T6&y}!${FV5fpxBmKvN7GVsW(7Mhue$K{-u5u-=yfqqHfm2PKf`(JhUxp2eYXz( z;t9W&qrXQrb3?_alP-6bS!T~?)jy?gtF`i-H|yQ<*g1Wv7dTz9%{6(fq}i^wK-w*@xHjWkU{KqhHGOw4x87^s z^oeDj{=?4KTW&8|GUw-_y9SR>ol36Q*7DNsWSQ#I*$JG*F_t?;xM#igI=M7}Q-6n1 zkz&xHUz4;I)tT-pJUH|;Wv6sY%!WDoWz7q?r@XDv%t#bhyZzG1oFQhypVpg>%`qK0 z$L{1Y>|)qiy)%K0w=8-mfAn<8o7@(66&_yVVc+!FBIjrAr^K@6DYs9}-!k{^=ib8? zpC^WyznJ~YGGP1kZ#x&&$C`gVHp9AM!>)rju9n7&mF?a#_f>6cRr-eWRcrEI+}X}k zV4r=jBs}57+t{-=HdWRFLl>UKa}u&=QG7K zzvfK86LqL|U1iDC)X2`&H^2R5nS4C&tw)`0qLr!3ydBT?s#*RvPB{C^Z6^1msk{6m z4RVjJ+py-2=#=n+)+eDcjFqa>75RTxnwD#s*H%7~o3e9_>1z!=_qdyLr-qlOr?5=d zT)bn=^UC%|Mky-go^j`wetKxG=O1@{?)2+r&!2pa-PZGPQ;JNvR`O2eod=8Cjh5Y> yEFClbl;3Zm>e30ZzudlCgj{{7`1gI*e}_RelF{r5}E)^Su6 Suites is a unit testing framework for TypeScript backends working with inversion of control and dependency injection. It generates mocks for class dependencies and provides a virtual test container that mirrors your real DI container, so you can write solitary or sociable unit tests with minimal boilerplate. + +Suites supports NestJS and InversifyJS, integrates with Jest, Sinon, and Vitest, and offers a migration path from Automock. + +## Get started + +- [Get Started overview](https://suites.dev/docs/get-started/): entry point for new users +- [Why Suites](https://suites.dev/docs/get-started/why-suites): the problem Suites solves and how it differs from manual mocking +- [Installation](https://suites.dev/docs/get-started/installation): install the right packages for your DI framework and test runner +- [Quickstart](https://suites.dev/docs/get-started/quickstart): a minimal end-to-end example + +## Guides + +- [Guides overview](https://suites.dev/docs/guides/): index of conceptual and how-to guides +- [Fundamentals](https://suites.dev/docs/guides/fundamentals): core concepts and the testing model +- [Solitary tests](https://suites.dev/docs/guides/solitary): isolating a single class with auto-generated mocks +- [Sociable tests](https://suites.dev/docs/guides/sociable): testing a class together with selected real collaborators +- [Test doubles](https://suites.dev/docs/guides/test-doubles): mocks, stubs, and spies in Suites +- [Virtual test container](https://suites.dev/docs/guides/virtual-test-container): how Suites builds an isolated DI graph for each test + +## API reference + +- [API Reference index](https://suites.dev/docs/api-reference/) +- [TestBed (solitary)](https://suites.dev/docs/api-reference/testbed-solitary) +- [TestBed (sociable)](https://suites.dev/docs/api-reference/testbed-sociable) +- [Mock](https://suites.dev/docs/api-reference/mock) +- [Mock configuration](https://suites.dev/docs/api-reference/mock-configuration) +- [Unit reference](https://suites.dev/docs/api-reference/unit-reference) +- [Types](https://suites.dev/docs/api-reference/types) + +## Migration + +- [Migrating from Automock](https://suites.dev/docs/migration-guides/from-automock) + +## Project + +- [Changelog](https://suites.dev/docs/changelog) +- [GitHub repository](https://github.com/suites-dev/suites) +- [Examples repository](https://github.com/suites-dev/examples) diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..0a16aaf --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,71 @@ +# Default: allow crawling +User-agent: * +Allow: / + +# =========================================== +# Search engines: explicitly allowed +# =========================================== +User-agent: Googlebot +Allow: / + +User-agent: Bingbot +Allow: / + +User-agent: DuckDuckBot +Allow: / + +# =========================================== +# AI crawlers: explicitly allowed so Suites +# shows up in AI-generated answers. +# =========================================== +User-agent: OAI-SearchBot +Allow: / + +User-agent: ChatGPT-User +Allow: / + +User-agent: GPTBot +Allow: / + +User-agent: ClaudeBot +Allow: / + +User-agent: Claude-Web +Allow: / + +User-agent: PerplexityBot +Allow: / + +User-agent: Google-Extended +Allow: / + +# =========================================== +# SEO scrapers: blocked. +# They consume bandwidth, skew analytics, +# and provide no discovery value to us. +# =========================================== +User-agent: AhrefsBot +Disallow: / + +User-agent: SemrushBot +Disallow: / + +User-agent: MJ12bot +Disallow: / + +User-agent: DotBot +Disallow: / + +User-agent: PetalBot +Disallow: / + +User-agent: BLEXBot +Disallow: / + +User-agent: DataForSeoBot +Disallow: / + +User-agent: serpstatbot +Disallow: / + +Sitemap: https://suites.dev/sitemap.xml diff --git a/src/components/blackbox/BddReverseDemo.astro b/src/components/blackbox/BddReverseDemo.astro new file mode 100644 index 0000000..a108c4f --- /dev/null +++ b/src/components/blackbox/BddReverseDemo.astro @@ -0,0 +1,203 @@ +--- +import { Code } from 'astro-expressive-code/components'; + +const sourceTest = `test.system('subscribe-flow', 'alice subscribes to the pro tier', () => { + test('alice is an existing user with no active subscription', async ({ request, system }) => { + const response = await request.post(\`\${system.bff.hostBaseUrl}/subscriptions\`, { + data: { userId: 'alice', paymentMethodId: 'pm_card_visa' }, + }); + + expect(response.status()).toBe(201); + }); +});`; + +const analyzedTrace = `adapter: playwright +feature: subscribing to the pro tier +flow: subscribe-flow + +scenario: alice is an existing user with no active subscription + when: + alice POSTs /subscriptions with a valid card + then: + response status is 201 + +grammar: + aaa-shape: pass + missing-then: pass + opaque-step: none`; + +const featureFile = `@flow:subscribe-flow +Feature: subscribing to the pro tier + + Scenario: alice is an existing user with no active subscription + When alice POSTs /subscriptions with a valid card + Then the response status is 201`; + +const gateOutput = `$ pnpm exec blackbox features check --features ./features --tests ./e2e/tests +syntax: 1/1 .feature files parsed cleanly. +drift: no drift detected. + +$ pnpm exec blackbox features lint ./e2e/tests --fail-on error +no lint findings`; +--- + +
+
+
+ Test to Feature REPL +

Future package-backed REPL flow: load a test, analyze the AAA/Given-When-Then shape, emit Gherkin, then run the gates.

+
+
+ + + + +
+
+ +
+
+

Source Test

+

The input can be a plain Playwright-style system test or a Blackbox BDD-DSL test. Plain tests are decompiled best-effort; DSL-authored tests preserve more intent.

+ +
+ + + + + + +
+
+ + + + diff --git a/src/components/blackbox/BlackboxDemo.astro b/src/components/blackbox/BlackboxDemo.astro new file mode 100644 index 0000000..3d1812d --- /dev/null +++ b/src/components/blackbox/BlackboxDemo.astro @@ -0,0 +1,305 @@ +--- +// Front-page Blackbox demo simulation. Lives as a real Astro component +// because MDX otherwise tries to parse the `{...}` JS object literals in the +// script body as MDX expressions, which throws acorn errors. +// +// Behavior: click to start, auto-advances through states with a setTimeout +// loop, respects prefers-reduced-motion, no GIFs or images. Five states, +// four transitions: idle, executing, spans captured, feature file revealed, +// forbids-on-physical-absence demo. +--- + +
+
+ + + State 0 of 4. Idle. +
+
+
+
Playwright test (authored once)
+
{`scenario('subscribe-flow', 'subscribing as a pro tier user', ({ given }) => {
+  given('alice is an existing user', async ({ system, capture, when }) => {
+    await when('alice POSTs /subscriptions', async ({ then }) => {
+      await then('the captured effects satisfy the subscribe-flow catalog entry', async () => {
+        await expect(capture).toMatchCatalog();
+      });
+    });
+  });
+});`}
+
+
+
Generated feature file (regenerates every run)
+
{`# the file is generated; run the simulation to see it appear`}
+
+
+
    +
  1. Idle. Press Run.
  2. +
  3. The Playwright test executes. The bff, order-service, postgres, redis, and SQS containers receive real requests.
  4. +
  5. Blackbox observes the OpenTelemetry spans the run emits at the boundary.
  6. +
  7. The generated subscribe-flow.feature appears. Every line is backed by a captured effect.
  8. +
  9. The ghost-user path returns 404. The forbids clauses pass because the Stripe and SQS spans are physically not there.
  10. +
+
+ + + + diff --git a/src/components/blackbox/OverviewDiagram.astro b/src/components/blackbox/OverviewDiagram.astro new file mode 100644 index 0000000..44420ec --- /dev/null +++ b/src/components/blackbox/OverviewDiagram.astro @@ -0,0 +1,345 @@ +--- +interface Props { + kind: 'workflow' | 'fit' | 'coverage' | 'blind-spot' | 'quickstart' | 'proof-loop'; +} + +const { kind } = Astro.props; +--- + +{kind === 'proof-loop' && ( +
+ + Tests, effects, and feature files + System tests drive behavior, runtime effects prove boundary behavior, feature files make the behavior readable, and gates keep the artifacts synchronized. + + + + + + + + Three artifacts, one verification loop + Tests exercise the workflow. Effects prove what happened. Feature files make the behavior readable. Gates keep them aligned. + + + System test + drives one workflow + source of executable behavior + + + + + Runtime effects + required and forbidden + source of proof + + + + + Feature file + Gherkin readable view + source of shared language + + + review changes, rerun gates, keep behavior synchronized + + + features lint/check + system tests + effect coverage + optional observation comparison + +
The combined workflow is stronger than any artifact alone: tests keep behavior executable, effects make runtime proof reviewable, and feature files give humans and agents a readable behavior surface.
+
+)} + +{kind === 'blind-spot' && ( +
+ + The E2E blind spot + A request returns a passing response while the internal effects between input and output remain unchecked until Blackbox records and classifies them. + + + + + + + + A green E2E test can still leave behavior unverified + Blackbox keeps the request and response, then adds evidence for the effects that happened between them. + + + Input + POST + /subscriptions + + + usual blind spot + effects not reviewed + + + Output + PASS + 201 Created + + + + + Blackbox evidence + seen + payment intent + seen + subscription insert + missing + activation message + + + The test result stays useful. The evidence now says whether the behavior behind it is complete. + Runtime evidence -> effect catalog -> coverage report -> reviewable gate + +
Normal E2E assertions usually see the outside of the workflow. Blackbox adds a review surface for the required, forbidden, and missing effects that explain whether the workflow really behaved correctly.
+
+)} + +{kind === 'workflow' && ( +
+ + Blackbox workflow + A system or end-to-end test run produces runtime evidence. Blackbox maps the evidence into effects, then generates effect coverage reports, optional behavior specs, and CI gates. + + + + + + + + + + From a real run to a reviewable gate + Blackbox keeps tests, runtime evidence, behavior artifacts, and CI decisions connected. + + + + System or E2E + test run + workflow executes + + + + + + + Runtime + evidence + spans and observations + + + + + + + Effect model + requires and forbids + behavior is classified + + + + + + + JSON, Markdown, HTML, JUnit + + + + + CI gate + + + + + Reports and artifacts + + +
Blackbox starts with the test run you already trust, then turns the observed behavior into evidence, effect coverage, behavior artifacts, and gates that can be reviewed in CI.
+
+)} + +{kind === 'fit' && ( +
+ + Where Blackbox fits + Blackbox is strongest around controlled system tests with managed dependencies, and can also observe broader end-to-end journeys that include unmanaged dependencies. + + + + + + + + + + + + + Blackbox is strongest where the run is realistic and controlled + The same evidence model can observe broader E2E journeys, but managed dependencies make failures easier to trust as gates. + + + Managed + local, resettable + Unmanaged + remote, shared, vendor + + + Controlled system test + services, databases, queues, caches + best first fit for CI gates + + + Broader E2E journey + auth, email, vendors, shared envs + valuable evidence, noisier gates + + + Runtime evidence and effect coverage + + + same workflow, different control + +
Start with controlled system tests when you need a deterministic merge gate. Use broader E2E runs when the goal is full-journey evidence and you can tolerate more environmental noise.
+
+)} + +{kind === 'coverage' && ( +
+ + Effect coverage catches missing behavior between input and output + A simulated report where the input and output assertion passes, but effect coverage shows a missing queue message and an OMC/DC masking signal. + + + + + + + + Input and output can pass while behavior is missing + Effect coverage makes the middle of the workflow visible: what the system actually did. + + + Input + POST + /subscriptions + + + + + Output assertion + PASS + 201 Created + + + + + Behavioral evidence + + + OBSERVED + subscription inserted + + + MISSING + activation message + + + MASKED + tier decision not distinct + + + Review question: should input/output success be enough when required behavior is missing? + +
System-test effect coverage does not replace the assertion or the coverage report. It adds the missing behavior view: which required, forbidden, and decision-sensitive effects appeared in the run.
+
+)} + +{kind === 'quickstart' && ( +
+ + Quickstart proof trail + One system test command runs the subscription flow, records runtime evidence, and writes effect contracts, coverage reports, diagnostics, and optional behavior specs. + + + + + + + + One run should leave a proof trail + The quickstart is successful when the command produces artifacts a reviewer can inspect. + + + Run + pnpm test:system + + + + + Runtime evidence + Redis, Postgres, HTTP, SQS + spans and per-test diagnostics + + + + + Effect contract + required effects + forbidden effects + checked on later runs + + + Coverage reports + OMC/DC, HTML, Markdown + + + Diagnostic evidence + spans and V8 per test + + + Optional behavior spec + feature file when enabled + + + + + +
The first run is not finished when the endpoint returns 201. It is finished when the evidence, effect contract, reports, and optional readable spec can be inspected together.
+
+)} + + diff --git a/src/components/blackbox/QuickstartTrackDiagram.astro b/src/components/blackbox/QuickstartTrackDiagram.astro new file mode 100644 index 0000000..30039fe --- /dev/null +++ b/src/components/blackbox/QuickstartTrackDiagram.astro @@ -0,0 +1,175 @@ +--- +interface Props { + kind: 'existing' | 'new-test' | 'specs'; +} + +const { kind } = Astro.props; +--- + +{kind === 'existing' && ( +
+ + Existing tests track + Existing tests are run again with Blackbox, creating observed effects, a reviewed effect catalog, and matcher-backed effect coverage. + + + + + + + Track 1: add Blackbox to tests you already run + The first value is one reviewed catalog entry and one coverage signal. + + + + + 1 + existing test + input/output + + + + + + + 2 + add wrapper + observe effects + + + + + + + 3 + review catalog + requires/forbids + + + + + + + 4 + rerun + coverage signal + + + + + 5 + Advanced after the first loop works: inspect OMC/DC or generate behavior specs. + +
Existing tests already create useful traffic. Blackbox turns that traffic into observed effects, a reviewed effect catalog, and effect coverage on the next run.
+
+)} + +{kind === 'new-test' && ( +
+ + No system tests track + A team without useful system tests starts with the showcase repository, studies one subscription flow, then copies the smallest working system-test shape. + + + + + + + Track 2: run the showcase, then write one narrow flow + The showcase teaches the proof loop before you wire your own system. + + + + 1 + run showcase + subscription flow + see real artifacts + + + + + 2 + copy the shape + test.system + capture + one critical flow + + + + + 3 + first proof + catalog + coverage + then next layers + + + + 4 + The first custom test should produce one catalog entry and one coverage signal. + +
When no useful system tests exist, the showcase is the fastest way to understand the effect proof loop before adding one narrow flow to your own service.
+
+)} + +{kind === 'specs' && ( +
+ + Behavior specs after effects + Feature files can be skipped, emitted from tests, or combined with effects after a system test exists. + + + + + + + Behavior specs are optional once a system test exists + Skip them, emit feature files from tests, or combine readable specs with runtime effects. + + + + 1 + system test + required input + + + + + 2 + emit feature + or skip + + + + + 3 + drift check + keep specs current + +
Feature files do not require effect coverage. They need a test source. Effects add runtime proof when the team wants the stronger path.
+
+)} + + diff --git a/src/components/blackbox/QuickstartTracks.astro b/src/components/blackbox/QuickstartTracks.astro new file mode 100644 index 0000000..9c7f176 --- /dev/null +++ b/src/components/blackbox/QuickstartTracks.astro @@ -0,0 +1,648 @@ +--- +import { Code } from 'astro-expressive-code/components'; +import QuickstartTrackDiagram from './QuickstartTrackDiagram.astro'; + +const existingSteps = [ + 'Add wrapper', + 'Run command', + 'Review catalog', + 'Tighten catalog', + 'Read coverage', +]; + +const newSteps = [ + 'Run showcase', + 'Inspect proof', + 'Copy test shape', + 'Write one flow', + 'Read coverage', +]; + +const existingTestSnippet = `import { expect, test } from './testbed.js'; + +test.system('checkout-flow', 'customer completes checkout', () => { + test('existing checkout test', async ({ capture, request, system }) => { + const response = await request.post(\`\${system.app.hostBaseUrl}/checkout\`, { + data: { cartId: 'cart-123', paymentMethodId: 'pm_card_visa' }, + }); + + expect(response.status()).toBe(201); + + await expect(capture).toMatchCatalog(); + }); +});`; + +const showcaseTestSnippet = `import { expect, test } from './testbed.js'; + +test.system('subscribe-flow', 'subscribing a user to the pro tier', () => { + test('alice subscribes', async ({ capture, request, system }) => { + const response = await request.post(\`\${system.bff.hostBaseUrl}/subscriptions\`, { + data: { userId: 'alice', paymentMethodId: 'pm_card_visa' }, + }); + + expect(response.status()).toBe(201); + + await expect(capture).toMatchCatalog(); + }); +});`; + +const existingCatalogSnippet = `specVersion: "0.1" + +checkout-flow: + requires: + - { boundary: postgres, op: INSERT, key: orders } + - { boundary: http, op: POST, key: /payments } + - { boundary: sqs, op: SendMessage }`; + +const existingReviewedCatalogSnippet = `specVersion: "0.1" + +checkout-flow: + requires: + - { boundary: postgres, op: INSERT, key: orders } + forbids: + - { boundary: http, op: POST, key: /refunds }`; + +const showcaseCatalogSnippet = `specVersion: "0.1" + +subscribe-flow: + requires: + - { boundary: redis, op: GET, key: "user:*:tier" } + - { boundary: postgres, op: INSERT, key: subscriptions } + - { boundary: sqs, op: SendMessage } + forbids: + - { boundary: postgres, op: DELETE } + - { boundary: http, op: POST, key: /v1/refunds }`; + +const existingRunCommand = ``; + +const playwrightExampleCommand = `npx playwright test --config ./e2e/playwright.config.ts`; + +const showcaseRunCommand = `pnpm test:system`; + +const baselineMessage = `toMatchCatalog: no catalog entry for "checkout-flow"; baseline pending. +Will be written at fixture teardown.`; + +const effectCoverageOutput = `effect coverage +metric value +catalog entries 1 +satisfied 1 (100%) +failed 0 +uncovered 0 + + entry state runs why +✓ checkout-flow satisfied 1/1 +written: /coverage.json`; + +const showcaseProofArtifacts = `e2e/tests/__effects__/00-baseline-subscribe.system.effects.yaml +e2e/.blackbox-coverage/coverage.json +e2e/.blackbox-coverage/omcdc-propagation.md`; + +const replayCommand = `pnpm exec blackbox coverage replay --coverage-dir e2e/.blackbox-coverage --out reports`; + +const omcdcArtifacts = `e2e/.blackbox-coverage/omcdc-propagation.md +e2e/.blackbox-coverage/omcdc-propagation.json +e2e/.blackbox-coverage/omcdc.html`; + +const featureCommands = `pnpm exec blackbox features emit ./e2e/tests --out ./e2e/features +pnpm exec blackbox features check --features ./e2e/features --tests ./e2e/tests`; +--- + +
+
+
+ Before you start +

Install Blackbox first. Then choose the path that matches your repo: an existing system or E2E test, or the Blackbox showcase.

+
+
+ First success +

One run records effects, one catalog entry is reviewed, and the next run reports a satisfied effect coverage entry.

+
+
+ + + + + +
+

Track 1: Add Effect Coverage To An Existing System Test

+

Use this path when you already have a system or E2E test that exercises a valuable flow. The first win is not a new suite. It is evidence for behavior your existing test already drives.

+ + +
+

1Add the Blackbox wrapper and matcher

+

Keep the request and response assertions you already trust. Add the Blackbox system boundary and `toMatchCatalog()` at the end of one valuable flow.

+ +
+ +
+

2Run your normal system-test command

+

Blackbox does not need to replace your runner. Use the command your project already uses; the Playwright command below is only an example.

+ + +

You should see a baseline-pending message the first time the catalog entry does not exist.

+ +
+ +
+

3Review the effect catalog

+

The first useful artifact is the generated catalog. It starts as observed behavior, not a trusted contract. Review it before committing it.

+ +
+ +
+

4Tighten the catalog to one meaningful contract

+

`toMatchCatalog()` is already the matcher. Your job here is to edit the catalog: keep one required effect that proves useful behavior and add one forbid for behavior that must not happen.

+ +
+ +
+

5Rerun and read effect coverage

+

On the next run, the terminal should show whether the reviewed catalog entry was satisfied, failed, or uncovered.

+ +

That is the first quickstart win: the same flow now proves something about the behavior inside the system, not only its response.

+
+
+ + + + +
+ + + + diff --git a/src/components/docs/Breadcrumb.astro b/src/components/docs/Breadcrumb.astro new file mode 100644 index 0000000..601ffe0 --- /dev/null +++ b/src/components/docs/Breadcrumb.astro @@ -0,0 +1,54 @@ +--- +/* + * Docs breadcrumb. Computes a trail from the slug. + * + * Shape: Section / Subsection / ... / Current Page + * + * No "Docs" prefix, no "Home" prefix; both are tautological. The topbar's + * `Suites / docs` brand mark already signals "you are in docs", and the active + * product tab (Unit / Blackbox) already shows the section root. The breadcrumb + * starts at the first slug segment so the first item is always a useful jump. + * + * Separator is a thin slash character (not an SVG chevron) so it lines up + * cleanly with the text baseline at 13px and matches the existing brand-mark + * "Suites / docs" pattern in the header. + * + * Intermediate segments are humanized from the slug (`effect-coverage` -> `Effect coverage`, + * only first word capitalised so multi-word labels do not become Title Case). + * The final segment uses the page's frontmatter title verbatim so it matches the h1. + */ + +interface Props { + slug: string; + title?: string; +} + +const { slug, title } = Astro.props; + +function humanize(segment: string): string { + const decoded = decodeURIComponent(segment).replace(/[-_]/g, ' '); + return decoded.charAt(0).toUpperCase() + decoded.slice(1); +} + +const segments = slug.split('/').filter(Boolean); +const items = segments.map((seg, i) => { + const href = '/docs/' + segments.slice(0, i + 1).join('/'); + const isLast = i === segments.length - 1; + const label = isLast && title ? title : humanize(seg); + return { label, href, isLast }; +}); +--- + diff --git a/src/components/docs/LastUpdated.astro b/src/components/docs/LastUpdated.astro new file mode 100644 index 0000000..e12f771 --- /dev/null +++ b/src/components/docs/LastUpdated.astro @@ -0,0 +1,23 @@ +--- +/* + * Small "last updated" stamp at the bottom of the article, before the prev/next pager. + * Reads an ISO date string from frontmatter. If absent the component renders nothing + * (the layout decides whether to call this or skip it). + */ + +interface Props { + iso: string; +} + +const { iso } = Astro.props; + +function fmt(s: string): string { + const d = new Date(s); + if (Number.isNaN(d.getTime())) return s; + return d.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); +} +--- +

+ Last updated + +

diff --git a/src/components/docs/PageActions.astro b/src/components/docs/PageActions.astro new file mode 100644 index 0000000..26bd2e4 --- /dev/null +++ b/src/components/docs/PageActions.astro @@ -0,0 +1,132 @@ +--- +/* + * Docs page-actions cluster. + * + * Three affordances, dark-mode-first: + * 1. Copy Markdown -- copies the page's raw markdown body to the clipboard so + * the reader can paste it into an LLM, an issue, or their notes. The body + * is rendered as a hidden + + diff --git a/src/components/docs/PrevNext.astro b/src/components/docs/PrevNext.astro new file mode 100644 index 0000000..2b8d723 --- /dev/null +++ b/src/components/docs/PrevNext.astro @@ -0,0 +1,39 @@ +--- +import sidebar, { productFromPath } from '@/config/sidebar'; + +interface Props { + slug: string; +} +const { slug } = Astro.props; + +const currentHref = `/docs/${slug}`.replace(/\/$/, ''); +const product = productFromPath(`${currentHref}/`); +const flat = sidebar[product].flatMap((group) => group.items); + +const idx = flat.findIndex((item) => item.href.replace(/\/$/, '') === currentHref); + +const prev = idx > 0 ? flat[idx - 1] : null; +const next = idx >= 0 && idx < flat.length - 1 ? flat[idx + 1] : null; +--- +{(prev || next) && ( + +)} diff --git a/src/components/docs/Sidebar.astro b/src/components/docs/Sidebar.astro new file mode 100644 index 0000000..b2777f2 --- /dev/null +++ b/src/components/docs/Sidebar.astro @@ -0,0 +1,46 @@ +--- +import sidebar, { productFromPath } from '@/config/sidebar'; + +const currentPath = Astro.url.pathname.replace(/\/$/, '') || '/'; +const activeProduct = productFromPath(Astro.url.pathname); +const groups = sidebar[activeProduct]; + +function isGroupActive(items: { href: string }[]) { + return items.some((item) => { + const h = item.href.replace(/\/$/, ''); + return currentPath === h || currentPath.startsWith(h + '/'); + }); +} +--- + diff --git a/src/components/docs/TOC.astro b/src/components/docs/TOC.astro new file mode 100644 index 0000000..3a3ed6b --- /dev/null +++ b/src/components/docs/TOC.astro @@ -0,0 +1,90 @@ +--- +interface Heading { + depth: number; + text: string; + slug: string; +} +interface Props { + headings: Heading[]; +} +const { headings } = Astro.props; +const filtered = headings.filter((h) => h.depth >= 2 && h.depth <= 4); +--- +{filtered.length > 0 && ( +
    + {filtered.map((h) => ( +
  • + {h.text} +
  • + ))} +
+)} + + diff --git a/src/components/islands/AskAI.tsx b/src/components/islands/AskAI.tsx new file mode 100644 index 0000000..a12b390 --- /dev/null +++ b/src/components/islands/AskAI.tsx @@ -0,0 +1,238 @@ +import React, { useCallback, useEffect, useId, useRef, useState } from 'react'; +import { FaRobot, FaComments } from 'react-icons/fa'; +import { SiOpenai } from 'react-icons/si'; +import { trackButtonClick } from '@/utils/analytics'; + +interface AskAIButtonProps { + className?: string; + position?: 'navbar' | 'doc' | 'floating'; + provider?: 'chatgpt' | 'claude' | 'both'; +} + +/* + * Ask AI island. + * + * The "both" mode opens a small popover with two provider choices. We treat the + * popover as a real menu: + * - role="menu" on the list, role="menuitem" on each option + * - aria-haspopup / aria-expanded / aria-controls on the trigger + * - Escape closes and returns focus to the trigger + * - Outside pointerdown closes (does not steal focus) + * - First item is focused on open so keyboard users can act immediately + * - Arrow Down / Arrow Up cycle through menuitems + * + * For "chatgpt" / "claude" the button is a direct action (opens a new tab), so + * we skip all the popover state. + * + * The page title is read from the rendered
heading, falling back to + * document.title. We use a microtask + a resilient lookup instead of an + * arbitrary setTimeout (the previous 100ms timer was racy on slow hydration). + */ +export default function AskAIButton({ + className = '', + position = 'floating', + provider = 'both', +}: AskAIButtonProps) { + const [pageTitle, setPageTitle] = useState(''); + const [open, setOpen] = useState(false); + + const triggerRef = useRef(null); + const menuRef = useRef(null); + const menuId = useId(); + + // Extract title once on mount. We poll a couple of frames in case the + // article heading hydrates after this island. + useEffect(() => { + let cancelled = false; + let attempts = 0; + + const read = () => { + if (cancelled) return; + const h1 = document.querySelector('article h1'); + const docTitle = + h1?.textContent?.trim() || + document.title.replace(' | Suites', '').trim(); + if (docTitle) { + setPageTitle(docTitle); + return; + } + if (attempts++ < 5) requestAnimationFrame(read); + }; + + read(); + return () => { + cancelled = true; + }; + }, []); + + const buildPrompt = useCallback(() => { + const currentUrl = typeof window !== 'undefined' ? window.location.href : ''; + return `I'm reading the Suites testing framework documentation, this is the page title "${pageTitle}", and the url is ${currentUrl} + read the page and answer the following questions:`; + }, [pageTitle]); + + const closeMenu = useCallback( + (returnFocus = true) => { + setOpen(false); + if (returnFocus) { + // Defer to next tick so React unmount-then-focus does not race. + requestAnimationFrame(() => triggerRef.current?.focus()); + } + }, + [], + ); + + const handleAskChatGPT = useCallback(() => { + trackButtonClick('Ask AI - ChatGPT', position); + const chatGPTUrl = `https://chat.openai.com/?model=gpt-4o&q=${encodeURIComponent(buildPrompt())}`; + window.open(chatGPTUrl, '_blank', 'noopener,noreferrer'); + closeMenu(); + }, [buildPrompt, position, closeMenu]); + + const handleAskClaude = useCallback(() => { + trackButtonClick('Ask AI - Claude', position); + const claudeUrl = `https://claude.ai/new?q=${encodeURIComponent(buildPrompt())}`; + window.open(claudeUrl, '_blank', 'noopener,noreferrer'); + closeMenu(); + }, [buildPrompt, position, closeMenu]); + + const handleClick = () => { + if (provider === 'chatgpt') return handleAskChatGPT(); + if (provider === 'claude') return handleAskClaude(); + setOpen((v) => !v); + }; + + // Escape + outside click close. Focus first menuitem on open. + useEffect(() => { + if (!open) return; + + const focusFirst = () => { + const first = menuRef.current?.querySelector( + '[role="menuitem"]', + ); + first?.focus(); + }; + requestAnimationFrame(focusFirst); + + const onKey = (e: KeyboardEvent) => { + if (e.key === 'Escape') { + e.stopPropagation(); + closeMenu(); + return; + } + if (e.key === 'ArrowDown' || e.key === 'ArrowUp') { + const items = Array.from( + menuRef.current?.querySelectorAll( + '[role="menuitem"]', + ) ?? [], + ); + if (items.length === 0) return; + const idx = items.indexOf(document.activeElement as HTMLButtonElement); + const next = + e.key === 'ArrowDown' + ? items[(idx + 1) % items.length] + : items[(idx - 1 + items.length) % items.length]; + e.preventDefault(); + next?.focus(); + } + }; + + const onPointerDown = (e: PointerEvent) => { + const target = e.target as Node | null; + if ( + target && + !menuRef.current?.contains(target) && + !triggerRef.current?.contains(target) + ) { + // Outside click: close without stealing focus back to the trigger. + closeMenu(false); + } + }; + + document.addEventListener('keydown', onKey); + document.addEventListener('pointerdown', onPointerDown); + return () => { + document.removeEventListener('keydown', onKey); + document.removeEventListener('pointerdown', onPointerDown); + }; + }, [open, closeMenu]); + + const showMenu = provider === 'both' && open; + const menuVisuallyAvailable = provider === 'both'; + + const buttonContent = ( + <> +