diff --git a/.docs/vitepress/guide/index.md b/.docs/vitepress/guide/index.md
new file mode 100644
index 0000000..47544a0
--- /dev/null
+++ b/.docs/vitepress/guide/index.md
@@ -0,0 +1,61 @@
+# Getting started
+
+## What's inside?
+
+The library is organized into dedicated extension modules.\
+When imported, they safely patch well‑defined methods onto native
+prototypes.
+
+Current extension categories include:
+
+- Array
+- Date
+- Map
+- Math
+- Number
+- Object
+- String
+
+Check out the [reference](/reference), to get a deeper understanding of each extension.
+
+## Installation
+
+### Prerequisites
+
+- Node.js version 18 or higher
+- A package manager: e.g. npm, pnpm, ...
+- A Node.js-based project
+
+Install `@ogs-gmbh/stdx` using your preferred package manager:
+
+::: code-group
+
+```bash [npm]
+$ npm add @ogs-gmbh/stdx
+```
+
+```bash [pnpm]
+$ pnpm install @ogs-gmbh/stdx
+```
+
+```bash [yarn]
+$ yarn add @ogs-gmbh/stdx
+```
+
+```bash [bun]
+$ bun add @ogs-gmbh/stdx
+```
+
+:::
+
+### Usage
+
+To enable the prototype extensions, simply make sure to import it at top-level:
+
+```typescript [example.ts]
+import "@ogs-gmbh/stdx";
+
+// Other code here...
+```
+
+That's it!
diff --git a/.docs/vitepress/index.md b/.docs/vitepress/index.md
new file mode 100644
index 0000000..f178a65
--- /dev/null
+++ b/.docs/vitepress/index.md
@@ -0,0 +1,30 @@
+---
+layout: home
+
+hero:
+ text: Standard Library
+ tagline: Extended functionalities in both JavaScript and TypeScript.
+ actions:
+ - theme: brand
+ text: Get started
+ link: /guide
+ - theme: alt
+ text: Reference
+ link: /reference
+ - theme: alt
+ text: GitHub
+ link: https://github.com/OGS-GmbH/stdx
+
+
+features:
+ - icon:
+ title: Type-Safe
+ details: Fully typed with strict TypeScript support for compile-time safety.
+ - icon:
+ title: Modular
+ details: Tree-shakeable design. Import only what you need, nothing more.
+ - icon:
+ title: Zero Dependencies
+ details: Lightweight and self-contained with no external dependencies.
+---
+
diff --git a/.docs/vitepress/legal/license.md b/.docs/vitepress/legal/license.md
new file mode 100644
index 0000000..e2efdce
--- /dev/null
+++ b/.docs/vitepress/legal/license.md
@@ -0,0 +1,23 @@
+# License
+
+## MIT License
+
+Copyright (c) 2025 OGS Gesellschaft für Datenverarbeitung und Systemberatung mbH
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/.docs/vitepress/other/contributing.md b/.docs/vitepress/other/contributing.md
new file mode 100644
index 0000000..ce86682
--- /dev/null
+++ b/.docs/vitepress/other/contributing.md
@@ -0,0 +1,9 @@
+# Contributing
+
+## Guideline
+
+Contributions are always welcome and greatly appreciated. Whether you want to report a bug, suggest a new feature, or improve the documentation, your input helps make the project better for everyone.
+
+If you're unsure where to start, check the open issues for guidance. Even small contributions, such as fixing typos or improving code readability, are valuable.
+
+Feel free to submit a pull request or start a discussion — we're happy to collaborate!
\ No newline at end of file
diff --git a/.esbuild/build.mjs b/.esbuild/build.mjs
index 099413d..8b33c48 100644
--- a/.esbuild/build.mjs
+++ b/.esbuild/build.mjs
@@ -2,7 +2,7 @@ import * as esbuild from "esbuild";
import { getConfig } from "./config.mjs";
const preparedConfig = {
- outdir: "dist"
+ outdir: "dist/main"
};
await esbuild.build({
diff --git a/.github/workflows/docs-publish.yml b/.github/workflows/docs-publish.yml
new file mode 100644
index 0000000..211618e
--- /dev/null
+++ b/.github/workflows/docs-publish.yml
@@ -0,0 +1,16 @@
+name: Docs Deploy
+on:
+ workflow_dispatch:
+
+permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+ pages: write
+
+jobs:
+ call-npm-package-docs:
+ uses: OGS-GmbH/reusable-github-actions/.github/workflows/npm-package-docs.yml@main
+ secrets:
+ GH_DEPLOY_TOKEN: ${{ secrets.GH_DEPLOY_TOKEN }}
+ FONTAWESOME_REGISTRY_AUTH_TOKEN: ${{ secrets.FONTAWESOME_REGISTRY_AUTH_TOKEN }}
diff --git a/.github/workflows/main-deploy.yml b/.github/workflows/main-deploy.yml
index 6ec749b..d95f2db 100644
--- a/.github/workflows/main-deploy.yml
+++ b/.github/workflows/main-deploy.yml
@@ -4,10 +4,12 @@ on:
branches:
- "main"
workflow_dispatch:
+
permissions:
id-token: write
contents: write
pull-requests: write
+ pages: write
jobs:
call-npm-package-deploy:
diff --git a/.github/workflows/next-deploy.yml b/.github/workflows/next-deploy.yml
index c684b96..1699d88 100644
--- a/.github/workflows/next-deploy.yml
+++ b/.github/workflows/next-deploy.yml
@@ -4,10 +4,12 @@ on:
branches:
- "next"
workflow_dispatch:
+
permissions:
id-token: write
contents: write
pull-requests: write
+ pages: write
jobs:
call-npm-package-deploy:
diff --git a/.gitignore b/.gitignore
index 76add87..f67cc76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
node_modules
-dist
\ No newline at end of file
+dist
+.vitepress/.vitepress/cache
\ No newline at end of file
diff --git a/.release-please/next-config.json b/.release-please/next-config.json
new file mode 100644
index 0000000..d2b4f4f
--- /dev/null
+++ b/.release-please/next-config.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/refs/heads/main/schemas/config.json",
+ "packages": {
+ ".": {
+ "release-type": "node",
+ "prerelease": true,
+ "prerelease-type": "next",
+ "include-component-in-tag": false,
+ "always-update": true
+ }
+ }
+}
diff --git a/.release-please/next-manifest.json b/.release-please/next-manifest.json
new file mode 100644
index 0000000..8d6e472
--- /dev/null
+++ b/.release-please/next-manifest.json
@@ -0,0 +1 @@
+{".":"1.1.0"}
diff --git a/.vitepress/.vitepress/config.ts b/.vitepress/.vitepress/config.ts
new file mode 100644
index 0000000..b831601
--- /dev/null
+++ b/.vitepress/.vitepress/config.ts
@@ -0,0 +1,75 @@
+import { defineConfig } from 'vitepress';
+import { groupIconMdPlugin, groupIconVitePlugin } from "vitepress-plugin-group-icons";
+
+// https://vitepress.dev/reference/site-config
+export default defineConfig({
+ title: "stdx",
+ description: "JavaScript/TypeScript Standard library",
+ themeConfig: {
+ // https://vitepress.dev/reference/default-theme-config
+ logo: "https://raw.githubusercontent.com/OGS-GmbH/.github/refs/heads/main/docs/logo-white.svg",
+ nav: [
+ { text: "Guide", link: "/guide" },
+ { text: "Reference", link: "/reference" },
+ { text: "GitHub", link: "https://github.com/OGS-GmbH/stdx" }
+ ],
+ socialLinks: [
+ { icon: "github", link: "https://github.com/OGS-GmbH" },
+ { icon: "facebook", link: "https://www.facebook.com/OGS.GmbH" },
+ { icon: { svg: '' }, link: "https://www.linkedin.com/company/41198063/" },
+ { icon: "xing", link: "https://www.xing.com/pages/ogsgmbh" },
+ { icon: { svg: '' }, link: "https://www.ogs.de/en/" },
+ { icon: { svg: '' }, link: "mailto:info@ogs.de" }
+ ],
+ sidebar: [
+ {
+ text: "Guide",
+ items: [
+ { text: "Getting started", link: "/guide/" }
+ ]
+ },
+ {
+ text: "Reference",
+ items: [
+ { text: "Overview", link: "/reference/" }
+ ]
+ },
+ {
+ text: "Other",
+ items: [
+ { text: "Contributing", link: "/other/contributing" },
+ { text: "Code of Conduct", link: "/other/code-of-conduct" }
+ ]
+ },
+ {
+ text: "Legal",
+ items: [
+ { text: "MIT License", link: "/legal/license" },
+ { text: "Copyright © 2025 — present OGS GmbH", link: "https://www.ogs.de/en/" }
+ ]
+ }
+ ]
+
+
+ },
+ head: [
+ [ "link", { rel: "icon", href: "https://www.ogs.de/favicon.ico" } ]
+ ],
+ base: "/stdx/",
+ srcDir: "../dist/typedoc",
+ outDir: "../dist/vitepress",
+ titleTemplate: ":title - OGS stdx",
+ cleanUrls: true,
+ appearance: "dark",
+ markdown: {
+ // eslint-disable-next-line @tseslint/typedef
+ config (md) {
+ md.use(groupIconMdPlugin);
+ }
+ },
+ vite: {
+ plugins: [
+ groupIconVitePlugin()
+ ]
+ }
+});
diff --git a/.vitepress/.vitepress/theme/index.ts b/.vitepress/.vitepress/theme/index.ts
new file mode 100644
index 0000000..7208825
--- /dev/null
+++ b/.vitepress/.vitepress/theme/index.ts
@@ -0,0 +1,4 @@
+import Theme from 'vitepress/theme'
+import 'virtual:group-icons.css'
+
+export default Theme
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..be96f0e
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+info@ogs.de.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/transl
\ No newline at end of file
diff --git a/eslint.config.mjs b/eslint.config.mjs
index c07f6a7..164b52a 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -28,6 +28,7 @@ export default defineConfig(
},
{
ignores: [
+ ".vitepress",
".angular",
".git",
".husky",
@@ -35,7 +36,9 @@ export default defineConfig(
"node_modules",
"dist",
"CHANGELOG.md",
- "README.md"
+ "README.md",
+ ".docs",
+ "CODE_OF_CONDUCT.md"
]
},
{
diff --git a/package.json b/package.json
index 37013d4..988cc87 100644
--- a/package.json
+++ b/package.json
@@ -52,10 +52,14 @@
"type": "module",
"scripts": {
"ci:build:main:production": "node .esbuild/build.mjs",
+ "ci:docs:extract:typedoc": "typedoc && bash ./prepare-typedoc.sh",
+ "ci:docs:main:vitepress": "vitepress build .vitepress",
"ci:pr:commitlint:main:commitlint": "commitlint",
"ci:pr:lint:main:eslint": "eslint .",
"commitizen": "cz",
- "prepare": "husky"
+ "prepare": "husky",
+ "vitepress": "vitepress dev .vitepress",
+ "vitepress:preview": "vitepress preview .vitepress"
},
"devDependencies": {
"@commitlint/cli": "^19.8.1",
@@ -77,13 +81,17 @@
"eslint": "^9.39.1",
"eslint-plugin-unicorn": "^56.0.1",
"fast-glob": "^3.3.3",
+ "typedoc": "^0.28.14",
+ "typedoc-plugin-markdown": "^4.9.0",
"globals": "^15.15.0",
"husky": "^9.1.7",
"lint-staged": "^15.5.2",
"npm-package-json-lint": "^8.0.0",
"tslib": "^2.8.1",
"typescript": "~5.8.3",
- "typescript-eslint": "^8.47.0"
+ "typescript-eslint": "^8.47.0",
+ "vitepress": "^1",
+ "vitepress-plugin-group-icons": "^1.6.5"
},
"sideEffects": true,
"publishConfig": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cc7d42f..7cad177 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -80,24 +80,131 @@ importers:
tslib:
specifier: ^2.8.1
version: 2.8.1
+ typedoc:
+ specifier: ^0.28.14
+ version: 0.28.14(typescript@5.8.3)
+ typedoc-plugin-markdown:
+ specifier: ^4.9.0
+ version: 4.9.0(typedoc@0.28.14(typescript@5.8.3))
typescript:
specifier: ~5.8.3
version: 5.8.3
typescript-eslint:
specifier: ^8.47.0
version: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3)
+ vitepress:
+ specifier: ^1
+ version: 1.6.4(@algolia/client-search@5.45.0)(@types/node@24.10.1)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3)
+ vitepress-plugin-group-icons:
+ specifier: ^1.6.5
+ version: 1.6.5(vite@5.4.21(@types/node@24.10.1))
publishDirectory: dist
packages:
+ '@algolia/abtesting@1.11.0':
+ resolution: {integrity: sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/autocomplete-core@1.17.7':
+ resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==}
+
+ '@algolia/autocomplete-plugin-algolia-insights@1.17.7':
+ resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==}
+ peerDependencies:
+ search-insights: '>= 1 < 3'
+
+ '@algolia/autocomplete-preset-algolia@1.17.7':
+ resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+
+ '@algolia/autocomplete-shared@1.17.7':
+ resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+
+ '@algolia/client-abtesting@5.45.0':
+ resolution: {integrity: sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-analytics@5.45.0':
+ resolution: {integrity: sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-common@5.45.0':
+ resolution: {integrity: sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-insights@5.45.0':
+ resolution: {integrity: sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-personalization@5.45.0':
+ resolution: {integrity: sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-query-suggestions@5.45.0':
+ resolution: {integrity: sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-search@5.45.0':
+ resolution: {integrity: sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/ingestion@1.45.0':
+ resolution: {integrity: sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/monitoring@1.45.0':
+ resolution: {integrity: sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/recommend@5.45.0':
+ resolution: {integrity: sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-browser-xhr@5.45.0':
+ resolution: {integrity: sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-fetch@5.45.0':
+ resolution: {integrity: sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-node-http@5.45.0':
+ resolution: {integrity: sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==}
+ engines: {node: '>= 14.0.0'}
+
+ '@antfu/install-pkg@1.1.0':
+ resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+
+ '@antfu/utils@9.3.0':
+ resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==}
+
'@babel/code-frame@7.27.1':
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-identifier@7.28.5':
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
+
'@commitlint/cli@19.8.1':
resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==}
engines: {node: '>=v18'}
@@ -187,102 +294,227 @@ packages:
resolution: {integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==}
engines: {node: '>=v18'}
+ '@docsearch/css@3.8.2':
+ resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==}
+
+ '@docsearch/js@3.8.2':
+ resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==}
+
+ '@docsearch/react@3.8.2':
+ resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==}
+ peerDependencies:
+ '@types/react': '>= 16.8.0 < 19.0.0'
+ react: '>= 16.8.0 < 19.0.0'
+ react-dom: '>= 16.8.0 < 19.0.0'
+ search-insights: '>= 1 < 3'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ search-insights:
+ optional: true
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/aix-ppc64@0.25.12':
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
'@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-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-arm@0.25.12':
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/android-x64@0.25.12':
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-arm64@0.25.12':
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.25.12':
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-arm64@0.25.12':
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.25.12':
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm64@0.25.12':
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-arm@0.25.12':
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ 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-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ 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-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.25.12':
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ 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-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.25.12':
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-s390x@0.25.12':
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/linux-x64@0.25.12':
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
engines: {node: '>=18'}
@@ -295,6 +527,12 @@ packages:
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.25.12':
resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
engines: {node: '>=18'}
@@ -307,6 +545,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.25.12':
resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
engines: {node: '>=18'}
@@ -319,24 +563,48 @@ packages:
cpu: [arm64]
os: [openharmony]
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/sunos-x64@0.25.12':
resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-arm64@0.25.12':
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-ia32@0.25.12':
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
'@esbuild/win32-x64@0.25.12':
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
engines: {node: '>=18'}
@@ -409,6 +677,9 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@gerrit0/mini-shiki@3.15.0':
+ resolution: {integrity: sha512-L5IHdZIDa4bG4yJaOzfasOH/o22MCesY0mx+n6VATbaiCtMeR59pdRqYk4bEiQkIHfxsHPNgdi7VJlZb2FhdMQ==}
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -429,10 +700,28 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
+ '@iconify-json/logos@1.2.10':
+ resolution: {integrity: sha512-qxaXKJ6fu8jzTMPQdHtNxlfx6tBQ0jXRbHZIYy5Ilh8Lx9US9FsAdzZWUR8MXV8PnWTKGDFO4ZZee9VwerCyMA==}
+
+ '@iconify-json/simple-icons@1.2.60':
+ resolution: {integrity: sha512-KlwLBKCdMCqfySdkAA+jehdUx6VSjnj6lvzQKus7HjkPSQ6QP58d6xiptkIp0jd/Hw3PW2++nRuGvCvSYaF0Mg==}
+
+ '@iconify-json/vscode-icons@1.2.36':
+ resolution: {integrity: sha512-hs17ocmWK5pGnF5KgFRgHBZVRnMVAIpwPDDvLWSwRiM/uHwIS0Jo0y93DvcHXEsP+d3sqogTGhgkgj3on3eabQ==}
+
+ '@iconify/types@2.0.0':
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+
+ '@iconify/utils@3.0.2':
+ resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==}
+
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -526,6 +815,152 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
+ '@rollup/rollup-android-arm-eabi@4.53.3':
+ resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.53.3':
+ resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.53.3':
+ resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.53.3':
+ resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.53.3':
+ resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.53.3':
+ resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
+ resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.53.3':
+ resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.53.3':
+ resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.53.3':
+ resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.53.3':
+ resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.53.3':
+ resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-openharmony-arm64@4.53.3':
+ resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.53.3':
+ resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.53.3':
+ resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
+ cpu: [x64]
+ os: [win32]
+
+ '@shikijs/core@2.5.0':
+ resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==}
+
+ '@shikijs/engine-javascript@2.5.0':
+ resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==}
+
+ '@shikijs/engine-oniguruma@2.5.0':
+ resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==}
+
+ '@shikijs/engine-oniguruma@3.15.0':
+ resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==}
+
+ '@shikijs/langs@2.5.0':
+ resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==}
+
+ '@shikijs/langs@3.15.0':
+ resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==}
+
+ '@shikijs/themes@2.5.0':
+ resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==}
+
+ '@shikijs/themes@3.15.0':
+ resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==}
+
+ '@shikijs/transformers@2.5.0':
+ resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==}
+
+ '@shikijs/types@2.5.0':
+ resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==}
+
+ '@shikijs/types@3.15.0':
+ resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==}
+
+ '@shikijs/vscode-textmate@10.0.2':
+ resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+
'@stylistic/eslint-plugin-js@2.13.0':
resolution: {integrity: sha512-GPPDK4+fcbsQD58a3abbng2Dx+jBoxM5cnYjBM4T24WFZRZdlNSKvR19TxP8CPevzMOodQ9QVzNeqWvMXzfJRA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -558,12 +993,24 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/linkify-it@5.0.0':
+ resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
+
+ '@types/markdown-it@14.1.2':
+ resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
+
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ '@types/mdurl@2.0.0':
+ resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
+
'@types/minimist@1.2.5':
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
@@ -579,6 +1026,9 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@types/web-bluetooth@0.0.21':
+ resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
+
'@typescript-eslint/eslint-plugin@8.47.0':
resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -638,6 +1088,104 @@ packages:
resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
+ '@vitejs/plugin-vue@5.2.4':
+ resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0
+ vue: ^3.2.25
+
+ '@vue/compiler-core@3.5.25':
+ resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==}
+
+ '@vue/compiler-dom@3.5.25':
+ resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==}
+
+ '@vue/compiler-sfc@3.5.25':
+ resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==}
+
+ '@vue/compiler-ssr@3.5.25':
+ resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==}
+
+ '@vue/devtools-api@7.7.9':
+ resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==}
+
+ '@vue/devtools-kit@7.7.9':
+ resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==}
+
+ '@vue/devtools-shared@7.7.9':
+ resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==}
+
+ '@vue/reactivity@3.5.25':
+ resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==}
+
+ '@vue/runtime-core@3.5.25':
+ resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==}
+
+ '@vue/runtime-dom@3.5.25':
+ resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==}
+
+ '@vue/server-renderer@3.5.25':
+ resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==}
+ peerDependencies:
+ vue: 3.5.25
+
+ '@vue/shared@3.5.25':
+ resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==}
+
+ '@vueuse/core@12.8.2':
+ resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==}
+
+ '@vueuse/integrations@12.8.2':
+ resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==}
+ peerDependencies:
+ async-validator: ^4
+ axios: ^1
+ change-case: ^5
+ drauu: ^0.4
+ focus-trap: ^7
+ fuse.js: ^7
+ idb-keyval: ^6
+ jwt-decode: ^4
+ nprogress: ^0.2
+ qrcode: ^1.5
+ sortablejs: ^1
+ universal-cookie: ^7
+ peerDependenciesMeta:
+ async-validator:
+ optional: true
+ axios:
+ optional: true
+ change-case:
+ optional: true
+ drauu:
+ optional: true
+ focus-trap:
+ optional: true
+ fuse.js:
+ optional: true
+ idb-keyval:
+ optional: true
+ jwt-decode:
+ optional: true
+ nprogress:
+ optional: true
+ qrcode:
+ optional: true
+ sortablejs:
+ optional: true
+ universal-cookie:
+ optional: true
+
+ '@vueuse/metadata@12.8.2':
+ resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==}
+
+ '@vueuse/shared@12.8.2':
+ resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==}
+
JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
@@ -663,6 +1211,10 @@ packages:
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+ algoliasearch@5.45.0:
+ resolution: {integrity: sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==}
+ engines: {node: '>= 14.0.0'}
+
ansi-escapes@4.3.2:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
engines: {node: '>=8'}
@@ -719,6 +1271,9 @@ packages:
resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==}
hasBin: true
+ birpc@2.8.0:
+ resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==}
+
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
@@ -778,6 +1333,12 @@ packages:
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==}
@@ -836,6 +1397,9 @@ packages:
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
commander@13.1.0:
resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==}
engines: {node: '>=18'}
@@ -851,6 +1415,12 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
+ confbox@0.2.2:
+ resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+
conventional-changelog-angular@7.0.0:
resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
engines: {node: '>=16'}
@@ -867,6 +1437,10 @@ packages:
engines: {node: '>=16'}
hasBin: true
+ copy-anything@4.0.5:
+ resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==}
+ engines: {node: '>=18'}
+
core-js-compat@3.47.0:
resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==}
@@ -900,6 +1474,9 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
cz-conventional-changelog@3.3.0:
resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==}
engines: {node: '>= 10'}
@@ -971,6 +1548,9 @@ packages:
electron-to-chromium@1.5.256:
resolution: {integrity: sha512-uqYq1IQhpXXLX+HgiXdyOZml7spy4xfy42yPxcCCRjswp0fYM2X+JwCON07lqnpLEGVCj739B7Yr+FngmHBMEQ==}
+ emoji-regex-xs@1.0.0:
+ resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
+
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -980,6 +1560,10 @@ packages:
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'}
+
env-paths@2.2.1:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
@@ -1010,6 +1594,11 @@ packages:
esbuild-plugin-package-json@2.0.0:
resolution: {integrity: sha512-UTwzdxWSgMY0Yu+m0FibTiYkJZeAj6D7gb69avzvuPNniVjnZCeqmcgvK3JDEYZZ7GD1E/7J/no1pLHgYX7xiw==}
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
esbuild@0.25.12:
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
engines: {node: '>=18'}
@@ -1075,6 +1664,9 @@ packages:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -1090,6 +1682,9 @@ packages:
resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
engines: {node: '>=0.10.0'}
+ exsolve@1.0.8:
+ resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
+
external-editor@3.1.0:
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
engines: {node: '>=4'}
@@ -1157,6 +1752,9 @@ packages:
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ focus-trap@7.6.6:
+ resolution: {integrity: sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==}
+
foreground-child@3.3.1:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
@@ -1172,6 +1770,11 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
@@ -1257,10 +1860,19 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ hast-util-to-html@9.0.5:
+ resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
homedir-polyfill@1.0.3:
resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
engines: {node: '>=0.10.0'}
+ hookable@5.5.3:
+ resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
@@ -1272,6 +1884,9 @@ packages:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
engines: {node: ^16.14.0 || >=18.0.0}
+ html-void-elements@3.0.0:
+ resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+
human-signals@5.0.0:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
@@ -1403,6 +2018,10 @@ packages:
is-utf8@0.2.1:
resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
+ is-what@5.5.0:
+ resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==}
+ engines: {node: '>=18'}
+
is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
@@ -1473,6 +2092,9 @@ packages:
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
engines: {node: '>=0.10.0'}
+ kolorist@1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
+
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -1484,6 +2106,9 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+
lint-staged@15.5.2:
resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==}
engines: {node: '>=18.12.0'}
@@ -1493,6 +2118,10 @@ packages:
resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==}
engines: {node: '>=18.0.0'}
+ local-pkg@1.1.2:
+ resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
+ engines: {node: '>=14'}
+
locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -1560,6 +2189,12 @@ packages:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
+ lunr@2.3.9:
+ resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==}
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
map-obj@1.0.1:
resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
engines: {node: '>=0.10.0'}
@@ -1568,6 +2203,13 @@ packages:
resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
engines: {node: '>=8'}
+ mark.js@8.11.1:
+ resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
+
+ markdown-it@14.1.0:
+ resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ hasBin: true
+
markdown-table@3.0.4:
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
@@ -1601,12 +2243,18 @@ packages:
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==}
+ mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+
meow@12.1.1:
resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
engines: {node: '>=16.10'}
@@ -1753,12 +2401,26 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
+ minisearch@7.2.0:
+ resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==}
+
+ mitt@3.0.1:
+ resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+
+ mlly@1.8.0:
+ resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
mute-stream@0.0.8:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@@ -1816,6 +2478,9 @@ packages:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
+ oniguruma-to-es@3.1.1:
+ resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==}
+
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -1859,6 +2524,9 @@ packages:
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+ package-manager-detector@1.5.0:
+ resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -1902,6 +2570,12 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+ perfect-debounce@1.0.0:
+ resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -1914,6 +2588,12 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
+ pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+
+ pkg-types@2.3.0:
+ resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+
plur@4.0.0:
resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==}
engines: {node: '>=10'}
@@ -1922,6 +2602,13 @@ packages:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ preact@10.27.2:
+ resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==}
+
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -1942,10 +2629,20 @@ packages:
resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
engines: {node: '>=10'}
+ property-information@7.1.0:
+ resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+
+ punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+ quansync@0.2.11:
+ resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -1969,6 +2666,15 @@ packages:
resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
engines: {node: '>=8'}
+ regex-recursion@6.0.2:
+ resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
+
+ regex-utilities@2.3.0:
+ resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
+
+ regex@6.0.1:
+ resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
+
regexp-tree@0.1.27:
resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
hasBin: true
@@ -2021,6 +2727,11 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+ rollup@4.53.3:
+ resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
run-async@2.4.1:
resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
engines: {node: '>=0.12.0'}
@@ -2037,6 +2748,9 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ search-insights@2.17.3:
+ resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==}
+
semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
hasBin: true
@@ -2054,6 +2768,9 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ shiki@2.5.0:
+ resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==}
+
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -2073,6 +2790,13 @@ packages:
resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==}
engines: {node: '>=18'}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
spdx-correct@3.2.0:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
@@ -2085,6 +2809,10 @@ packages:
spdx-license-ids@3.0.22:
resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
+ speakingurl@14.0.1:
+ resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
+ engines: {node: '>=0.10.0'}
+
split2@4.2.0:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
@@ -2108,6 +2836,9 @@ packages:
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ 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'}
@@ -2132,6 +2863,10 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ superjson@2.2.5:
+ resolution: {integrity: sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==}
+ engines: {node: '>=16'}
+
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -2144,6 +2879,9 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ tabbable@6.3.0:
+ resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==}
+
text-extensions@2.4.0:
resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
engines: {node: '>=8'}
@@ -2163,6 +2901,9 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
trim-newlines@3.0.1:
resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
engines: {node: '>=8'}
@@ -2200,6 +2941,19 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
+ typedoc-plugin-markdown@4.9.0:
+ resolution: {integrity: sha512-9Uu4WR9L7ZBgAl60N/h+jqmPxxvnC9nQAlnnO/OujtG2ubjnKTVUFY1XDhcMY+pCqlX3N2HsQM2QTYZIU9tJuw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ typedoc: 0.28.x
+
+ typedoc@0.28.14:
+ resolution: {integrity: sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==}
+ engines: {node: '>= 18', pnpm: '>= 10'}
+ hasBin: true
+ peerDependencies:
+ typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x
+
typescript-eslint@8.47.0:
resolution: {integrity: sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2212,6 +2966,12 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+
+ ufo@1.6.1:
+ resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
@@ -2222,6 +2982,9 @@ packages:
unist-util-is@6.0.1:
resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
unist-util-stringify-position@4.0.0:
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
@@ -2254,6 +3017,71 @@ packages:
resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ vfile-message@4.0.3:
+ resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
+ vite@5.4.21:
+ resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vitepress-plugin-group-icons@1.6.5:
+ resolution: {integrity: sha512-+pg4+GKDq2fLqKb1Sat5p1p4SuIZ5tEPxu8HjpwoeecZ/VaXKy6Bdf0wyjedjaTAyZQzXbvyavJegqAcQ+B0VA==}
+ peerDependencies:
+ vite: '>=3'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vitepress@1.6.4:
+ resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==}
+ hasBin: true
+ peerDependencies:
+ markdown-it-mathjax3: ^4
+ postcss: ^8
+ peerDependenciesMeta:
+ markdown-it-mathjax3:
+ optional: true
+ postcss:
+ optional: true
+
+ vue@3.5.25:
+ resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
@@ -2327,14 +3155,144 @@ packages:
snapshots:
+ '@algolia/abtesting@1.11.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)(search-insights@2.17.3)':
+ dependencies:
+ '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)(search-insights@2.17.3)
+ '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+ - search-insights
+
+ '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)(search-insights@2.17.3)':
+ dependencies:
+ '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)
+ search-insights: 2.17.3
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+
+ '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)':
+ dependencies:
+ '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)
+ '@algolia/client-search': 5.45.0
+ algoliasearch: 5.45.0
+
+ '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)':
+ dependencies:
+ '@algolia/client-search': 5.45.0
+ algoliasearch: 5.45.0
+
+ '@algolia/client-abtesting@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/client-analytics@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/client-common@5.45.0': {}
+
+ '@algolia/client-insights@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/client-personalization@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/client-query-suggestions@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/client-search@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/ingestion@1.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/monitoring@1.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/recommend@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
+ '@algolia/requester-browser-xhr@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+
+ '@algolia/requester-fetch@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+
+ '@algolia/requester-node-http@5.45.0':
+ dependencies:
+ '@algolia/client-common': 5.45.0
+
+ '@antfu/install-pkg@1.1.0':
+ dependencies:
+ package-manager-detector: 1.5.0
+ tinyexec: 1.0.2
+
+ '@antfu/utils@9.3.0': {}
+
'@babel/code-frame@7.27.1':
dependencies:
'@babel/helper-validator-identifier': 7.28.5
js-tokens: 4.0.0
picocolors: 1.1.1
+ '@babel/helper-string-parser@7.27.1': {}
+
'@babel/helper-validator-identifier@7.28.5': {}
+ '@babel/parser@7.28.5':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/types@7.28.5':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
'@commitlint/cli@19.8.1(@types/node@24.10.1)(typescript@5.8.3)':
dependencies:
'@commitlint/format': 19.8.1
@@ -2487,81 +3445,174 @@ snapshots:
chalk: 5.6.2
optional: true
+ '@docsearch/css@3.8.2': {}
+
+ '@docsearch/js@3.8.2(@algolia/client-search@5.45.0)(search-insights@2.17.3)':
+ dependencies:
+ '@docsearch/react': 3.8.2(@algolia/client-search@5.45.0)(search-insights@2.17.3)
+ preact: 10.27.2
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - '@types/react'
+ - react
+ - react-dom
+ - search-insights
+
+ '@docsearch/react@3.8.2(@algolia/client-search@5.45.0)(search-insights@2.17.3)':
+ dependencies:
+ '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)(search-insights@2.17.3)
+ '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.45.0)(algoliasearch@5.45.0)
+ '@docsearch/css': 3.8.2
+ algoliasearch: 5.45.0
+ optionalDependencies:
+ search-insights: 2.17.3
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
'@esbuild/aix-ppc64@0.25.12':
optional: true
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
'@esbuild/android-arm64@0.25.12':
optional: true
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
'@esbuild/android-arm@0.25.12':
optional: true
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
'@esbuild/android-x64@0.25.12':
optional: true
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
'@esbuild/darwin-arm64@0.25.12':
optional: true
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
'@esbuild/darwin-x64@0.25.12':
optional: true
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
'@esbuild/freebsd-arm64@0.25.12':
optional: true
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
'@esbuild/freebsd-x64@0.25.12':
optional: true
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
'@esbuild/linux-arm64@0.25.12':
optional: true
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
'@esbuild/linux-arm@0.25.12':
optional: true
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
'@esbuild/linux-ia32@0.25.12':
optional: true
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
'@esbuild/linux-loong64@0.25.12':
optional: true
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
'@esbuild/linux-mips64el@0.25.12':
optional: true
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
'@esbuild/linux-ppc64@0.25.12':
optional: true
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
'@esbuild/linux-riscv64@0.25.12':
optional: true
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
'@esbuild/linux-s390x@0.25.12':
optional: true
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
'@esbuild/linux-x64@0.25.12':
optional: true
'@esbuild/netbsd-arm64@0.25.12':
optional: true
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
'@esbuild/netbsd-x64@0.25.12':
optional: true
'@esbuild/openbsd-arm64@0.25.12':
optional: true
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
'@esbuild/openbsd-x64@0.25.12':
optional: true
'@esbuild/openharmony-arm64@0.25.12':
optional: true
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
'@esbuild/sunos-x64@0.25.12':
optional: true
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
'@esbuild/win32-arm64@0.25.12':
optional: true
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
'@esbuild/win32-ia32@0.25.12':
optional: true
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
'@esbuild/win32-x64@0.25.12':
optional: true
@@ -2651,6 +3702,14 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@gerrit0/mini-shiki@3.15.0':
+ dependencies:
+ '@shikijs/engine-oniguruma': 3.15.0
+ '@shikijs/langs': 3.15.0
+ '@shikijs/themes': 3.15.0
+ '@shikijs/types': 3.15.0
+ '@shikijs/vscode-textmate': 10.0.2
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.7':
@@ -2658,11 +3717,38 @@ snapshots:
'@humanfs/core': 0.19.1
'@humanwhocodes/retry': 0.4.3
- '@humanwhocodes/module-importer@1.0.1': {}
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/momoa@3.3.10': {}
+
+ '@humanwhocodes/retry@0.4.3': {}
+
+ '@iconify-json/logos@1.2.10':
+ dependencies:
+ '@iconify/types': 2.0.0
+
+ '@iconify-json/simple-icons@1.2.60':
+ dependencies:
+ '@iconify/types': 2.0.0
+
+ '@iconify-json/vscode-icons@1.2.36':
+ dependencies:
+ '@iconify/types': 2.0.0
- '@humanwhocodes/momoa@3.3.10': {}
+ '@iconify/types@2.0.0': {}
- '@humanwhocodes/retry@0.4.3': {}
+ '@iconify/utils@3.0.2':
+ dependencies:
+ '@antfu/install-pkg': 1.1.0
+ '@antfu/utils': 9.3.0
+ '@iconify/types': 2.0.0
+ debug: 4.4.3
+ globals: 15.15.0
+ kolorist: 1.8.0
+ local-pkg: 1.1.2
+ mlly: 1.8.0
+ transitivePeerDependencies:
+ - supports-color
'@isaacs/cliui@8.0.2':
dependencies:
@@ -2673,6 +3759,8 @@ snapshots:
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -2736,6 +3824,130 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
+ '@rollup/rollup-android-arm-eabi@4.53.3':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.53.3':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.53.3':
+ optional: true
+
+ '@shikijs/core@2.5.0':
+ dependencies:
+ '@shikijs/engine-javascript': 2.5.0
+ '@shikijs/engine-oniguruma': 2.5.0
+ '@shikijs/types': 2.5.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
+ '@shikijs/engine-javascript@2.5.0':
+ dependencies:
+ '@shikijs/types': 2.5.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 3.1.1
+
+ '@shikijs/engine-oniguruma@2.5.0':
+ dependencies:
+ '@shikijs/types': 2.5.0
+ '@shikijs/vscode-textmate': 10.0.2
+
+ '@shikijs/engine-oniguruma@3.15.0':
+ dependencies:
+ '@shikijs/types': 3.15.0
+ '@shikijs/vscode-textmate': 10.0.2
+
+ '@shikijs/langs@2.5.0':
+ dependencies:
+ '@shikijs/types': 2.5.0
+
+ '@shikijs/langs@3.15.0':
+ dependencies:
+ '@shikijs/types': 3.15.0
+
+ '@shikijs/themes@2.5.0':
+ dependencies:
+ '@shikijs/types': 2.5.0
+
+ '@shikijs/themes@3.15.0':
+ dependencies:
+ '@shikijs/types': 3.15.0
+
+ '@shikijs/transformers@2.5.0':
+ dependencies:
+ '@shikijs/core': 2.5.0
+ '@shikijs/types': 2.5.0
+
+ '@shikijs/types@2.5.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/types@3.15.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/vscode-textmate@10.0.2': {}
+
'@stylistic/eslint-plugin-js@2.13.0(eslint@9.39.1(jiti@2.6.1))':
dependencies:
eslint: 9.39.1(jiti@2.6.1)
@@ -2775,12 +3987,25 @@ snapshots:
'@types/estree@1.0.8': {}
+ '@types/hast@3.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
'@types/json-schema@7.0.15': {}
+ '@types/linkify-it@5.0.0': {}
+
+ '@types/markdown-it@14.1.2':
+ dependencies:
+ '@types/linkify-it': 5.0.0
+ '@types/mdurl': 2.0.0
+
'@types/mdast@4.0.4':
dependencies:
'@types/unist': 3.0.3
+ '@types/mdurl@2.0.0': {}
+
'@types/minimist@1.2.5': {}
'@types/ms@2.1.0': {}
@@ -2793,6 +4018,8 @@ snapshots:
'@types/unist@3.0.3': {}
+ '@types/web-bluetooth@0.0.21': {}
+
'@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
@@ -2886,6 +4113,112 @@ snapshots:
'@typescript-eslint/types': 8.47.0
eslint-visitor-keys: 4.2.1
+ '@ungap/structured-clone@1.3.0': {}
+
+ '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.1))(vue@3.5.25(typescript@5.8.3))':
+ dependencies:
+ vite: 5.4.21(@types/node@24.10.1)
+ vue: 3.5.25(typescript@5.8.3)
+
+ '@vue/compiler-core@3.5.25':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@vue/shared': 3.5.25
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.25':
+ dependencies:
+ '@vue/compiler-core': 3.5.25
+ '@vue/shared': 3.5.25
+
+ '@vue/compiler-sfc@3.5.25':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@vue/compiler-core': 3.5.25
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-ssr': 3.5.25
+ '@vue/shared': 3.5.25
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.6
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.25':
+ dependencies:
+ '@vue/compiler-dom': 3.5.25
+ '@vue/shared': 3.5.25
+
+ '@vue/devtools-api@7.7.9':
+ dependencies:
+ '@vue/devtools-kit': 7.7.9
+
+ '@vue/devtools-kit@7.7.9':
+ dependencies:
+ '@vue/devtools-shared': 7.7.9
+ birpc: 2.8.0
+ hookable: 5.5.3
+ mitt: 3.0.1
+ perfect-debounce: 1.0.0
+ speakingurl: 14.0.1
+ superjson: 2.2.5
+
+ '@vue/devtools-shared@7.7.9':
+ dependencies:
+ rfdc: 1.4.1
+
+ '@vue/reactivity@3.5.25':
+ dependencies:
+ '@vue/shared': 3.5.25
+
+ '@vue/runtime-core@3.5.25':
+ dependencies:
+ '@vue/reactivity': 3.5.25
+ '@vue/shared': 3.5.25
+
+ '@vue/runtime-dom@3.5.25':
+ dependencies:
+ '@vue/reactivity': 3.5.25
+ '@vue/runtime-core': 3.5.25
+ '@vue/shared': 3.5.25
+ csstype: 3.2.3
+
+ '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.8.3))':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.25
+ '@vue/shared': 3.5.25
+ vue: 3.5.25(typescript@5.8.3)
+
+ '@vue/shared@3.5.25': {}
+
+ '@vueuse/core@12.8.2(typescript@5.8.3)':
+ dependencies:
+ '@types/web-bluetooth': 0.0.21
+ '@vueuse/metadata': 12.8.2
+ '@vueuse/shared': 12.8.2(typescript@5.8.3)
+ vue: 3.5.25(typescript@5.8.3)
+ transitivePeerDependencies:
+ - typescript
+
+ '@vueuse/integrations@12.8.2(focus-trap@7.6.6)(typescript@5.8.3)':
+ dependencies:
+ '@vueuse/core': 12.8.2(typescript@5.8.3)
+ '@vueuse/shared': 12.8.2(typescript@5.8.3)
+ vue: 3.5.25(typescript@5.8.3)
+ optionalDependencies:
+ focus-trap: 7.6.6
+ transitivePeerDependencies:
+ - typescript
+
+ '@vueuse/metadata@12.8.2': {}
+
+ '@vueuse/shared@12.8.2(typescript@5.8.3)':
+ dependencies:
+ vue: 3.5.25(typescript@5.8.3)
+ transitivePeerDependencies:
+ - typescript
+
JSONStream@1.3.5:
dependencies:
jsonparse: 1.3.1
@@ -2915,6 +4248,23 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
+ algoliasearch@5.45.0:
+ dependencies:
+ '@algolia/abtesting': 1.11.0
+ '@algolia/client-abtesting': 5.45.0
+ '@algolia/client-analytics': 5.45.0
+ '@algolia/client-common': 5.45.0
+ '@algolia/client-insights': 5.45.0
+ '@algolia/client-personalization': 5.45.0
+ '@algolia/client-query-suggestions': 5.45.0
+ '@algolia/client-search': 5.45.0
+ '@algolia/ingestion': 1.45.0
+ '@algolia/monitoring': 1.45.0
+ '@algolia/recommend': 5.45.0
+ '@algolia/requester-browser-xhr': 5.45.0
+ '@algolia/requester-fetch': 5.45.0
+ '@algolia/requester-node-http': 5.45.0
+
ansi-escapes@4.3.2:
dependencies:
type-fest: 0.21.3
@@ -2953,6 +4303,8 @@ snapshots:
baseline-browser-mapping@2.8.29: {}
+ birpc@2.8.0: {}
+
bl@4.1.0:
dependencies:
buffer: 5.7.1
@@ -3016,6 +4368,10 @@ snapshots:
chalk@5.6.2: {}
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
character-entities@2.0.2: {}
chardet@0.7.0: {}
@@ -3065,6 +4421,8 @@ snapshots:
colorette@2.0.20: {}
+ comma-separated-tokens@2.0.3: {}
+
commander@13.1.0: {}
commitizen@4.3.1(@types/node@24.10.1)(typescript@5.8.3):
@@ -3094,6 +4452,10 @@ snapshots:
concat-map@0.0.1: {}
+ confbox@0.1.8: {}
+
+ confbox@0.2.2: {}
+
conventional-changelog-angular@7.0.0:
dependencies:
compare-func: 2.0.0
@@ -3111,6 +4473,10 @@ snapshots:
meow: 12.1.1
split2: 4.2.0
+ copy-anything@4.0.5:
+ dependencies:
+ is-what: 5.5.0
+
core-js-compat@3.47.0:
dependencies:
browserslist: 4.28.0
@@ -3146,6 +4512,8 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
+ csstype@3.2.3: {}
+
cz-conventional-changelog@3.3.0(@types/node@24.10.1)(typescript@5.8.3):
dependencies:
chalk: 2.4.2
@@ -3212,12 +4580,16 @@ snapshots:
electron-to-chromium@1.5.256: {}
+ 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: {}
+
env-paths@2.2.1: {}
environment@1.1.0: {}
@@ -3250,6 +4622,32 @@ snapshots:
transitivePeerDependencies:
- bluebird
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
esbuild@0.25.12:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.12
@@ -3373,6 +4771,8 @@ snapshots:
estraverse@5.3.0: {}
+ estree-walker@2.0.2: {}
+
esutils@2.0.3: {}
eventemitter3@5.0.1: {}
@@ -3393,6 +4793,8 @@ snapshots:
dependencies:
homedir-polyfill: 1.0.3
+ exsolve@1.0.8: {}
+
external-editor@3.1.0:
dependencies:
chardet: 0.7.0
@@ -3472,6 +4874,10 @@ snapshots:
flatted@3.3.3: {}
+ focus-trap@7.6.6:
+ dependencies:
+ tabbable: 6.3.0
+
foreground-child@3.3.1:
dependencies:
cross-spawn: 7.0.6
@@ -3488,6 +4894,9 @@ snapshots:
fs.realpath@1.0.0: {}
+ fsevents@2.3.3:
+ optional: true
+
function-bind@1.1.2: {}
get-caller-file@2.0.5: {}
@@ -3575,10 +4984,30 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ 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-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
homedir-polyfill@1.0.3:
dependencies:
parse-passwd: 1.0.0
+ hookable@5.5.3: {}
+
hosted-git-info@2.8.9: {}
hosted-git-info@4.1.0:
@@ -3589,6 +5018,8 @@ snapshots:
dependencies:
lru-cache: 10.4.3
+ html-void-elements@3.0.0: {}
+
human-signals@5.0.0: {}
husky@9.1.7: {}
@@ -3691,6 +5122,8 @@ snapshots:
is-utf8@0.2.1: {}
+ is-what@5.5.0: {}
+
is-windows@1.0.2: {}
isexe@2.0.0: {}
@@ -3743,6 +5176,8 @@ snapshots:
kind-of@6.0.3: {}
+ kolorist@1.8.0: {}
+
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
@@ -3752,6 +5187,10 @@ snapshots:
lines-and-columns@1.2.4: {}
+ linkify-it@5.0.0:
+ dependencies:
+ uc.micro: 2.1.0
+
lint-staged@15.5.2:
dependencies:
chalk: 5.6.2
@@ -3776,6 +5215,12 @@ snapshots:
rfdc: 1.4.1
wrap-ansi: 9.0.2
+ local-pkg@1.1.2:
+ dependencies:
+ mlly: 1.8.0
+ pkg-types: 2.3.0
+ quansync: 0.2.11
+
locate-path@5.0.0:
dependencies:
p-locate: 4.1.0
@@ -3833,10 +5278,27 @@ snapshots:
dependencies:
yallist: 4.0.0
+ lunr@2.3.9: {}
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
map-obj@1.0.1: {}
map-obj@4.3.0: {}
+ mark.js@8.11.1: {}
+
+ markdown-it@14.1.0:
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+
markdown-table@3.0.4: {}
mdast-util-find-and-replace@3.0.2:
@@ -3936,6 +5398,18 @@ snapshots:
'@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.0.0
+ vfile: 6.0.3
+
mdast-util-to-markdown@2.1.2:
dependencies:
'@types/mdast': 4.0.4
@@ -3952,6 +5426,8 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
+ mdurl@2.0.0: {}
+
meow@12.1.1: {}
meow@9.0.0:
@@ -4206,10 +5682,23 @@ snapshots:
minipass@7.1.2: {}
+ minisearch@7.2.0: {}
+
+ mitt@3.0.1: {}
+
+ mlly@1.8.0:
+ dependencies:
+ acorn: 8.15.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.1
+
ms@2.1.3: {}
mute-stream@0.0.8: {}
+ nanoid@3.3.11: {}
+
natural-compare@1.4.0: {}
node-releases@2.0.27: {}
@@ -4297,6 +5786,12 @@ snapshots:
dependencies:
mimic-function: 5.0.1
+ oniguruma-to-es@3.1.1:
+ dependencies:
+ emoji-regex-xs: 1.0.0
+ regex: 6.0.1
+ regex-recursion: 6.0.2
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -4348,6 +5843,8 @@ snapshots:
package-json-from-dist@1.0.1: {}
+ package-manager-detector@1.5.0: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -4380,18 +5877,42 @@ snapshots:
path-type@4.0.0: {}
+ pathe@2.0.3: {}
+
+ perfect-debounce@1.0.0: {}
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
pidtree@0.6.0: {}
+ pkg-types@1.3.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.8.0
+ pathe: 2.0.3
+
+ pkg-types@2.3.0:
+ dependencies:
+ confbox: 0.2.2
+ exsolve: 1.0.8
+ pathe: 2.0.3
+
plur@4.0.0:
dependencies:
irregular-plurals: 3.5.0
pluralize@8.0.0: {}
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ preact@10.27.2: {}
+
prelude-ls@1.2.1: {}
proc-log@4.2.0: {}
@@ -4403,8 +5924,14 @@ snapshots:
err-code: 2.0.3
retry: 0.12.0
+ property-information@7.1.0: {}
+
+ punycode.js@2.3.1: {}
+
punycode@2.3.1: {}
+ quansync@0.2.11: {}
+
queue-microtask@1.2.3: {}
quick-lru@4.0.1: {}
@@ -4433,6 +5960,16 @@ snapshots:
indent-string: 4.0.0
strip-indent: 3.0.0
+ regex-recursion@6.0.2:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ regex-utilities@2.3.0: {}
+
+ regex@6.0.1:
+ dependencies:
+ regex-utilities: 2.3.0
+
regexp-tree@0.1.27: {}
regjsparser@0.10.0:
@@ -4474,6 +6011,34 @@ snapshots:
rfdc@1.4.1: {}
+ rollup@4.53.3:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.53.3
+ '@rollup/rollup-android-arm64': 4.53.3
+ '@rollup/rollup-darwin-arm64': 4.53.3
+ '@rollup/rollup-darwin-x64': 4.53.3
+ '@rollup/rollup-freebsd-arm64': 4.53.3
+ '@rollup/rollup-freebsd-x64': 4.53.3
+ '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
+ '@rollup/rollup-linux-arm-musleabihf': 4.53.3
+ '@rollup/rollup-linux-arm64-gnu': 4.53.3
+ '@rollup/rollup-linux-arm64-musl': 4.53.3
+ '@rollup/rollup-linux-loong64-gnu': 4.53.3
+ '@rollup/rollup-linux-ppc64-gnu': 4.53.3
+ '@rollup/rollup-linux-riscv64-gnu': 4.53.3
+ '@rollup/rollup-linux-riscv64-musl': 4.53.3
+ '@rollup/rollup-linux-s390x-gnu': 4.53.3
+ '@rollup/rollup-linux-x64-gnu': 4.53.3
+ '@rollup/rollup-linux-x64-musl': 4.53.3
+ '@rollup/rollup-openharmony-arm64': 4.53.3
+ '@rollup/rollup-win32-arm64-msvc': 4.53.3
+ '@rollup/rollup-win32-ia32-msvc': 4.53.3
+ '@rollup/rollup-win32-x64-gnu': 4.53.3
+ '@rollup/rollup-win32-x64-msvc': 4.53.3
+ fsevents: 2.3.3
+
run-async@2.4.1: {}
run-parallel@1.2.0:
@@ -4488,6 +6053,8 @@ snapshots:
safer-buffer@2.1.2: {}
+ search-insights@2.17.3: {}
+
semver@5.7.2: {}
semver@7.7.3: {}
@@ -4498,6 +6065,17 @@ snapshots:
shebang-regex@3.0.0: {}
+ shiki@2.5.0:
+ dependencies:
+ '@shikijs/core': 2.5.0
+ '@shikijs/engine-javascript': 2.5.0
+ '@shikijs/engine-oniguruma': 2.5.0
+ '@shikijs/langs': 2.5.0
+ '@shikijs/themes': 2.5.0
+ '@shikijs/types': 2.5.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
@@ -4514,6 +6092,10 @@ snapshots:
ansi-styles: 6.2.3
is-fullwidth-code-point: 5.1.0
+ source-map-js@1.2.1: {}
+
+ space-separated-tokens@2.0.2: {}
+
spdx-correct@3.2.0:
dependencies:
spdx-expression-parse: 3.0.1
@@ -4528,6 +6110,8 @@ snapshots:
spdx-license-ids@3.0.22: {}
+ speakingurl@14.0.1: {}
+
split2@4.2.0: {}
string-argv@0.3.2: {}
@@ -4554,6 +6138,11 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ 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
@@ -4572,6 +6161,10 @@ snapshots:
strip-json-comments@3.1.1: {}
+ superjson@2.2.5:
+ dependencies:
+ copy-anything: 4.0.5
+
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
@@ -4582,6 +6175,8 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ tabbable@6.3.0: {}
+
text-extensions@2.4.0: {}
through@2.3.8: {}
@@ -4596,6 +6191,8 @@ snapshots:
dependencies:
is-number: 7.0.0
+ trim-lines@3.0.1: {}
+
trim-newlines@3.0.1: {}
ts-api-utils@2.1.0(typescript@5.8.3):
@@ -4618,6 +6215,19 @@ snapshots:
type-fest@4.41.0: {}
+ typedoc-plugin-markdown@4.9.0(typedoc@0.28.14(typescript@5.8.3)):
+ dependencies:
+ typedoc: 0.28.14(typescript@5.8.3)
+
+ typedoc@0.28.14(typescript@5.8.3):
+ dependencies:
+ '@gerrit0/mini-shiki': 3.15.0
+ lunr: 2.3.9
+ markdown-it: 14.1.0
+ minimatch: 9.0.5
+ typescript: 5.8.3
+ yaml: 2.8.1
+
typescript-eslint@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3)
@@ -4631,6 +6241,10 @@ snapshots:
typescript@5.8.3: {}
+ uc.micro@2.1.0: {}
+
+ ufo@1.6.1: {}
+
undici-types@7.16.0: {}
unicorn-magic@0.1.0: {}
@@ -4639,6 +6253,10 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ unist-util-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
unist-util-stringify-position@4.0.0:
dependencies:
'@types/unist': 3.0.3
@@ -4675,6 +6293,94 @@ snapshots:
validate-npm-package-name@5.0.1: {}
+ 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@5.4.21(@types/node@24.10.1):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.5.6
+ rollup: 4.53.3
+ optionalDependencies:
+ '@types/node': 24.10.1
+ fsevents: 2.3.3
+
+ vitepress-plugin-group-icons@1.6.5(vite@5.4.21(@types/node@24.10.1)):
+ dependencies:
+ '@iconify-json/logos': 1.2.10
+ '@iconify-json/vscode-icons': 1.2.36
+ '@iconify/utils': 3.0.2
+ optionalDependencies:
+ vite: 5.4.21(@types/node@24.10.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ vitepress@1.6.4(@algolia/client-search@5.45.0)(@types/node@24.10.1)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.8.3):
+ dependencies:
+ '@docsearch/css': 3.8.2
+ '@docsearch/js': 3.8.2(@algolia/client-search@5.45.0)(search-insights@2.17.3)
+ '@iconify-json/simple-icons': 1.2.60
+ '@shikijs/core': 2.5.0
+ '@shikijs/transformers': 2.5.0
+ '@shikijs/types': 2.5.0
+ '@types/markdown-it': 14.1.2
+ '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@24.10.1))(vue@3.5.25(typescript@5.8.3))
+ '@vue/devtools-api': 7.7.9
+ '@vue/shared': 3.5.25
+ '@vueuse/core': 12.8.2(typescript@5.8.3)
+ '@vueuse/integrations': 12.8.2(focus-trap@7.6.6)(typescript@5.8.3)
+ focus-trap: 7.6.6
+ mark.js: 8.11.1
+ minisearch: 7.2.0
+ shiki: 2.5.0
+ vite: 5.4.21(@types/node@24.10.1)
+ vue: 3.5.25(typescript@5.8.3)
+ optionalDependencies:
+ postcss: 8.5.6
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - '@types/node'
+ - '@types/react'
+ - async-validator
+ - axios
+ - change-case
+ - drauu
+ - fuse.js
+ - idb-keyval
+ - jwt-decode
+ - less
+ - lightningcss
+ - nprogress
+ - qrcode
+ - react
+ - react-dom
+ - sass
+ - sass-embedded
+ - search-insights
+ - sortablejs
+ - stylus
+ - sugarss
+ - terser
+ - typescript
+ - universal-cookie
+
+ vue@3.5.25(typescript@5.8.3):
+ dependencies:
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-sfc': 3.5.25
+ '@vue/runtime-dom': 3.5.25
+ '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.8.3))
+ '@vue/shared': 3.5.25
+ optionalDependencies:
+ typescript: 5.8.3
+
wcwidth@1.0.1:
dependencies:
defaults: 1.0.4
diff --git a/prepare-typedoc.sh b/prepare-typedoc.sh
new file mode 100644
index 0000000..3762fa3
--- /dev/null
+++ b/prepare-typedoc.sh
@@ -0,0 +1,6 @@
+mkdir ./dist/typedoc/reference
+mv ./dist/typedoc/* ./dist/typedoc/reference
+mv ./dist/typedoc/index.md ./dist/typedoc/reference/index.md
+
+cp -r ./.docs/vitepress/* ./dist/typedoc
+cp CODE_OF_CONDUCT.md ./dist/typedoc/other/code-of-conduct.md
diff --git a/src/array/join.ts b/src/array/join.ts
index cd057d2..2819c4e 100644
--- a/src/array/join.ts
+++ b/src/array/join.ts
@@ -1,3 +1,21 @@
+/**
+ * @module Array
+ */
+
+/**
+ * Joins array elements into a string, automatically skipping null and undefined values.
+ * @param this - Array instance
+ * @param separator - The string to insert between array elements
+ * @returns A string with all non-nullish array elements joined by the separator.
+ *
+ * @example
+ * const array = [1, "a", undefined, "b", 3,, null];
+ * const joined = array.nonNullishJoin(",");
+ * console.assert(joined === "1,a,b,3,");
+ *
+ * @since 1.0.0
+ * @author Simon Kovtyk
+ */
function nonNullishJoin (this: readonly unknown[], separator: string): string {
let joined: string = "";
diff --git a/src/date/iso-date.ts b/src/date/iso-date.ts
index d72cdad..ecab287 100644
--- a/src/date/iso-date.ts
+++ b/src/date/iso-date.ts
@@ -1,3 +1,33 @@
+/**
+ * @module Date
+ */
+
+/**
+ * Converts a `Date` object to an ISO 8601 date string (YYYY-MM-DD)
+ * By default, the `Date` is computed in UTC (i.e. based on `Date.prototype.toISOString()`),
+ * which means the returned value may differ from the local calendar day if your local
+ * timezone is behind/ahead of UTC.
+ *
+ * If `isLocal` is set to `true`, the date is instead computed using local time
+ * (`getFullYear()`, `getMonth()`, `getDate()`), so the string always reflects the
+ * local calendar date.
+ *
+ * @param this - `Date` object instance
+ * @param [isLocal=false] - If `true`, uses local time; otherwise, uses UTC time
+ * @returns The ISO 8601 date string
+ *
+ * @example
+ * const d = new Date("2025-03-15T23:30:00Z");
+ *
+ * // UTC-based date (default):
+ * d.toISOStringDate(); // e.g. "2025-03-15"
+ *
+ * // Local-time-based date:
+ * d.toISOStringDate(true); // e.g. "2025-03-16" in a timezone ahead of UTC
+ *
+ * @since 1.1.0
+ * @author Ian Wenneckers
+ */
function toISOStringDate (this: Date, isLocal: boolean = false): string {
if (isLocal) {
return `${ this.getFullYear() }-${ (this.getMonth() + 1).toString().padStart(2, "0") }-${ this.getDate().toString()
diff --git a/src/map/to-object.ts b/src/map/to-object.ts
index 424ec9d..1c89d13 100644
--- a/src/map/to-object.ts
+++ b/src/map/to-object.ts
@@ -1,3 +1,35 @@
+/**
+ * @module Map
+ */
+
+/**
+ * Converts a `Map` (or `ReadonlyMap`) into a plain object whose properties correspond to the `Map`’s keys and values. If the `M̀ap` is empty, or if it yields no enumerable keys after conversion, `null` is returned instead of an empty `object`.
+ *
+ * @param this - `Map` instance
+ * @returns A `Record` with the same key-value pairs as the `Map`. Or `null` if the `Map` is empty or the resulting `object` has no own enumerable keys.
+ *
+ * @example
+ * const mapTest = new Map();
+ *
+ * const sym = Symbol()
+ *
+ * mapTest.set("name", "John");
+ * mapTest.set(1, 1);
+ * mapTest.set(sym, { test: "hello" });
+ *
+ * const object = mapTest.toObject();
+ *
+ * const expectedResult = {
+ * name: "John",
+ * 1: 1,
+ * [sym]: { test: "hello" }
+ * }
+ *
+ * console.assert(JSON.stringify(expectedResult) === JSON.stringify(object));
+ *
+ * @since 1.0.0
+ * @author Ian Wenneckers
+ */
function toObject (this: ReadonlyMap): Record | null {
if (this.size === 0)
return null;
diff --git a/src/math/round.ts b/src/math/round.ts
index 122f9ff..cd8376d 100644
--- a/src/math/round.ts
+++ b/src/math/round.ts
@@ -1,3 +1,21 @@
+/**
+ * @module Math
+ */
+
+/**
+ * Rounds a `number` to the nearest integer using a custom fractional threshold instead of the standard 0.5.
+ *
+ * @param value - `number` to round.
+ * @param threshold - Fractional threshold at which rounding switches from floor to ceil. Typically between `0` and `1`.
+ * @returns The rounded integer result according to the provided threshold.
+ *
+ * @example
+ * console.assert(Math.roundWithThreshold(1.5, 0.3) === 2)
+ * console.assert(Math.roundWithThreshold(1.2, 0.3) === 1)
+ *
+ * @since 1.0.0
+ * @author Ian Wenneckers
+ */
function roundWithThreshold (value: number, threshold: number): number {
const integerPart: number = Math.floor(value);
const fraction: number = value - integerPart;
diff --git a/src/number/bounds.ts b/src/number/bounds.ts
index 8f1dfd4..e63777d 100644
--- a/src/number/bounds.ts
+++ b/src/number/bounds.ts
@@ -1,4 +1,21 @@
-function ensureBounds (this: number, min: number, max: number): number {
+/**
+ * Clamps a `number` to ensure it stays within the provided [min, max] range`.
+ *
+ * @param this - `number` instance
+ * @param min - lower bound (inclusive)
+ * @param max - upper bound (inclusive)
+ * @returns `number` that is guaranteed to be between min and max (inclusive), unless this coerces to `NaN` (see edge cases)
+ *
+ * @example
+ * const boundedNumberMax = (100).ensureBounds(1, 50);
+ * const boundedNumberMin = (0).ensureBounds(1,50);
+ * console.assert(boundedNumberMax === 50);
+ * console.assert(boundedNumberMin === 1);
+ *
+ * @since 1.0.0
+ * @author Simon Kovtyk
+ */
+export function ensureBounds (this: number, min: number, max: number): number {
const value: number = Number(this);
if (value < min)
diff --git a/src/number/index.ts b/src/number/index.ts
new file mode 100644
index 0000000..033bcf8
--- /dev/null
+++ b/src/number/index.ts
@@ -0,0 +1,6 @@
+/**
+ * @module Number
+ */
+
+export * from "./bounds";
+export * from "./into";
diff --git a/src/number/into.ts b/src/number/into.ts
index f09b4ac..6f1449a 100644
--- a/src/number/into.ts
+++ b/src/number/into.ts
@@ -1,4 +1,19 @@
-function into (value: unknown): number | null {
+/**
+ * Converts an arbitrary value into a number using `Number(value)` internally
+ *
+ * @param value - value that we want to turn into a `number`
+ * @returns `null` if value is `null` or `undefined`. Otherwise, the result of `Number(value)` (which may be `NaN`)
+ *
+ * @example
+ * console.assert(Number.isNaN(Number.into("abc")) === true);
+ * console.assert(Number.into("5") === 5);
+ * console.assert(Number.into(undefined) === null);
+ * console.assert(Number.into(5n) === 5);
+ *
+ * @since 1.0.0
+ * @author Simon Kovtyk
+ */
+export function into (value: unknown): number | null {
if (value === null || value === undefined)
return null;
diff --git a/src/object/has-keys.ts b/src/object/has-keys.ts
index c4dcab8..d667409 100644
--- a/src/object/has-keys.ts
+++ b/src/object/has-keys.ts
@@ -1,6 +1,24 @@
+/**
+ * @module Object
+ */
import { PickFromKeys } from "../types";
-function hasKeys (this: object, ...keys: ReadonlyArray): this is PickFromKeys {
+/**
+ * Checks whether an `object` has all of the specified keys, and acts as a TypeScript type guard that narrows the type of the object to only include those keys
+ *
+ * @param this - `object` instance
+ * @param keys - The keys to check for in the `object`
+ * @returns `true` if all specified keys are present in the `object`. Otherwise `false`. When `true`, TypeScript narrows the type of this to `PickFromKeys` (the `object` with at least those keys)
+ *
+ * @example
+ * const hasKeysObject = { name: "john", age: 39 };
+ * console.assert(hasKeysObject.hasKeys("name"));
+ * console.assert(hasKeysObject.hasKeys("age"));
+ *
+ * @since 1.0.0
+ * @author Simon Kovtyk
+ */
+export function hasKeys (this: object, ...keys: ReadonlyArray): this is PickFromKeys {
let _hasKeys: boolean = true;
for (const key of keys) {
diff --git a/src/public-api.ts b/src/public-api.ts
index d621e75..f78a8f6 100644
--- a/src/public-api.ts
+++ b/src/public-api.ts
@@ -17,13 +17,6 @@ declare global {
}
interface Date {
- /**
- * @param isLocal Indicates whether the date should be returned in local time. If omitted, the date is returned in UTC.
- * @returns date in ISO-8601 format (`YYYY-MM-DD`)
- *
- * @author Ian Wenneckers
- * @since 1.1.0
- */
toISOStringDate(isLocal?: boolean): string;
}
diff --git a/src/string/capitalize.ts b/src/string/capitalize.ts
index 759b358..e2424b2 100644
--- a/src/string/capitalize.ts
+++ b/src/string/capitalize.ts
@@ -1,3 +1,19 @@
+/**
+ * @module String
+ */
+
+/**
+ * Converts the first character of a `string` to uppercase and returns the resulting `string`. All remaining characters are left unchanged.
+ *
+ * @param this - string instance
+ * @returns A new `string` with the first character converted to uppercase. If the `string` is empty, an empty `string` is returned.
+ *
+ * @example
+ * console.assert("hello".capitalize() === "Hello");
+ *
+ * @since 1.0.0
+ * @author Ian Wenneckers
+ */
function capitalize (this: string): string {
return this.charAt(0).toUpperCase() + this.slice(1);
}
diff --git a/src/types.ts b/src/types.ts
index fd21310..227b0cb 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,25 +1,186 @@
+/**
+ * @module Types
+ */
+/* eslint-disable @stylistic/ts/padding-line-between-statements */
+
+/**
+ * Converts a union type to an intersection type.
+ *
+ * @typeParam U - The union type to convert
+ *
+ * @example
+ * type Union = { a: string } | { b: number };
+ * type Result = UnionToIntersection;
+ * // Result: { a: string } & { b: number }
+ */
export type UnionToIntersection =
(U extends unknown ? (k: U) => void : never) extends (k: infer I) => void
? I
: never;
+
+/**
+ * Extracts the element type from an `array` type.
+ *
+ * @typeParam T - The `array` type to infer from
+ *
+ * @example
+ * type Result = InferArray<[string, number, boolean]>;
+ * // Result: string | number | boolean
+ */
export type InferArray = T extends Array ? U : never;
+
+/**
+ * Determines whether a type is a union type (has multiple constituents).
+ *
+ * @typeParam T - The type to check
+ * @typeParam U - Internal parameter for comparison (defaults to T)
+ * @example
+ * type A = IsUnion; // true
+ * type B = IsUnion; // false
+ */
export type IsUnion = T extends unknown
? [U] extends [T]
? false
: true
: never;
+
+/**
+ * Conditional type that returns `true` if `T` extends `ToCheck`, otherwise returns `false`.
+ *
+ * @typeParam T - The type to check
+ * @typeParam ToCheck - The type to check against
+ * @typeParam True - The type to return if the condition is `true` (default: `true`)
+ * @typeParam False - The type to return if the condition is `false` (default: `false`)
+ *
+ * @example
+ * type A = If; // 'yes'
+ * type B = If; // 'no'
+ */
export type If = T extends ToCheck ? True : False;
+
+/**
+ * Checks whether type `U` is fully contained within type `T` (i.e., whether `U` is a subtype of `T`).
+ *
+ * @typeParam T - The broader type
+ * @typeParam U - The type to check, constrained to extend T
+ *
+ * @example
+ * type A = ContainsUnion; // true
+ * type B = ContainsUnion; // false
+ */
export type ContainsUnion = [U] extends [T] ? true : false;
+
+/**
+ * Extracts members from a union type `U` that have a specific key `K`.
+ *
+ * @typeParam U - The union type to filter
+ * @typeParam K - The key that must exist on the extracted types
+ *
+ * @example
+ * type Union = { type: 'a'; value: string } | { type: 'b'; count: number } | { other: boolean };
+ * type Result = ExtractUnionByKey;
+ * // Result: { type: 'a'; value: string } | { type: 'b'; count: number }
+ */
export type ExtractUnionByKey = U extends Record ? U : never;
+
+/**
+ * Extracts all possible keys from a union of `object` types.
+ *
+ * @typeParam U - The union type to extract keys from
+ *
+ * @example
+ * type Union = { a: string; b: number } | { b: number; c: boolean };
+ * type Keys = UnionKeys;
+ * // Keys: 'a' | 'b' | 'c'
+ */
export type UnionKeys = U extends unknown ? keyof U : never;
+
+/**
+ * Recursively applies `DeepNormalized` to all properties of an `object` type.
+ *
+ * @typeParam T - `object` type to normalize
+ *
+ * @example
+ * // Before:
+ * type RawUser = {
+ * id: string | number | null;
+ * name?: string | null;
+ * address: {
+ * street: string | null;
+ * city?: string | null;
+ * } | null;
+ * };
+ *
+ * // Usage:
+ * type NormalizedUser = DeepNormalizedObject;
+ *
+ * // After (assuming `DeepNormalized` removes null/undefined and recurses):
+ * // type NormalizedUser = {
+ * // id: string | number;
+ * // name: string;
+ * // address: {
+ * // street: string;
+ * // city: string;
+ * // };
+ * // };
+ */
export type DeepNormalizedObject =
{
[K in keyof T]: DeepNormalized
};
+
+
+/**
+ * Recursively applies `DeepNormalized` to an `array` type.
+ *
+ * @typeParam T - The array type to normalize
+ *
+ * @example
+ * // Before:
+ * type RawItem = {
+ * id: string | number | null;
+ * tags?: (string | null | undefined)[];
+ * };
+ *
+ * type RawItems = RawItem[];
+ *
+ * // Usage:
+ * type NormalizedItems = DeepNormalizedArray;
+ *
+ * // After (assuming `DeepNormalized` removes null/undefined and recurses):
+ * // type NormalizedItems = Array<{
+ * // id: string | number;
+ * // tags: string[];
+ * // }>;
+ */
export type DeepNormalizedArray =
T extends Array
? Array>
: T;
+
+/**
+ * Recursively normalizes a type by making all properties nullable throughout the type tree.
+ * Non-string primitive types, null, and undefined are preserved as-is.
+ *
+ * @typeParam T - Type to normalize
+ * @example
+ * type Original = {
+ * name: string;
+ * age: number;
+ * address: {
+ * street: string
+ * }
+ * };
+ *
+ * type Result = DeepNormalized;
+ * // Result: {
+ * // name: string | null;
+ * // age: number;
+ * // address: {
+ * // street: string | null
+ * // }
+ * // }
+ */
export type DeepNormalized = (
T extends null
? null
@@ -32,26 +193,125 @@ export type DeepNormalized = (
: T extends string
? T | null
: T
- );
+);
+
+/**
+ * Creates a new type by picking only the properties specified in the keys `array` from `object`.
+ * Similar to `Pick`, but accepts a readonly `array` of keys.
+ *
+ * @typeParam O - The `object` type to pick from
+ * @typeParam K - A readonly array of keys to pick
+ *
+ * @example
+ * type Original = {
+ * a: string
+ * b: number
+ * c: boolean
+ * };
+ *
+ * type Result = PickFromKeys;
+ * // Result: { a: string; c: boolean }
+ */
export type PickFromKeys> = {
[P in K[number]]: O[P];
};
+
+/**
+ * Makes all properties of a `object` type required by excluding `undefined` from each property type.
+ *
+ * @typeParam T - `object` to make non-partial
+ *
+ * @example
+ * type Original = { a?: string; b: number | undefined };
+ * type Result = NonPartial;
+ * // Result: { a: string; b: number }
+ */
export type NonPartial = {
[K in keyof T]: Exclude;
};
+
+/**
+ * Recursively applies `DeepNullable` to all properties of an `object` type.
+ *
+ * @typeParam T - `object` type to make nullable
+ */
export type DeepNullableObject = {
[K in keyof T]: DeepNullable;
};
+
+/**
+ * Recursively applies `DeepNullable` to `array` type.
+ *
+ * @typeParam T - `Array` type to make nullable
+ */
export type DeepNullableArray = T extends Array ? Array> : T;
+
+/**
+ * Recursively makes all properties throughout a type tree nullable by adding `null` to each property.
+ *
+ * @typeParam T - The type to make deeply nullable
+ *
+ * @example
+ * type Original = {
+ * name: string;
+ * address: {
+ * street: string;
+ * city: string;
+ * }
+ * };
+ *
+ * type Result = DeepNullable;
+ * // Result: {
+ * // name: string | null;
+ * // address: {
+ * // street: string | null;
+ * // city: string | null;
+ * // } | null;
+ * // }
+ */
export type DeepNullable = T extends object
? DeepNullableObject
: T extends unknown[]
? DeepNullableArray
: T | null;
+
+/**
+ * Makes all properties of an `object` type nullable (adds `null` to each property).
+ *
+ * @typeParam T - `object` type to make nullable
+ *
+ * @example
+ * type Original = { name: string; age: number };
+ * type Result = NullableObject;
+ * // Result: { name: string | null; age: number | null }
+ */
export type NullableObject = {
[K in keyof T]: T[K] | null;
};
+
+/**
+ * Makes `array` type nullable (adds `null` to the element type).
+ *
+ * @typeParam T - `array` type to make nullable
+ *
+ * @example
+ * type Original = string[];
+ * type Result = NullableArray;
+ * // Result: (string | null)[]
+ */
export type NullableArray = T extends Array ? Array : T;
+
+/**
+ * Makes all properties at the first level nullable by adding `null`.
+ * Unlike `DeepNullable`, this only applies to the immediate properties, not nested ones.
+ *
+ * @typeParam T - Type to make nullable
+ *
+ * @example
+ * type Original = { name: string; address: { street: string } };
+ * type Result = Nullable;
+ * // Result: { name: string | null; address: { street: string } | null }
+ */
export type Nullable = T extends object
? NullableObject
: T extends unknown[]
diff --git a/tsconfig.json b/tsconfig.json
index 48fa8e3..6022169 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,5 +1,5 @@
{
- "include": ["./src/**/*.ts"],
+ "include": ["./src/**/*.ts","./.vitepress/.vitepress/config.ts"],
"compilerOptions": {
"baseUrl": ".",
"module": "esnext",
diff --git a/typedoc.json b/typedoc.json
new file mode 100644
index 0000000..760808b
--- /dev/null
+++ b/typedoc.json
@@ -0,0 +1,54 @@
+{
+ "$schema": "https://typedoc-plugin-markdown.org/schema.json",
+ "out": "dist/typedoc",
+ "name": "Home",
+ "includeVersion": true,
+ "entryPoints": [
+ "src/array/join.ts",
+ "src/date/iso-date.ts",
+ "src/map/to-object.ts",
+ "src/math/round.ts",
+ "src/number/index.ts",
+ "src/object/has-keys.ts",
+ "src/string/capitalize.ts",
+ "src/types.ts"
+ ],
+ "entryPointStrategy": "resolve",
+ "excludePrivate": true,
+ "excludeProtected": true,
+ "plugin": [
+ "typedoc-plugin-markdown"
+ ],
+ "lang": "en",
+ "entryFileName": "index.md",
+ "modulesFileName": "modules.md",
+ "mergeReadme": true,
+ "hidePageHeader": true,
+ "hideBreadcrumbs": true,
+ "hidePageTitle": false,
+ "pageTitleTemplates": {
+ "index": "Reference",
+ "member": "{name}",
+ "module": "{name}"
+ },
+ "useCustomAnchors": false,
+ "readme": "none",
+ "useCodeBlocks": true,
+ "indexFormat": "list",
+ "parametersFormat": "table",
+ "interfacePropertiesFormat": "table",
+ "classPropertiesFormat": "table",
+ "enumMembersFormat": "table",
+ "router": "kind",
+ "navigation": {
+ "includeCategories": true,
+ "includeGroups": true,
+ "includeFolders": true,
+ "compactFolders": false,
+ "excludeReferences": true
+ },
+ "categorizeByGroup": false,
+ "githubPages": true,
+ "hideGenerator": true,
+ "searchInComments": true
+}