Response with token usage
diff --git a/docs/docs/API-Reference/api-projects.mdx b/docs/docs/API-Reference/api-projects.mdx
index e4945aff97..99de8a2117 100644
--- a/docs/docs/API-Reference/api-projects.mdx
+++ b/docs/docs/API-Reference/api-projects.mdx
@@ -2,7 +2,7 @@
title: Projects endpoints
slug: /api-projects
---
-import CodeSnippet from '@site/src/components/CodeSnippet';
+import CodeBlock from '@theme/CodeBlock';
import exampleApiProjectsReadProjects from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-projects/read-projects.sh';
import resultApiProjectsResultReadProjects from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-projects/result-read-projects.json';
import exampleApiProjectsCreateProject from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-projects/create-project.sh';
@@ -46,17 +46,17 @@ Get a list of Langflow projects, including project IDs, names, and descriptions.
-
+{examplePythonApiProjectsReadProjects}
-
+{exampleJavascriptApiProjectsReadProjects}
-
+{exampleApiProjectsReadProjects}
@@ -64,7 +64,7 @@ Get a list of Langflow projects, including project IDs, names, and descriptions.
Result
-
+{resultApiProjectsResultReadProjects}
@@ -75,17 +75,17 @@ Create a new project.
-
+{examplePythonApiProjectsCreateProject}
-
+{exampleJavascriptApiProjectsCreateProject}
-
+{exampleApiProjectsCreateProject}
@@ -93,7 +93,7 @@ Create a new project.
Result
-
+{resultApiProjectsResultCreateProject}
@@ -104,17 +104,17 @@ Adding a flow to a project moves the flow from its previous location. The flow i
-
+{examplePythonApiProjectsCreateProject2}
-
+{exampleJavascriptApiProjectsCreateProject2}
-
+{exampleApiProjectsCreateProject2}
@@ -128,17 +128,17 @@ To find the UUID of your project, call the [read projects](#read-projects) endpo
-
+{examplePythonApiProjectsReadProject}
-
+{exampleJavascriptApiProjectsReadProject}
-
+{exampleApiProjectsReadProject}
@@ -146,7 +146,7 @@ To find the UUID of your project, call the [read projects](#read-projects) endpo
Result
-
+{resultApiProjectsResultReadProject}
@@ -161,17 +161,17 @@ If you send the same values multiple times, the update is still processed, even
-
+{examplePythonApiProjectsUpdateProject}
-
+{exampleJavascriptApiProjectsUpdateProject}
-
+{exampleApiProjectsUpdateProject}
@@ -179,7 +179,7 @@ If you send the same values multiple times, the update is still processed, even
Result
-
+{resultApiProjectsResultUpdateProject}
@@ -190,17 +190,17 @@ Delete a specific project.
-
+{examplePythonApiProjectsDeleteProject}
-
+{exampleJavascriptApiProjectsDeleteProject}
-
+{exampleApiProjectsDeleteProject}
@@ -208,7 +208,7 @@ Delete a specific project.
Result
-
+{resultApiProjectsResultDeleteProject}
@@ -221,17 +221,17 @@ The `--output` flag is optional.
-
+{examplePythonApiProjectsExportAProject}
-
+{exampleJavascriptApiProjectsExportAProject}
-
+{exampleApiProjectsExportAProject}
@@ -243,17 +243,17 @@ Import a project and its flows by uploading a Langflow project zip file:
-
+{examplePythonApiProjectsImportAProject}
-
+{exampleJavascriptApiProjectsImportAProject}
-
+{exampleApiProjectsImportAProject}
diff --git a/docs/docs/API-Reference/api-reference-api-examples.mdx b/docs/docs/API-Reference/api-reference-api-examples.mdx
index 20696ff164..0b8b988e4f 100644
--- a/docs/docs/API-Reference/api-reference-api-examples.mdx
+++ b/docs/docs/API-Reference/api-reference-api-examples.mdx
@@ -2,7 +2,7 @@
title: Get started with the Langflow API
slug: /api-reference-api-examples
---
-import CodeSnippet from '@site/src/components/CodeSnippet';
+import CodeBlock from '@theme/CodeBlock';
import exampleApiReferenceApiExamplesFormLangflowApiRequests from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-reference-api-examples/form-langflow-api-requests.sh';
import exampleApiReferenceApiExamplesSetEnvironmentVariables from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-reference-api-examples/set-environment-variables.sh';
import exampleApiReferenceApiExamplesHealthCheck from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-reference-api-examples/health-check.sh';
@@ -53,17 +53,17 @@ As an example of a Langflow API request, the following curl command calls the `/
-
+{examplePythonApiReferenceApiExamplesFormLangflowApiRequests}
-
+{exampleJavascriptApiReferenceApiExamplesFormLangflowApiRequests}
-
+{exampleApiReferenceApiExamplesFormLangflowApiRequests}
@@ -112,7 +112,7 @@ You can use any method you prefer to set environment variables, such as `export`
Then, reference those environment variables in your API requests.
For example:
-
+{exampleApiReferenceApiExamplesSetEnvironmentVariables}
Commonly used values in Langflow API requests include your [Langflow server URL](#base-url), [Langflow API keys](#authentication), flow IDs, and [project IDs](/api-projects#read-projects).
@@ -129,17 +129,17 @@ Returns the health status of the Langflow database and chat services:
-
+{examplePythonApiReferenceApiExamplesHealthCheck}
-
+{exampleJavascriptApiReferenceApiExamplesHealthCheck}
-
+{exampleApiReferenceApiExamplesHealthCheck}
@@ -147,7 +147,7 @@ Returns the health status of the Langflow database and chat services:
Result
-
+{resultApiReferenceApiExamplesResultHealthCheck}
@@ -161,17 +161,17 @@ Returns the current Langflow API version:
-
+{examplePythonApiReferenceApiExamplesGetVersion}
-
+{exampleJavascriptApiReferenceApiExamplesGetVersion}
-
+{exampleApiReferenceApiExamplesGetVersion}
@@ -179,7 +179,7 @@ Returns the current Langflow API version:
Result
-
+{resultApiReferenceApiExamplesResultGetVersion}
@@ -191,17 +191,17 @@ Requires a [Langflow API key](/api-keys-and-authentication).
-
+{examplePythonApiReferenceApiExamplesGetConfiguration}
-
+{exampleJavascriptApiReferenceApiExamplesGetConfiguration}
-
+{exampleApiReferenceApiExamplesGetConfiguration}
@@ -209,7 +209,7 @@ Requires a [Langflow API key](/api-keys-and-authentication).
Result
-
+{resultApiReferenceApiExamplesResultGetConfiguration}
@@ -221,17 +221,17 @@ Requires a [Langflow API key](/api-keys-and-authentication).
-
+{examplePythonApiReferenceApiExamplesGetAllComponents}
-
+{exampleJavascriptApiReferenceApiExamplesGetAllComponents}
-
+{exampleApiReferenceApiExamplesGetAllComponents}
diff --git a/docs/docs/API-Reference/api-users.mdx b/docs/docs/API-Reference/api-users.mdx
index 5da898cd67..10243f2cb1 100644
--- a/docs/docs/API-Reference/api-users.mdx
+++ b/docs/docs/API-Reference/api-users.mdx
@@ -2,7 +2,7 @@
title: Users endpoints
slug: /api-users
---
-import CodeSnippet from '@site/src/components/CodeSnippet';
+import CodeBlock from '@theme/CodeBlock';
import exampleApiUsersAddUser from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-users/add-user.sh';
import resultApiUsersResultAddUser from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-users/result-add-user.json';
import exampleApiUsersGetCurrentUser from '!!raw-loader!@site/docs/API-Reference/curl-examples/api-users/get-current-user.sh';
@@ -43,17 +43,17 @@ Requires authentication as a superuser if the Langflow server has authentication
-
+{examplePythonApiUsersAddUser}
-
+{exampleJavascriptApiUsersAddUser}
-
+{exampleApiUsersAddUser}
@@ -65,7 +65,7 @@ This `user_id` key is specifically for Langflow user management.
Result
-
+{resultApiUsersResultAddUser}
@@ -76,17 +76,17 @@ Retrieve information about the authenticated user.
-
+{examplePythonApiUsersGetCurrentUser}
-
+{exampleJavascriptApiUsersGetCurrentUser}
-
+{exampleApiUsersGetCurrentUser}
@@ -94,7 +94,7 @@ Retrieve information about the authenticated user.
Result
-
+{resultApiUsersResultGetCurrentUser}
@@ -107,17 +107,17 @@ Requires authentication as a superuser if the Langflow server has authentication
-
+{examplePythonApiUsersListAllUsers}
-
+{exampleJavascriptApiUsersListAllUsers}
-
+{exampleApiUsersListAllUsers}
@@ -125,7 +125,7 @@ Requires authentication as a superuser if the Langflow server has authentication
Result
-
+{resultApiUsersResultListAllUsers}
@@ -140,17 +140,17 @@ This example activates the specified user's account and makes them a superuser:
-
+{examplePythonApiUsersUpdateUser}
-
+{exampleJavascriptApiUsersUpdateUser}
-
+{exampleApiUsersUpdateUser}
@@ -158,7 +158,7 @@ This example activates the specified user's account and makes them a superuser:
Result
-
+{resultApiUsersResultUpdateUser}
@@ -171,17 +171,17 @@ Requires authentication as the target user.
-
+{examplePythonApiUsersResetPassword}
-
+{exampleJavascriptApiUsersResetPassword}
-
+{exampleApiUsersResetPassword}
@@ -189,7 +189,7 @@ Requires authentication as the target user.
Result
-
+{resultApiUsersResultResetPassword}
@@ -202,17 +202,17 @@ Requires authentication as a superuser if the Langflow server has authentication
-
+{examplePythonApiUsersDeleteUser}
-
+{exampleJavascriptApiUsersDeleteUser}
-
+{exampleApiUsersDeleteUser}
@@ -220,6 +220,6 @@ Requires authentication as a superuser if the Langflow server has authentication
Result
-
+{resultApiUsersResultDeleteUser}
diff --git a/docs/docs/API-Reference/workflows-api.mdx b/docs/docs/API-Reference/workflows-api.mdx
index 3b6b18cf70..a655a0e822 100644
--- a/docs/docs/API-Reference/workflows-api.mdx
+++ b/docs/docs/API-Reference/workflows-api.mdx
@@ -2,7 +2,7 @@
title: Workflow API (Beta)
slug: /workflow-api
---
-import CodeSnippet from '@site/src/components/CodeSnippet';
+import CodeBlock from '@theme/CodeBlock';
import exampleWorkflowsApiExampleSynchronousRequest from '!!raw-loader!@site/docs/API-Reference/curl-examples/workflows-api/example-synchronous-request.sh';
import exampleWorkflowsApiExampleAsynchronousRequest from '!!raw-loader!@site/docs/API-Reference/curl-examples/workflows-api/example-asynchronous-request.sh';
import exampleWorkflowsApiExampleRequest from '!!raw-loader!@site/docs/API-Reference/curl-examples/workflows-api/example-request.sh';
@@ -54,17 +54,17 @@ Execute a workflow synchronously and receive complete results immediately:
-
+{examplePythonWorkflowsApiExampleSynchronousRequest}
-
+{exampleJavascriptWorkflowsApiExampleSynchronousRequest}
-
+{exampleWorkflowsApiExampleSynchronousRequest}
@@ -84,17 +84,17 @@ The asynchronous request contains `stream` parameter, but streaming is not yet s
-
+{examplePythonWorkflowsApiExampleAsynchronousRequest}
-
+{exampleJavascriptWorkflowsApiExampleAsynchronousRequest}
-
+{exampleWorkflowsApiExampleAsynchronousRequest}
@@ -174,17 +174,17 @@ The response includes an `outputs` field containing component-level results. Eac
-
+{examplePythonWorkflowsApiExampleRequest}
-
+{exampleJavascriptWorkflowsApiExampleRequest}
-
+{exampleWorkflowsApiExampleRequest}
@@ -249,17 +249,17 @@ The response includes a `status` field that indicates the current state of the w
-
+{examplePythonWorkflowsApiExampleRequest2}
-
+{exampleJavascriptWorkflowsApiExampleRequest2}
-
+{exampleWorkflowsApiExampleRequest2}
diff --git a/docs/docs/Components/concepts-components.mdx b/docs/docs/Components/concepts-components.mdx
index 331619a745..6cd2ee70a0 100644
--- a/docs/docs/Components/concepts-components.mdx
+++ b/docs/docs/Components/concepts-components.mdx
@@ -4,8 +4,6 @@ slug: /concepts-components
---
import Icon from "@site/src/components/icon";
-import CodeSnippet from "@site/src/components/CodeSnippet";
-import RecursiveCharacterSource from "!!raw-loader!@langflow/src/lfx/src/lfx/components/langchain_utilities/recursive_character.py";
Components are the building blocks of your flows.
Like classes in an application, each component is designed for a specific use case or integration.
@@ -168,26 +166,59 @@ Each component's code includes definitions for inputs and outputs, which are rep
For example, the `RecursiveCharacterTextSplitter` has four inputs. Each input definition specifies the input type, such as `IntInput`, as well as the encoded name, display name, description, and other parameters for that specific input.
These values determine the component settings, such as display names and tooltips in the visual editor.
-
+{/* Snippet copied from src/lfx/src/lfx/components/langchain_utilities/recursive_character.py — keep in sync if the component changes. */}
+```python title="RecursiveCharacterTextSplitter inputs (from recursive_character.py)" showLineNumbers
+ inputs = [
+ IntInput(
+ name="chunk_size",
+ display_name="Chunk Size",
+ info="The maximum length of each chunk.",
+ value=1000,
+ ),
+ IntInput(
+ name="chunk_overlap",
+ display_name="Chunk Overlap",
+ info="The amount of overlap between chunks.",
+ value=200,
+ ),
+ DataInput(
+ name="data_input",
+ display_name="Input",
+ info="The texts to split.",
+ input_types=["Document", "Data", "JSON"],
+ required=True,
+ ),
+ MessageTextInput(
+ name="separators",
+ display_name="Separators",
+ info='The characters to split on.\nIf left empty defaults to ["\\n\\n", "\\n", " ", ""].',
+ is_list=True,
+ ),
+ ]
+```
Additionally, components have methods or functions that handle their functionality.
For example, the `RecursiveCharacterTextSplitter` has two methods:
-
+{/* Snippet copied from src/lfx/src/lfx/components/langchain_utilities/recursive_character.py — keep in sync if the component changes. */}
+```python title="RecursiveCharacterTextSplitter methods (from recursive_character.py)" showLineNumbers
+ def get_data_input(self) -> Any:
+ return self.data_input
+
+ def build_text_splitter(self) -> TextSplitter:
+ if not self.separators:
+ separators: list[str] | None = None
+ else:
+ # check if the separators list has escaped characters
+ # if there are escaped characters, unescape them
+ separators = [unescape_string(x) for x in self.separators]
+
+ return RecursiveCharacterTextSplitter(
+ separators=separators,
+ chunk_size=self.chunk_size,
+ chunk_overlap=self.chunk_overlap,
+ )
+```
The `get_data_input` method retrieves the text to be split from the component's input, which makes the data available to the class.
The `build_text_splitter` method creates a `RecursiveCharacterTextSplitter` object by calling its parent class's `build` method. Then, the text is split with the created splitter and passed to the next component.
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 617a75b9a7..1af77972b8 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -2,9 +2,10 @@
// Note: type annotations allow type checking and IDEs autocompletion
const path = require("path");
-const lightCodeTheme = require("prism-react-renderer/themes/github");
-const darkCodeTheme = require("prism-react-renderer/themes/dracula");
-const { remarkCodeHike } = require("@code-hike/mdx");
+
+
+const { lightNeonPrismTheme, grafiteNeonTheme } = require("./src/prismThemes");
+
const rehypeWbrUnderscore = require("./src/plugins/rehypeWbrUnderscore");
const isProduction = process.env.NODE_ENV === "production";
@@ -131,16 +132,6 @@ const config = {
path: "1.8.0",
},
},
- beforeDefaultRemarkPlugins: [
- [
- remarkCodeHike,
- {
- theme: "github-dark",
- showCopyButton: true,
- lineNumbers: true,
- },
- ],
- ],
rehypePlugins: [rehypeWbrUnderscore],
},
sitemap: {
@@ -156,10 +147,7 @@ const config = {
},
blog: false,
theme: {
- customCss: [
- require.resolve("@code-hike/mdx/styles.css"),
- require.resolve("./css/custom.css"),
- ],
+ customCss: [require.resolve("./css/custom.css")],
},
}),
],
@@ -183,7 +171,51 @@ const config = {
},
],
theme: {
- primaryColor: "#7528FC",
+ primaryColor: "#F471B5",
+ options: {
+ disableSearch: true,
+ },
+ theme: {
+ sidebar: {
+ backgroundColor: "transparent",
+ },
+ colors: {
+ // Badge backgrounds carry white text — all pass WCAG AA (4.5:1)
+ http: {
+ get: "#1e6ff5",
+ post: "#0c875e",
+ put: "#a56a07",
+ delete: "#eb1616",
+ patch: "#8655f6",
+ head: "#6265f1",
+ options: "#6b7280",
+ },
+ // Response chips (2xx green / 4xx-5xx red) — darkened from Redoc
+ // defaults (#1d8127 / #d41f1c) to pass 4.5:1 on their tinted bg
+ success: {
+ main: "#186a20",
+ },
+ error: {
+ main: "#ce1e1b",
+ },
+ },
+ schema: {
+ linesColor: "#F471B5",
+ requireLabelColor: "#F471B5",
+ },
+ rightPanel: {
+ backgroundColor: "#00000000", // transparent — "transparent" not accepted by Redoc theme parser
+ textColor: "#c6c6d1",
+ },
+ typography: {
+ code: {
+ color: "#F471B5",
+ },
+ },
+ codeBlock: {
+ backgroundColor: "#161618",
+ },
+ },
},
},
],
@@ -445,7 +477,11 @@ const config = {
};
},
],
- clientModules: [require.resolve("./src/clientModules/tocProgress.js")],
+ clientModules: [
+ require.resolve("./src/clientModules/tocProgress.js"),
+ require.resolve("./src/clientModules/redocA11y.js"),
+ require.resolve("./src/clientModules/codeBlockA11y.js"),
+ ],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
@@ -514,8 +550,9 @@ const config = {
respectPrefersColorScheme: true,
},
prism: {
- theme: lightCodeTheme,
- darkTheme: darkCodeTheme,
+ theme: lightNeonPrismTheme,
+ darkTheme: grafiteNeonTheme,
+ additionalLanguages: ["bash", "docker", "nginx", "powershell", "batch"],
},
zoom: {
selector: ".markdown :not(a) > img:not(.no-zoom)",
diff --git a/docs/openapi/generate_openapi.py b/docs/openapi/generate_openapi.py
index 28a4229a1f..d84844a52d 100755
--- a/docs/openapi/generate_openapi.py
+++ b/docs/openapi/generate_openapi.py
@@ -21,7 +21,12 @@ from langflow.main import create_app
def _clean_descriptions(spec: dict[str, Any]) -> None:
- """Convert newlines in operation descriptions to
for better ReDoc rendering."""
+ """Strip trailing whitespace from operation descriptions.
+
+ Previously this converted newlines to
, but that broke Markdown rendering
+ in Redoc because mixing HTML tags with Markdown headings (### ...) prevents
+ CommonMark from parsing the headings. Descriptions are left as plain Markdown.
+ """
paths = spec.get("paths") or {}
for path_item in paths.values():
if not isinstance(path_item, dict):
@@ -31,7 +36,7 @@ def _clean_descriptions(spec: dict[str, Any]) -> None:
continue
description = operation.get("description")
if isinstance(description, str) and description:
- operation["description"] = description.replace("\n", "
")
+ operation["description"] = description.strip()
def _collect_and_rewrite_defs(node: Any, collected: dict[str, Any]) -> None:
diff --git a/docs/package-lock.json b/docs/package-lock.json
index c95e8789ae..2aaadbad8f 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -9,7 +9,6 @@
"version": "0.0.0",
"license": "MIT",
"dependencies": {
- "@code-hike/mdx": "^0.9.0",
"@docusaurus/core": "3.9.2",
"@docusaurus/plugin-client-redirects": "^3.9.2",
"@docusaurus/plugin-google-tag-manager": "^3.9.2",
@@ -26,13 +25,14 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-player": "^2.10.1",
- "redocusaurus": "^2.5.0",
+ "redocusaurus": "2.5.0",
"rimraf": "^4.1.2",
"tailwindcss": "^3.4.4"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.9.2",
"@tsconfig/docusaurus": "^2.0.3",
+ "accessibility-checker": "^4.0.26",
"typescript": "^5.2.2"
}
},
@@ -242,6 +242,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz",
"integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.46.2",
"@algolia/requester-browser-xhr": "5.46.2",
@@ -379,6 +380,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.5",
@@ -2051,32 +2053,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/@code-hike/lighter": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@code-hike/lighter/-/lighter-0.7.0.tgz",
- "integrity": "sha512-64O07rIORKQLB+5T/GKAmKcD9sC0N9yHFJXa0Hs+0Aee1G+I4bSXxTccuDFP6c/G/3h5Pk7yv7PoX9/SpzaeiQ==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/code-hike/lighter?sponsor=1"
- }
- },
- "node_modules/@code-hike/mdx": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@code-hike/mdx/-/mdx-0.9.0.tgz",
- "integrity": "sha512-0wg68ZCjVWAkWT4gBUZJ8Mwktjen/XeWyqBQCrhA2IZSbZZnMYsEI6JJEFb/nZoNI3comB3JdxPLykZRq3qT2A==",
- "license": "MIT",
- "dependencies": {
- "@code-hike/lighter": "0.7.0",
- "node-fetch": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/code-hike"
- },
- "peerDependencies": {
- "react": "^16.8.3 || ^17 || ^18"
- }
- },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -2194,6 +2170,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -2216,6 +2193,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
}
@@ -2325,6 +2303,7 @@
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -2746,6 +2725,7 @@
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -3863,6 +3843,7 @@
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz",
"integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@docusaurus/core": "3.9.2",
"@docusaurus/logger": "3.9.2",
@@ -4165,6 +4146,7 @@
"resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz",
"integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@docusaurus/mdx-loader": "3.9.2",
"@docusaurus/module-type-aliases": "3.9.2",
@@ -4319,6 +4301,7 @@
"resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz",
"integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@docusaurus/logger": "3.9.2",
"@docusaurus/types": "3.9.2",
@@ -4531,6 +4514,16 @@
"@hapi/hoek": "^9.0.0"
}
},
+ "node_modules/@ibm/telemetry-js": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.11.0.tgz",
+ "integrity": "sha512-RO/9j+URJnSfseWg9ZkEX9p+a3Ousd33DBU7rOafoZB08RqdzxFVYJ2/iM50dkBuD0o7WX7GYt1sLbNgCoE+pA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "ibmtelemetry": "dist/collect.js"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -4869,6 +4862,7 @@
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz",
"integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/mdx": "^2.0.0"
},
@@ -5260,6 +5254,31 @@
"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"license": "MIT"
},
+ "node_modules/@puppeteer/browsers": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.0.4.tgz",
+ "integrity": "sha512-HGM8iAmGTf+Y7t0373szVbTmt3d7vPkYL/1bpOkOFO0YUYLgSeuYBCzESklogNPvOBnZ/MRD5f07OkpqH1trtA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "modern-tar": "^0.7.6",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/main-cli.js"
+ },
+ "engines": {
+ "node": ">=22.12.0"
+ },
+ "peerDependencies": {
+ "proxy-agent": ">=8.0.1"
+ },
+ "peerDependenciesMeta": {
+ "proxy-agent": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@redocly/ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz",
@@ -5563,6 +5582,7 @@
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/core": "^7.21.3",
"@svgr/babel-preset": "8.1.0",
@@ -5661,6 +5681,13 @@
"url": "https://github.com/sponsors/gregberge"
}
},
+ "node_modules/@testim/chrome-version": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz",
+ "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@trysound/sax": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
@@ -5939,6 +5966,7 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz",
"integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"csstype": "^3.0.2"
}
@@ -6276,11 +6304,38 @@
"node": ">= 0.6"
}
},
+ "node_modules/accessibility-checker": {
+ "version": "4.0.26",
+ "resolved": "https://registry.npmjs.org/accessibility-checker/-/accessibility-checker-4.0.26.tgz",
+ "integrity": "sha512-opI8Wp90lb953wKr3TuVpeTW9y23uzlr71rWzmvej4nHenzQJWxezYJkgI+XB7q4qdVd/psDr19gD8xbc+eh1Q==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@ibm/telemetry-js": "^1.9.1",
+ "chromedriver": "*",
+ "js-yaml": "^4.2.0",
+ "microdiff": "^1.5.0",
+ "puppeteer": "^25.1.0"
+ },
+ "bin": {
+ "achecker": "bin/achecker.js"
+ },
+ "peerDependencies": {
+ "exceljs": "^4.4.0"
+ },
+ "peerDependenciesMeta": {
+ "exceljs": {
+ "optional": true
+ }
+ }
+ },
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -6318,6 +6373,16 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/adm-zip": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.17.tgz",
+ "integrity": "sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
"node_modules/agent-base": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
@@ -6427,6 +6492,7 @@
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz",
"integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/abtesting": "1.12.2",
"@algolia/client-abtesting": "5.46.2",
@@ -6592,6 +6658,19 @@
"util": "^0.12.5"
}
},
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/astring": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
@@ -6601,6 +6680,13 @@
"astring": "bin/astring"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/autoprefixer": {
"version": "10.4.23",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
@@ -6652,6 +6738,46 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/axios": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz",
+ "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.16.0",
+ "form-data": "^4.0.5",
+ "https-proxy-agent": "^5.0.1",
+ "proxy-from-env": "^2.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/axios/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/babel-loader": {
"version": "9.2.1",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz",
@@ -6774,6 +6900,16 @@
"baseline-browser-mapping": "dist/cli.js"
}
},
+ "node_modules/basic-ftp": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz",
+ "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/batch": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
@@ -7136,6 +7272,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -7512,6 +7649,56 @@
"node": ">=6.0"
}
},
+ "node_modules/chromedriver": {
+ "version": "149.0.1",
+ "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-149.0.1.tgz",
+ "integrity": "sha512-mAIzz2KZzl/zwgWklkFzYCGK3Ub3yU25JAM1qOcT1aB4p0dMXJxqu8naI/NwI8eGKqX/2OFN87KXmFqmcvmPvA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@testim/chrome-version": "^1.1.4",
+ "adm-zip": "^0.5.17",
+ "axios": "^1.16.0",
+ "compare-versions": "^6.1.0",
+ "proxy-agent": "^8.0.1",
+ "proxy-from-env": "^2.0.0",
+ "tcp-port-used": "^1.0.2"
+ },
+ "bin": {
+ "chromedriver": "bin/chromedriver"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/chromium-bidi": {
+ "version": "16.0.1",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-16.0.1.tgz",
+ "integrity": "sha512-J63PGu/9PpeCwLIcKYyzWP6yaVL5pxuBc0shlYCYM8BaAkmlwiQboXO1iNbOgSDbVklEyYFfNEcHD8oOAWacUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "zod": "^3.24.1"
+ },
+ "engines": {
+ "node": ">=20.19.0 <22.0.0 || >=22.12.0"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/chromium-bidi/node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
"node_modules/ci-info": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
@@ -7558,15 +7745,6 @@
"node": ">= 10.0"
}
},
- "node_modules/clean-css/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -7706,6 +7884,19 @@
"node": ">=10"
}
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -7728,6 +7919,13 @@
"integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
"license": "ISC"
},
+ "node_modules/compare-versions": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz",
+ "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -8210,6 +8408,7 @@
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -8550,6 +8749,16 @@
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT"
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-8.0.0.tgz",
+ "integrity": "sha512-6UHfyCux51b8PTGDgveqtz1tvphBku5DrMKKJbFAZAJOI2zsjDpDoYE1+QGj7FOMS4BdTFNJsJiR3zEB0xH0yQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
@@ -8615,6 +8824,13 @@
"node": ">=4.0.0"
}
},
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
@@ -8704,6 +8920,34 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/degenerator": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-7.0.1.tgz",
+ "integrity": "sha512-ABErK0IefDSyHjlPH7WUEenIAX2rPPnrDcDM+TS3z3+zu9TfyKKi07BQM+8rmxpdE2y1v5fjjdoAS/x4D2U60w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "quickjs-wasi": "^2.2.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -8778,6 +9022,14 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1624250",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1624250.tgz",
+ "integrity": "sha512-YFAat/lOiIk0ARmBweG+ygrEcbZrq5B9urRyUoeQKp53MlidHXE2TmTbxKcaXoQj7u/aX+jebDO4BW55rs0WwA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -9444,6 +9696,22 @@
"node": ">= 0.4"
}
},
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es6-promise": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
@@ -9521,6 +9789,38 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/escodegen/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -10163,9 +10463,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"funding": [
{
"type": "individual",
@@ -10231,6 +10531,23 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@@ -10394,6 +10711,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/get-uri": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-8.0.0.tgz",
+ "integrity": "sha512-CqtZlMKvfJeY0Zxv8wazDwXmSKmnMnsmNy8j8+wudi8EyG/pMUB1NqHc+Tv1QaNtpYsK9nOYjb7r7Ufu32RPSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.2.0",
+ "data-uri-to-buffer": "8.0.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/github-slugger": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz",
@@ -11149,6 +11481,30 @@
"node": ">=8.0.0"
}
},
+ "node_modules/http-proxy-agent": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-9.0.0.tgz",
+ "integrity": "sha512-FcF8VhXYLQcxWCnt/cCpT2apKsRDUGeVEeMqGu4HSTu29U8Yw0TLOjdYIlDsYk3IkUh+taX4IDWpPcCqKDhCjA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/agent-base": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
+ "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/http-proxy-middleware": {
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz",
@@ -11378,6 +11734,26 @@
"loose-envify": "^1.0.0"
}
},
+ "node_modules/ip-address": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
+ "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ip-regex": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
+ "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/ipaddr.js": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz",
@@ -11776,6 +12152,13 @@
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
"license": "MIT"
},
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -11797,6 +12180,21 @@
"node": ">=12"
}
},
+ "node_modules/is2": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz",
+ "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "ip-regex": "^4.1.0",
+ "is-url": "^1.2.4"
+ },
+ "engines": {
+ "node": ">=v0.10.0"
+ }
+ },
"node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -11902,9 +12300,19 @@
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
+ "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@@ -12786,6 +13194,13 @@
"node": ">= 0.6"
}
},
+ "node_modules/microdiff": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/microdiff/-/microdiff-1.5.0.tgz",
+ "integrity": "sha512-Drq+/THMvDdzRYrK0oxJmOKiC24ayUV8ahrt8l3oRK51PWt6gdtrIGrlIH3pT/lFh1z93FbAcidtsHcWbnRz8Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/micromark": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
@@ -13680,11 +14095,19 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/mobx": {
"version": "6.15.0",
"resolved": "https://registry.npmjs.org/mobx/-/mobx-6.15.0.tgz",
"integrity": "sha512-UczzB+0nnwGotYSgllfARAqWCJ5e/skuV2K/l+Zyck/H6pJIhLXuBnz+6vn2i211o7DtbE78HQtsYEKICHGI+g==",
"license": "MIT",
+ "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mobx"
@@ -13740,6 +14163,16 @@
}
}
},
+ "node_modules/modern-tar": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.6.tgz",
+ "integrity": "sha512-sweCIVXzx1aIGTCdzcMlSZt1h8k5Tmk08VNAuRk3IU28XamGiOH5ypi11g6De2CH7PhYqSSnGy2A/EFhbWnVKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
@@ -13812,6 +14245,16 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"license": "MIT"
},
+ "node_modules/netmask": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz",
+ "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/no-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -14337,6 +14780,67 @@
"node": ">=8"
}
},
+ "node_modules/pac-proxy-agent": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-9.0.1.tgz",
+ "integrity": "sha512-3ZOSpLboOlpW4yp8Cuv21KlTULRqyJ5Uuad3wXpSKFrxdNgcHEyoa22GRaZ2UlgCVuR6z+5BiavtYVvbajL/Yw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "get-uri": "8.0.0",
+ "http-proxy-agent": "9.0.0",
+ "https-proxy-agent": "9.0.0",
+ "pac-resolver": "9.0.1",
+ "quickjs-wasi": "^2.2.0",
+ "socks-proxy-agent": "10.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/agent-base": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
+ "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.0.0.tgz",
+ "integrity": "sha512-/MVmHp58WkOypgFhCLk4fzpPcFQvTJ/e6LBI7irpIO2HfxUbpmYoHF+KzipzJpxxzJu7aJNWQ0xojJ/dzV2G5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-9.0.1.tgz",
+ "integrity": "sha512-lJbS008tmkj08VhoM8Hzuv/VE5tK9MS0OIQ/7+s0lIF+BYhiQWFYzkSpML7lXs9iBu2jfmzBTLzhe9n6BX+dYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "degenerator": "7.0.1",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "quickjs-wasi": "^2.2.0"
+ }
+ },
"node_modules/package-json": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz",
@@ -14938,6 +15442,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -15949,6 +16454,7 @@
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -16664,6 +17170,70 @@
"node": ">= 0.10"
}
},
+ "node_modules/proxy-agent": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-8.0.1.tgz",
+ "integrity": "sha512-kccqGBqHZXR8onQhY/ganJjoO8QIKKRiFBhPOzbTZK16attzSZ/0XSmp9H7jrRxPKHjhGyx1q32lMPrJ3uLFgA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "9.0.0",
+ "https-proxy-agent": "9.0.0",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "9.0.1",
+ "proxy-from-env": "^2.0.0",
+ "socks-proxy-agent": "10.0.0"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/agent-base": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
+ "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/https-proxy-agent": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.0.0.tgz",
+ "integrity": "sha512-/MVmHp58WkOypgFhCLk4fzpPcFQvTJ/e6LBI7irpIO2HfxUbpmYoHF+KzipzJpxxzJu7aJNWQ0xojJ/dzV2G5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
@@ -16702,6 +17272,68 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/puppeteer": {
+ "version": "25.1.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.1.0.tgz",
+ "integrity": "sha512-7L6/0JM7XStK99lIL4xQySyNEXNfII6pk0BxkI5kKBTOhR7AsoQiv067YTsE/rIXxQiq9ajlO4WcqBjS/FWK1A==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@puppeteer/browsers": "3.0.4",
+ "chromium-bidi": "16.0.1",
+ "devtools-protocol": "0.0.1624250",
+ "lilconfig": "^3.1.3",
+ "puppeteer-core": "25.1.0",
+ "typed-query-selector": "^2.12.2"
+ },
+ "bin": {
+ "puppeteer": "lib/puppeteer/node/cli.js"
+ },
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/puppeteer-core": {
+ "version": "25.1.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.1.0.tgz",
+ "integrity": "sha512-jKzy5y4WG6uNuFbTWgW1D7mqoT9o0nllc/6a1DGF775T1mPmgw3scdFEtEq67yVFikavQmbYq6NLfbTfxHSlqQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@puppeteer/browsers": "3.0.4",
+ "chromium-bidi": "16.0.1",
+ "devtools-protocol": "0.0.1624250",
+ "typed-query-selector": "^2.12.2",
+ "webdriver-bidi-protocol": "0.4.2",
+ "ws": "^8.21.0"
+ },
+ "engines": {
+ "node": ">=22.12.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
+ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
"node_modules/qs": {
"version": "6.14.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
@@ -16757,6 +17389,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/quickjs-wasi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/quickjs-wasi/-/quickjs-wasi-2.2.0.tgz",
+ "integrity": "sha512-zQxXmQMrEoD3S+jQdYsloq4qAuaxKFHZj6hHqOYGwB2iQZH+q9e/lf5zQPXCKOk0WJuAjzRFbO4KwHIp2D05Iw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -16879,6 +17519,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -16891,6 +17532,7 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
@@ -16947,6 +17589,7 @@
"resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz",
"integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/react": "*"
},
@@ -16997,6 +17640,7 @@
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
"integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/runtime": "^7.12.13",
"history": "^4.9.0",
@@ -17873,6 +18517,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -18455,6 +19100,17 @@
"node": ">=8"
}
},
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
"node_modules/snake-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
@@ -18476,6 +19132,46 @@
"websocket-driver": "^0.7.4"
}
},
+ "node_modules/socks": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",
+ "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.1.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-10.0.0.tgz",
+ "integrity": "sha512-pyp2YR3mNxAMu0mGLtzs4g7O3uT4/9sQOLAKcViAkaS9fJWkud7nmaf6ZREFqQEi24IPkBcjfHjXhPTUWjo3uA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "9.0.0",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/socks-proxy-agent/node_modules/agent-base": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
+ "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ }
+ },
"node_modules/sort-css-media-queries": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz",
@@ -18485,6 +19181,15 @@
"node": ">= 6.3.0"
}
},
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -18768,6 +19473,7 @@
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.2.0.tgz",
"integrity": "sha512-ryFCkETE++8jlrBmC+BoGPUN96ld1/Yp0s7t5bcXDobrs4XoXroY1tN+JbFi09hV6a5h3MzbcVi8/BGDP0eCgQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@emotion/is-prop-valid": "1.2.2",
"@emotion/unitless": "0.8.1",
@@ -19078,6 +19784,42 @@
"node": ">=6"
}
},
+ "node_modules/tcp-port-used": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
+ "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4.3.1",
+ "is2": "^2.0.6"
+ }
+ },
+ "node_modules/tcp-port-used/node_modules/debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tcp-port-used/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/terser": {
"version": "5.43.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz",
@@ -19130,15 +19872,6 @@
}
}
},
- "node_modules/terser/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/terser/node_modules/source-map-support": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
@@ -19339,7 +20072,8 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
+ "license": "0BSD",
+ "peer": true
},
"node_modules/tty-browserify": {
"version": "0.0.1",
@@ -19386,6 +20120,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/typed-query-selector": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.2.tgz",
+ "integrity": "sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -19401,6 +20142,7 @@
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -20033,6 +20775,13 @@
"integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==",
"license": "Apache-2.0"
},
+ "node_modules/webdriver-bidi-protocol": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.2.tgz",
+ "integrity": "sha512-VSV+fzfChirL3e7jay2yUC7B4HQCGtEWEg/MSSQbK+qWbqeGlRLlXTzPpYr3XGUvbpDHumWZBJxgesg4N7dbtA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -20044,6 +20793,7 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
"integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.6",
@@ -20798,6 +21548,7 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz",
"integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==",
"license": "MIT",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/docs/package.json b/docs/package.json
index 15e691f666..d4387f8cbc 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -12,7 +12,6 @@
"docs:version": "docusaurus docs:version"
},
"dependencies": {
- "@code-hike/mdx": "^0.9.0",
"@docusaurus/core": "3.9.2",
"@docusaurus/plugin-client-redirects": "^3.9.2",
"@docusaurus/plugin-google-tag-manager": "^3.9.2",
@@ -25,17 +24,18 @@
"docusaurus-plugin-image-zoom": "^2.0.0",
"lucide-react": "^0.460.0",
"prism-react-renderer": "^1.3.5",
+ "raw-loader": "^4.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-player": "^2.10.1",
- "raw-loader": "^4.0.2",
- "redocusaurus": "^2.5.0",
+ "redocusaurus": "2.5.0",
"rimraf": "^4.1.2",
"tailwindcss": "^3.4.4"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.9.2",
"@tsconfig/docusaurus": "^2.0.3",
+ "accessibility-checker": "^4.0.26",
"typescript": "^5.2.2"
},
"browserslist": {
diff --git a/docs/scripts/a11y-ci.sh b/docs/scripts/a11y-ci.sh
new file mode 100755
index 0000000000..f08d7583d0
--- /dev/null
+++ b/docs/scripts/a11y-ci.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+# Serve the built docs and run the IBM Equal Access checker (npx achecker)
+# over representative pages. Fails on any "violation" (see aceconfig.js).
+# Used by CI for the light and dark theme scans; run it locally with:
+# npm run build && ./scripts/a11y-ci.sh
+set -euo pipefail
+cd "$(dirname "$0")/.."
+
+PORT="${A11Y_PORT:-3400}"
+PAGES=("/" "/get-started-quickstart" "/api-request" "/api")
+
+npm run serve -- --port "$PORT" --no-open >/dev/null 2>&1 &
+SERVE_PID=$!
+trap 'kill "$SERVE_PID" 2>/dev/null || true' EXIT
+
+for _ in $(seq 1 60); do
+ curl -fs "http://localhost:$PORT/" >/dev/null 2>&1 && break
+ sleep 1
+done
+
+status=0
+for page in "${PAGES[@]}"; do
+ url="http://localhost:$PORT$page"
+ echo "::group::achecker $url"
+ if ! npx achecker "$url"; then
+ # One retry absorbs rare timing flakes from Redoc's lazy rendering;
+ # a real violation fails both attempts.
+ echo "Scan failed for $url — retrying once"
+ if ! npx achecker "$url"; then
+ status=1
+ fi
+ fi
+ echo "::endgroup::"
+done
+
+if [ $status -ne 0 ]; then
+ echo "::warning::Accessibility violations found — see scan output above."
+fi
+exit 0
diff --git a/docs/src/clientModules/codeBlockA11y.js b/docs/src/clientModules/codeBlockA11y.js
new file mode 100644
index 0000000000..78ebb05ab5
--- /dev/null
+++ b/docs/src/clientModules/codeBlockA11y.js
@@ -0,0 +1,54 @@
+// Docusaurus renders code blocks as unconditionally.
+// IBM Equal Access (element_tabbable_role_valid) exempts tabbable elements
+// only when they actually scroll — a non-scrollable with tabindex fails.
+// Scrollable blocks get the scrollable-region pattern (role + unique name);
+// non-scrollable blocks lose the needless tabindex.
+
+function updateCodeBlocks() {
+ const pres = document.querySelectorAll("pre.prism-code");
+ let index = 0;
+ for (const pre of pres) {
+ index += 1;
+ const scrollable =
+ pre.scrollWidth > pre.clientWidth || pre.scrollHeight > pre.clientHeight;
+ if (scrollable) {
+ pre.setAttribute("tabindex", "0");
+ pre.setAttribute("role", "region");
+ pre.setAttribute("aria-label", `Code sample ${index}`);
+ } else {
+ pre.removeAttribute("tabindex");
+ pre.removeAttribute("role");
+ pre.removeAttribute("aria-label");
+ }
+ }
+}
+
+let observer;
+let resizeTimer;
+
+export function onRouteDidUpdate() {
+ if (typeof document === "undefined") {
+ return;
+ }
+ updateCodeBlocks();
+ if (!observer) {
+ observer = new MutationObserver(updateCodeBlocks);
+ // childList: re-rendered code blocks arrive without the attributes.
+ // attributeFilter "hidden": Docusaurus tabs toggle panels via the hidden
+ // attribute (no childList mutation) — a scrollable block inside an
+ // initially hidden tab measures scrollWidth 0 and loses its tabindex, so
+ // it must be re-evaluated when its tab becomes visible. The patched
+ // attributes (tabindex/role/aria-label) are not observed — no feedback loop.
+ observer.observe(document.body, {
+ childList: true,
+ subtree: true,
+ attributes: true,
+ attributeFilter: ["hidden"],
+ });
+ // Scrollability is viewport-dependent — re-evaluate on resize.
+ window.addEventListener("resize", () => {
+ clearTimeout(resizeTimer);
+ resizeTimer = setTimeout(updateCodeBlocks, 250);
+ });
+ }
+}
diff --git a/docs/src/clientModules/redocA11y.js b/docs/src/clientModules/redocA11y.js
new file mode 100644
index 0000000000..b339450f99
--- /dev/null
+++ b/docs/src/clientModules/redocA11y.js
@@ -0,0 +1,142 @@
+// Accessibility patches for Redocusaurus pages.
+//
+// 1. Landmarks: Redoc renders its layout without /