diff --git a/.config/.jscpd.json b/.config/.jscpd.json index 07cedff256ef..87dd0ba6f900 100644 --- a/.config/.jscpd.json +++ b/.config/.jscpd.json @@ -12,6 +12,7 @@ "**/.next/**", "**/.nuxt/**", "**/.output/**", + "**/agent/**", "**/.vscode/**", "**/*-example/index.html", "**/*-showcase/index.html", diff --git a/.github/workflows/01-build-outputs.yml b/.github/workflows/01-build-outputs.yml index ba21c403ab69..638fdc3ab88f 100644 --- a/.github/workflows/01-build-outputs.yml +++ b/.github/workflows/01-build-outputs.yml @@ -39,6 +39,12 @@ jobs: name: db-ux-stylelint-build path: packages/stylelint/build + - name: ⏬ Download agent-cli build + uses: actions/download-artifact@v4 + with: + name: db-ux-agent-cli-build + path: packages/agent-cli/build + - name: ⏬ Download output uses: actions/download-artifact@v4 with: @@ -51,7 +57,9 @@ jobs: install-command: npm i - name: 🔨 Build outputs - run: npm run build-outputs + run: | + npm run generate:agent + npm run build-outputs - name: ⏫ Upload outputs uses: actions/upload-artifact@v4 diff --git a/.github/workflows/01-build-packages.yml b/.github/workflows/01-build-packages.yml index ff4de091d517..3efbbdd4b1d5 100644 --- a/.github/workflows/01-build-packages.yml +++ b/.github/workflows/01-build-packages.yml @@ -48,6 +48,12 @@ jobs: name: db-ux-stylelint-build path: packages/stylelint/build + - name: ⏫ Upload agent-cli build + uses: actions/upload-artifact@v4 + with: + name: db-ux-agent-cli-build + path: packages/agent-cli/build + - name: 💀 Killing me softly uses: ./.github/actions/cancel-workflow if: failure() diff --git a/.gitignore b/.gitignore index 1852f17b884b..f334eb52c30c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store node_modules +!packages/agent-cli/test/**/node_modules npm-debug.log .history .idea @@ -66,3 +67,6 @@ showcases/patternhub/public/iframe-resizer/* /scripts/public/ /scripts/gh-pages.tar.gz !/scripts/tests/fixtures/out +/output/**/docs/ +/output/**/agent/ +/packages/agent-cli/test/.github/copilot-instructions.md diff --git a/.markdownlintignore b/.markdownlintignore index 0c826d552904..6fcc4f34534a 100644 --- a/.markdownlintignore +++ b/.markdownlintignore @@ -7,3 +7,4 @@ build-outputs/** build-showcases/** showcases/**/public/** CODE-OF-CONDUCT.md +**/agent/** diff --git a/docs/adr/adr-05-copilot-developer-doc.md b/docs/adr/adr-05-copilot-developer-doc.md new file mode 100644 index 000000000000..6f9a62754ebf --- /dev/null +++ b/docs/adr/adr-05-copilot-developer-doc.md @@ -0,0 +1,77 @@ +# ADR 2025-06-10: Documentation strategy for GitHub Copilot and developer docs + +## Context + +We need a consistent, maintainable documentation approach that serves both developers and AI-assisted coding +tools (GitHub Copilot) without duplicating effort. The documentation must cover component usage, variants, props, +examples, and allow Copilot to answer questions like "What variants does the Button support?" without manually +opening multiple files. + +Key requirements: + +- Single source of truth for component documentation. +- Automatic inclusion of context in Copilot Chat for both IDEs, VS Code and IntelliJ. +- Developer-friendly Markdown for manual reading and static site generation. +- Compatibility with LLM context conventions (llms.txt) and Copilot Custom Instructions (copilot-instructions.md). + +## Decision + +1. Documentation Format & Location + + - Use Markdown files per component, stored in packages/components/docs/ or packages/components/src/components/docs/. + - Central table of contents in docs/llms.txt listing all component docs with relative paths. + +2. Copilot Custom Instructions + + - Place copilot-instructions.md in the project root (under .github/) to provide global guidance. + - Instruct Copilot Chat to load this file automatically; it will include links to llms.txt and recommended file paths. + +3. Automatic Context Loading + + - In VS Code and IntelliJ, Copilot Chat will automatically read .github/copilot-instructions.md on new chats. + - To surface specific details, embed documentation (e.g., Button.md) directly in copilot-instructions.md. + +4. Interactive Context Attachment + + - For deeper or ad-hoc queries, use the "Attach Context" feature in Copilot Chat to load component Markdown files during the session. + +5. Static Site & Developer Docs + + - Integrate component docs via Astro as a package in the monorepo, referencing Markdown sources in packages/components/... . + - Render pages dynamically under /components/[slug] and /api/[slug] for manual browsing. + +6. Automated Propagation of Copilot Instructions + + We add a `postinstall` hook to our component package that: + + - copies or appends the package-specific file `.github/copilot-instructions.md` to the target project, + - uses unique markers to automatically replace outdated blocks during future installations, + - handles missing or already existing files as well as idempotent updates cleanly, ensuring that every installation immediately provides the latest Copilot context for our package. + +7. Automate generation and propagation of Copilot instructions on package build. + + - Define `generate:copilot-instructions` in `package.json` and hook into `prepare`. + - Only include `*.md` files whose filename matches the parent directory converted to PascalCase (e.g. `custom-select` → `CustomSelect.md`), ensuring no unrelated MDs are merged. + +## Alternatives Considered + +- Rely solely on Code Search: Let Copilot use workspace search to locate docs dynamically. Rejected due to inconsistency and limited to agent mode. +- TypeDoc-only approach: Generate API docs from TypeScript. Provides type detail but lacks usage narratives and cross-framework examples. +- Mitosis Metadata Model: Embed JSON metadata via useMetadata and generate docs. Promising, but requires custom plugins and not widely adopted yet. + +## Consequences + +- Pros: + + - Clear separation: manual design guidance (Markdown) vs. AI context (Instructions + llms.txt snippets). + - Maintains single source (docs in packages/components/docs). + - Enables Copilot to provide accurate, component-specific suggestions without manual file opening. + - Developer site generation remains straightforward via Astro. + - Consumers always receive the latest Copilot context without manual steps. + - Guarantees that only the intended component documentation is merged into Copilot instructions. + +- Cons: + - Requires maintaining excerpts in copilot-instructions.md when docs change. + - Copilot cannot truly auto-load all linked docs; manual attachment or excerpt embedding needed for deep context. + - Postinstall hooks may be disabled for security reasons, making it impossible to automate the copying of the copilot instructions. + - Relies on strict naming conventions; any divergence between folder and file names will cause a component’s docs to be skipped. diff --git a/output/angular/README.md b/output/angular/README.md index ec8e461f49bc..f66ccb2df8ee 100644 --- a/output/angular/README.md +++ b/output/angular/README.md @@ -113,6 +113,17 @@ There are 3 ways to use Events in Angular: > ``` +## Documentation for AI Agents + +We provide a documentation for every component in the DB UX Design System via `docs` folder. +To consume those documentation for AI Agents the best way is to copy the `docs` folder into your project. + +We provide a CLI tool to do this automatically, which you can run with: + +```shell +npx @db-ux/agent-cli +``` + ## Deutsche Bahn brand As we'd like to perfectly support our users and customers on their digital journey, the usage of Deutsche Bahn brand and trademarks are bound of clear guidelines and restrictions even if being used with the code that we're providing with this product; Deutsche Bahn fully reserves all rights regarding the Deutsche Bahn brand, even though that we're providing the code of DB UX Design System products free to use and release it under the Apache 2.0 license. diff --git a/output/angular/agent/.gitkeep b/output/angular/agent/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/output/angular/package.json b/output/angular/package.json index 3af4e6587488..2280fa97fc33 100644 --- a/output/angular/package.json +++ b/output/angular/package.json @@ -10,9 +10,15 @@ "main": "dist/fesm5.js", "module": "dist/fesm5.js", "types": "dist/core.d.ts", + "files": [ + "dist/", + "agent" + ], "scripts": { "build": "ng build", + "mv:agent": "cpr agent ../../build-outputs/angular/agent -o", "ng": "ng", + "postbuild": "npm-run-all -p mv:*", "start": "ng serve" }, "devDependencies": { diff --git a/output/react/README.md b/output/react/README.md index 3d8100a655e9..5723df6d784f 100644 --- a/output/react/README.md +++ b/output/react/README.md @@ -59,6 +59,17 @@ import { DBButton } from '@db-ux/react-core-components'; ... ``` +## Documentation for AI Agents + +We provide a documentation for every component in the DB UX Design System via `docs` folder. +To consume those documentation for AI Agents the best way is to copy the `docs` folder into your project. + +We provide a CLI tool to do this automatically, which you can run with: + +```shell +npx @db-ux/agent-cli +``` + ## Deutsche Bahn brand As we'd like to perfectly support our users and customers on their digital journey, the usage of Deutsche Bahn brand and trademarks are bound of clear guidelines and restrictions even if being used with the code that we're providing with this product; Deutsche Bahn fully reserves all rights regarding the Deutsche Bahn brand, even though that we're providing the code of DB UX Design System products free to use and release it under the Apache 2.0 license. diff --git a/output/react/agent/.gitkeep b/output/react/agent/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/output/react/package.json b/output/react/package.json index eea4a64ad089..5f0513613c87 100644 --- a/output/react/package.json +++ b/output/react/package.json @@ -11,11 +11,13 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ - "dist/" + "dist/", + "agent" ], "scripts": { "build": "npm-run-all tsc", "mv:dist": "cpr dist ../../build-outputs/react/dist --overwrite", + "mv:agent": "cpr agent ../../build-outputs/react/agent -o", "mv:package.json": "cpr package.json ../../build-outputs/react/package.json --overwrite", "mv:readme": "cpr README.md ../../build-outputs/react/README.md --overwrite", "open:report": "npx playwright show-report", diff --git a/output/stencil/README.md b/output/stencil/README.md index 8190267d4b59..3d0ede2b076d 100644 --- a/output/stencil/README.md +++ b/output/stencil/README.md @@ -74,6 +74,16 @@ If you don't have it already, add a VS Code settings folder and file at the root } ``` +## Documentation for AI Agents + +We provide a documentation for every component in the DB UX Design System via `docs` folder. +To consume those documentation for AI Agents the best way is to copy the `docs` folder into your project. + +We provide a CLI tool to do this automatically, which you can run with: + +```shell +npx @db-ux/agent-cli +``` ## Deutsche Bahn brand diff --git a/output/stencil/agent/.gitkeep b/output/stencil/agent/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/output/stencil/package.json b/output/stencil/package.json index 591623a4ef33..32588b766517 100644 --- a/output/stencil/package.json +++ b/output/stencil/package.json @@ -17,12 +17,14 @@ } }, "files": [ - "dist/" + "dist/", + "agent" ], "scripts": { "build": "stencil build", "build:cem": "cem analyze", "mv:dist": "cpr dist ../../build-outputs/wc-core-components/dist -o", + "mv:agent": "cpr agent ../../build-outputs/wc-core-components/agent -o", "mv:package.json": "cpr package.json ../../build-outputs/wc-core-components/package.json -o", "mv:readme": "cpr README.md ../../build-outputs/wc-core-components/README.md -o", "postbuild": "npm-run-all --parallel build:* --parallel mv:*", diff --git a/output/stencil/scripts/packageLinkPhase.js b/output/stencil/scripts/packageLinkPhase.js index db52f2ca05b9..836b60af19a6 100644 --- a/output/stencil/scripts/packageLinkPhase.js +++ b/output/stencil/scripts/packageLinkPhase.js @@ -166,7 +166,7 @@ const resolveAllUnions = (resolvedData, resolvedProps, resolvedUnions) => { }; const resolveManifestTypes = (resolvedUnions, manifestValues) => - manifestValues.map((manifestValue) => { + manifestValues?.map((manifestValue) => { if (!manifestValue.type) { // those are methods return manifestValue; @@ -219,12 +219,12 @@ export const packageLinkPhase = ( resolveAllUnions(resolvedData, resolvedProps, resolvedUnions); customElementsManifest.modules = customElementsManifest.modules - .filter( + ?.filter( // We just need the .tsx files for elements (module) => module.path.endsWith('.tsx') ) .map((module) => { - const declarations = module.declarations.map((declaration) => { + const declarations = module.declarations?.map((declaration) => { const members = resolveManifestTypes( resolvedUnions, declaration.members @@ -234,7 +234,7 @@ export const packageLinkPhase = ( declaration.attributes ); - const slots = declaration.slots.map((slot) => ({ + const slots = declaration.slots?.map((slot) => ({ name: slot.name, description: resolvedUnions[ diff --git a/output/vue/README.md b/output/vue/README.md index a549c8927904..b2a4046599c0 100644 --- a/output/vue/README.md +++ b/output/vue/README.md @@ -95,6 +95,17 @@ Both Inputs in this example do the same: ``` +## Documentation for AI Agents + +We provide a documentation for every component in the DB UX Design System via `docs` folder. +To consume those documentation for AI Agents the best way is to copy the `docs` folder into your project. + +We provide a CLI tool to do this automatically, which you can run with: + +```shell +npx @db-ux/agent-cli +``` + ## Deutsche Bahn brand As we'd like to perfectly support our users and customers on their digital journey, the usage of Deutsche Bahn brand and trademarks are bound of clear guidelines and restrictions even if being used with the code that we're providing with this product; Deutsche Bahn fully reserves all rights regarding the Deutsche Bahn brand, even though that we're providing the code of DB UX Design System products free to use and release it under the Apache 2.0 license. diff --git a/output/vue/agent/.gitkeep b/output/vue/agent/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/output/vue/package.json b/output/vue/package.json index 19c5e431af75..5f385d6a7fa7 100644 --- a/output/vue/package.json +++ b/output/vue/package.json @@ -23,13 +23,15 @@ } }, "files": [ - "dist/" + "dist/", + "agent" ], "scripts": { "build": "npm-run-all build:*", "build:01_vite": "vite build", "build:02_types": "vue-tsc --declaration --emitDeclarationOnly", "mv:dist": "cpr dist ../../build-outputs/vue/dist --overwrite", + "mv:agent": "cpr agent ../../build-outputs/vue/agent -o", "mv:package.json": "cpr package.json ../../build-outputs/vue/package.json --overwrite", "mv:readme": "cpr README.md ../../build-outputs/vue/README.md --overwrite", "postbuild": "npm-run-all --parallel mv:*", diff --git a/package-lock.json b/package-lock.json index e4303c31c161..dcf8e36ba558 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,9 @@ "scripts", "e2e" ], + "dependencies": { + "fast-glob": "^3.3.3" + }, "devDependencies": { "@angular-devkit/build-angular": "19.2.15", "@angular/animations": "19.2.14", @@ -4223,6 +4226,10 @@ "kuler": "^2.0.0" } }, + "node_modules/@db-ux/agent-cli": { + "resolved": "packages/agent-cli", + "link": true + }, "node_modules/@db-ux/core-components": { "resolved": "packages/components", "link": true @@ -5157,6 +5164,20 @@ "integrity": "sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==", "license": "MIT" }, + "node_modules/@gerrit0/mini-shiki": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.8.1.tgz", + "integrity": "sha512-HVZW+8pxoOExr5ZMPK15U79jQAZTO/S6i5byQyyZGjtNj+qaYd82cizTncwFzTQgiLo8uUBym6vh+/1tfJklTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^3.8.1", + "@shikijs/langs": "^3.8.1", + "@shikijs/themes": "^3.8.1", + "@shikijs/types": "^3.8.1", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, "node_modules/@github/catalyst": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@github/catalyst/-/catalyst-1.7.0.tgz", @@ -12180,6 +12201,55 @@ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "dev": true }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.8.1.tgz", + "integrity": "sha512-KGQJZHlNY7c656qPFEQpIoqOuC4LrxjyNndRdzk5WKB/Ie87+NJCF1xo9KkOUxwxylk7rT6nhlZyTGTC4fCe1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.8.1.tgz", + "integrity": "sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.8.1.tgz", + "integrity": "sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1" + } + }, + "node_modules/@shikijs/types": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.8.1.tgz", + "integrity": "sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, "node_modules/@sigstore/bundle": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz", @@ -12462,6 +12532,19 @@ "tslib": "^2.8.0" } }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@testim/chrome-version": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", @@ -15057,6 +15140,16 @@ "resolved": "showcases/angular-ssr-showcase", "link": true }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -15191,6 +15284,32 @@ "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==", "dev": true }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-buffer/node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/archiver": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", @@ -15799,6 +15918,24 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, "node_modules/babel-walk": { "version": "3.0.0-canary-5", "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", @@ -16164,6 +16301,92 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -16501,6 +16724,52 @@ "keyv": "^5.3.4" } }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/cacheable/node_modules/keyv": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.4.tgz", @@ -16580,6 +16849,16 @@ "upper-case": "^1.1.1" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -16626,6 +16905,54 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/cdocparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/cdocparser/-/cdocparser-0.13.0.tgz", + "integrity": "sha512-bMi4t0qjeT0xQ8ECBmWcilMYcUNYsERQoatXveMIbItgqliZDCNyv2xfkBoKrs5H08ApeRMoysJLwgPiHtv7HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2", + "lodash.assign": "^2.4.1", + "strip-indent": "^1.0.0" + } + }, + "node_modules/cdocparser/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cdocparser/node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cdocparser/node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cem-plugin-expanded-types": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cem-plugin-expanded-types/-/cem-plugin-expanded-types-1.4.0.tgz", @@ -16853,6 +17180,12 @@ "node": ">=18" } }, + "node_modules/chroma-js": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-1.4.1.tgz", + "integrity": "sha512-jTwQiT859RTFN/vIf7s+Vl/Z2LcMrvMv3WUFmd/4u76AdlFC0NTNgqEEFPcRiHmAswPsMiQEDZLM8vX8qXpZNQ==", + "dev": true + }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -16921,6 +17254,29 @@ "consola": "^3.2.3" } }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clean-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", @@ -16951,6 +17307,19 @@ "node": ">=6" } }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -17269,6 +17638,16 @@ "node": ">=0.8" } }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -17295,6 +17674,71 @@ "node": ">=0.10.0" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cloneable-readable/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/cloneable-readable/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/cluster-key-slot": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", @@ -17636,6 +18080,93 @@ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==" }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/configstore/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/configstore/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/configstore/node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -17851,6 +18382,15 @@ "webpack": "^5.1.0" } }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/core-js-compat": { "version": "3.43.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", @@ -18485,6 +19025,19 @@ "node": ">=4" } }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -18820,6 +19373,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true, + "license": "MIT" + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -19172,6 +19732,15 @@ "node": ">=6" } }, + "node_modules/docopt": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", + "integrity": "sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -19353,6 +19922,59 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -19477,6 +20099,15 @@ "once": "^1.4.0" } }, + "node_modules/ends-with": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ends-with/-/ends-with-0.2.0.tgz", + "integrity": "sha512-lRppY4dK3VkqBdR242sKcAJeYc8Gf/DhoX9AWvWI2RzccmLnqBQfwm2k4oSDv5MPDjUqawCauXhZkyWxkVhRsg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/enhance-visitors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz", @@ -19767,6 +20398,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha512-731Rf4NqlPvhkT1pIF7r8vZxESJlWocNpXLuyPlVnfEGXlwuJaMvU5WpyyDjpudDC2cgXVX849xljzvQqBg1QQ==", + "dev": true, + "license": "Unlicense" + }, "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", @@ -19866,6 +20504,16 @@ "node": ">=6" } }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -21998,6 +22646,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==", + "dev": true, + "license": "MIT" + }, "node_modules/find-replace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", @@ -22090,6 +22745,50 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/flush-write-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -22323,6 +23022,64 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-mkdirp-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -22742,6 +23499,107 @@ "node": ">=10.13.0" } }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/glob-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -22762,6 +23620,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==", + "dev": true, + "dependencies": { + "find-index": "^0.1.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", @@ -22794,6 +23664,29 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "1.3.7" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true, + "license": "ISC" + }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -23168,6 +24061,62 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/got/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -23297,6 +24246,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", @@ -23515,6 +24474,35 @@ "node": ">=12" } }, + "node_modules/html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-minifier/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true, + "license": "MIT" + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -24091,6 +25079,16 @@ "node": ">=4" } }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -24329,6 +25327,20 @@ "node": ">=8" } }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -24437,6 +25449,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, "node_modules/is-builtin-module": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", @@ -24473,6 +25492,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -24764,6 +25803,16 @@ "dev": true, "license": "MIT" }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -24788,6 +25837,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -24917,6 +25976,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -25023,6 +26095,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -25061,6 +26153,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -25110,6 +26219,16 @@ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "devOptional": true }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-wsl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", @@ -25124,6 +26243,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true, + "license": "MIT" + }, "node_modules/is2": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", @@ -25869,6 +26995,19 @@ "node": ">=0.10" } }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/launch-editor": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", @@ -25916,6 +27055,19 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "license": "MIT", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/less": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz", @@ -26373,6 +27525,142 @@ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, + "node_modules/lodash._basebind": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.4.1.tgz", + "integrity": "sha512-VGHm6DH+1UiuafQdE/DNMqxOcSyhRu0xO9+jPDq7xITRn5YOorGrHVQmavMVXCYmTm80YRTZZCn/jTW7MokwLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._basecreate": "~2.4.1", + "lodash._setbinddata": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "node_modules/lodash._basecreate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.4.1.tgz", + "integrity": "sha512-8JJ3FnMPm54t3BwPLk8q8mPyQKQXm/rt9df+awr4NGtyJrtcCXM3Of1I86S6jVy1b4yAyFBb8wbKPEauuqzRmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._isnative": "~2.4.1", + "lodash.isobject": "~2.4.1", + "lodash.noop": "~2.4.1" + } + }, + "node_modules/lodash._basecreatecallback": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.4.1.tgz", + "integrity": "sha512-SLczhg860fGW7AKlYcuOFstDtJuQhaANlJ4Y/jrOoRxhmVtK41vbJDH3OefVRSRkSCQo4HI82QVkAVsoGa5gSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._setbinddata": "~2.4.1", + "lodash.bind": "~2.4.1", + "lodash.identity": "~2.4.1", + "lodash.support": "~2.4.1" + } + }, + "node_modules/lodash._basecreatewrapper": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.4.1.tgz", + "integrity": "sha512-x2ja1fa/qmzbizuXgVM4QAP9svtMbdxjG8Anl9bCeDAwLOVQ1vLrA0hLb/NkpbGi9evjtkl0aWLTEoOlUdBPQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._basecreate": "~2.4.1", + "lodash._setbinddata": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "node_modules/lodash._createwrapper": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.4.1.tgz", + "integrity": "sha512-5TCfLt1haQpsa7bgLYRKNNE4yqhO4ZxIayN1btQmazMchO6Q8JYFRMqbJ3W+uNmMm4R0Jw7KGkZX5YfDDnywuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._basebind": "~2.4.1", + "lodash._basecreatewrapper": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.isfunction": "~2.4.1" + } + }, + "node_modules/lodash._createwrapper/node_modules/lodash.isfunction": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz", + "integrity": "sha512-6XcAB3izeQxPOQQNAJbbdjXbvWEt2Pn9ezPrjr4CwoLwmqsLVbsiEXD19cmmt4mbzOCOCdHzOQiUivUOJLra7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha512-BOlKGKNHhCHswGOWtmVb5zBygyxN7EmTuzVOSQI6QSoGhG+kvv71gICFS1TBpnqvT1n53txK8CDK3u5D2/GZxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash._setbinddata": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.4.1.tgz", + "integrity": "sha512-Vx0XKzpg2DFbQw4wrp1xSWd2sfl3W/BG6bucSRZmftS1AzbWRemCmBQDxyQTNhlLNec428PXkuuja+VNBZgu2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._isnative": "~2.4.1", + "lodash.noop": "~2.4.1" + } + }, + "node_modules/lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha512-lBrglYxLD/6KAJ8IEa5Lg+YHgNAL7FyKqXg4XOUI+Du/vtniLs1ZqS+yHNKPkK54waAgkdUnDOYaWf+rv4B+AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._objecttypes": "~2.4.1" + } + }, + "node_modules/lodash._slice": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.4.1.tgz", + "integrity": "sha512-+odPJa4PE2UgYnQgJgkLs0UD03QU78R2ivhrFnG9GdtYOZdE6ObxOj7KiUEUlqOOgatFT+ZqSypFjDSduTigKg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.assign": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-2.4.1.tgz", + "integrity": "sha512-AqQ4AJz5buSx9ELXWt5dONwJyVPd4NTADMKhoVYWCugjoVf172/LpvVhwmSJn4g8/Dc0S8hxTe8rt5Dob3X9KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._basecreatecallback": "~2.4.1", + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "node_modules/lodash.bind": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.4.1.tgz", + "integrity": "sha512-hn2VWYZ+N9aYncRad4jORvlGgpFrn+axnPIWRvFxjk6CWcZH5b5alI8EymYsHITI23Z9wrW/+ORq+azrVFpOfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._createwrapper": "~2.4.1", + "lodash._slice": "~2.4.1" + } + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -26413,6 +27701,13 @@ "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", "dev": true }, + "node_modules/lodash.identity": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.4.1.tgz", + "integrity": "sha512-VRYX+8XipeLjorag5bz3YBBRJ+5kj8hVBzfnaHgXPZAVTYowBdY5l0M5ZnOmlAMCOXBFabQtm7f5VqjMKEji0w==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -26444,6 +27739,16 @@ "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", "dev": true }, + "node_modules/lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._objecttypes": "~2.4.1" + } + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -26462,6 +27767,18 @@ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", "dev": true }, + "node_modules/lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, "node_modules/lodash.lowercase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz", @@ -26492,6 +27809,13 @@ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true }, + "node_modules/lodash.noop": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.4.1.tgz", + "integrity": "sha512-uNcV98/blRhInPUGQEnj9ekXXfG+q+rfoNSFZgl/eBfog9yBDW9gfUv2AHX/rAF7zZRlzWhbslGhbGQFZlCkZA==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.pad": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", @@ -26534,6 +27858,16 @@ "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", "dev": true }, + "node_modules/lodash.support": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.4.1.tgz", + "integrity": "sha512-6SwqWwGFHhTXEiqB/yQgu8FYd//tm786d49y7kizHVCJH7zdzs191UQn3ES3tkkDbUddNRfkCRYqJFHtbLnbCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._isnative": "~2.4.1" + } + }, "node_modules/lodash.trim": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz", @@ -26840,6 +28174,13 @@ "yallist": "^3.0.2" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true, + "license": "MIT" + }, "node_modules/luxon": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.1.tgz", @@ -27072,6 +28413,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/marked": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.3.tgz", + "integrity": "sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -27425,6 +28779,13 @@ "url": "https://github.com/sponsors/streamich" } }, + "node_modules/memoize-decorator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/memoize-decorator/-/memoize-decorator-1.0.2.tgz", + "integrity": "sha512-G2vHcq4c+EwnBAOeWCH1mNz99QPCgm4ECjhHOd3SFZm66jVlwhBLdqhCvnHxptaRyZfm8ap3igoeDfrO92+uHQ==", + "dev": true, + "license": "MIT" + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -28320,6 +29681,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -28651,6 +30022,17 @@ "multicast-dns": "cli.js" } }, + "node_modules/multipipe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", + "integrity": "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer2": "^0.1.2", + "object-assign": "^4.1.0" + } + }, "node_modules/mute-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", @@ -30312,6 +31694,29 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/npm-bundled": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", @@ -30506,6 +31911,16 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/nuxt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-4.0.2.tgz", @@ -31353,6 +32768,49 @@ "dev": true, "optional": true }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ordered-read-streams/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -31629,6 +33087,16 @@ "oxc-parser": ">=0.72.0" } }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/p-event": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", @@ -31777,11 +33245,37 @@ "node": ">= 14" } }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/package-manager-detector": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", @@ -32198,6 +33692,13 @@ "no-case": "^2.2.0" } }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "license": "MIT" + }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -33331,7 +34832,6 @@ "version": "4.0.9", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -33499,6 +34999,16 @@ "node": ">= 0.8.0" } }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/prettier": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", @@ -33897,6 +35407,29 @@ "once": "^1.3.1" } }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -33915,6 +35448,19 @@ "node": ">=6" } }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/puppeteer": { "version": "22.15.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.15.0.tgz", @@ -33950,6 +35496,18 @@ "node": ">=18" } }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -34041,6 +35599,39 @@ "node": ">= 0.8" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rc9": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", @@ -34574,6 +36165,32 @@ "node": ">=4" } }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", @@ -34635,6 +36252,16 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/remark-gfm": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", @@ -34712,6 +36339,79 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/remove-bom-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/remove-bom-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/remove-bom-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -34727,6 +36427,16 @@ "node": ">=0.10" } }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/replace-in-file": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-8.3.0.tgz", @@ -34876,6 +36586,19 @@ "node": ">=8" } }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -34924,6 +36647,26 @@ "node": ">=0.10.0" } }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -35304,6 +37047,54 @@ "node": ">=10" } }, + "node_modules/safe-wipe": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/safe-wipe/-/safe-wipe-0.2.5.tgz", + "integrity": "sha512-MwTNf4YrRqCHsB5jUzOVdXoRbW4jkhgTvhlyfiaxox8EP7cOCiD4ydMOQCxDPR9KpvwdBSM2dQHScV1m85k8wQ==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "extend": "^3.0.2", + "q": "1.*", + "rimraf": "2.*" + } + }, + "node_modules/safe-wipe/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-wipe/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -35375,6 +37166,146 @@ "@parcel/watcher": "^2.4.1" } }, + "node_modules/sass-convert": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/sass-convert/-/sass-convert-0.5.2.tgz", + "integrity": "sha512-eV9wXZg7MrHmnKLD6WojC/WX7lhLm+PSSLrOukzRIECa04fGbkmFDO9Ot9/82KjzSe+VEClYe9WDKzCuBz30Dg==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "concat-stream": "^1.4.7", + "dargs": "^4.0.0", + "ends-with": "^0.2.0", + "es6-denodeify": "^0.1.0", + "es6-promise": "^3.0.2", + "memoize-decorator": "^1.0.2", + "object-assign": "^3.0.0", + "semver": "^5.0.1", + "semver-regex": "^1.0.0", + "through2": "^2.0.0", + "which": "^1.0.5" + }, + "engines": { + "node": ">=0.10.0", + "npm": ">=2.1.0" + } + }, + "node_modules/sass-convert/node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/sass-convert/node_modules/dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sass-convert/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass-convert/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sass-convert/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/sass-convert/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sass-convert/node_modules/semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha512-1vZcoRC+LPtHFkLUPyrabsATDSHerxW+hJBN8h04HZOZBuewbXaNROtUVdEPrTdZsWNq6sfsXDhd48GB2xTG4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sass-convert/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/sass-convert/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/sass-convert/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/sass-loader": { "version": "16.0.5", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", @@ -35415,6 +37346,398 @@ } } }, + "node_modules/sassdoc": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/sassdoc/-/sassdoc-2.7.4.tgz", + "integrity": "sha512-/HEjX9pMILkePyC4ZKGhkLqZHJZpsTxFwQIQNsLhV4XHiPKoWHrSmam1pMntM79tcdtBII3JX7ShfyZjHnrkyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.2.1", + "babel-runtime": "^6.26.0", + "chalk": "^2.4.2", + "concat-stream": "^2.0.0", + "docopt": "^0.6.1", + "glob": "^7.1.6", + "glob2base": "0.0.12", + "js-yaml": "^3.14.0", + "lodash.difference": "^4.5.0", + "lodash.uniq": "^4.5.0", + "minimatch": "^3.0.4", + "mkdirp": "^1.0.4", + "multipipe": "1.0.2", + "rimraf": "^3.0.2", + "safe-wipe": "0.2.5", + "sass-convert": "^0.5.0", + "sassdoc-theme-default": "^2.8.3", + "scss-comment-parser": "^0.8.4", + "strip-indent": "^3.0.0", + "through2": "1.1.1", + "update-notifier": "^4.1.0", + "vinyl-fs": "^3.0.3", + "vinyl-source-stream": "1.1.2", + "vinyl-string": "^1.0.2" + }, + "bin": { + "sassdoc": "bin/sassdoc" + } + }, + "node_modules/sassdoc-extras": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/sassdoc-extras/-/sassdoc-extras-2.5.1.tgz", + "integrity": "sha512-/+ilEnk1H1hG9nympL1GIFWhAczzoclyDzgzfphIg46nsT/dWJuzWYHyzIpduc/nTVwKeQfmTz0ZVvy12QMkrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "marked": "^0.6.2" + } + }, + "node_modules/sassdoc-theme-default": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/sassdoc-theme-default/-/sassdoc-theme-default-2.8.6.tgz", + "integrity": "sha512-s12y6pThpPDm33UScHfnfa/RBs9+gkCxl/YNWDTyLl3a6IxzusEdut1uwv4fpmpaOsTpcjGxZw839Moi4d/3Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "chroma-js": "^1.2.2", + "es6-denodeify": "^0.1.0", + "es6-promise": "^4.2.6", + "extend": "^3.0.2", + "fs-extra": "^2.0.0", + "html-minifier": "^3.5.21", + "nunjucks": "^3.1.7", + "sassdoc-extras": "^2.5.0" + } + }, + "node_modules/sassdoc-theme-default/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/sassdoc-theme-default/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sassdoc-theme-default/node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/sassdoc-theme-default/node_modules/fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha512-9ztMtDZtSKC78V8mev+k31qaTabbmuH5jatdvPBMikrFHvw5BqlYnQIn/WGK3WHeRooSTkRvLa2IPlaHjPq5Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0" + } + }, + "node_modules/sassdoc-theme-default/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sassdoc-theme-default/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/sassdoc-theme-default/node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/sassdoc-theme-default/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/sassdoc-theme-default/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/sassdoc/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/sassdoc/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/sassdoc/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sassdoc/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sassdoc/node_modules/chalk/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/sassdoc/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sassdoc/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sassdoc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sassdoc/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sassdoc/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sassdoc/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sassdoc/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/sassdoc/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sassdoc/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sassdoc/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sassdoc/node_modules/through2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", + "integrity": "sha512-zEbpaeSMHxczpTzO1KkMHjBC1enTA68ojeaZGG4toqdASpb9t4xUZaYFBq2/9OHo5nTGFVSYd4c910OR+6wxbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": ">=1.1.13-1 <1.2.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -35480,6 +37803,16 @@ "resolved": "scripts", "link": true }, + "node_modules/scss-comment-parser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/scss-comment-parser/-/scss-comment-parser-0.8.4.tgz", + "integrity": "sha512-ERw4BODvM22n8Ke8hJxuH3fKXLm0Q4chfUNHwDSOAExCths2ZXq8PT32vms4R9Om6dffRSXzzGZS1p38UU4EAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cdocparser": "^0.13.0" + } + }, "node_modules/scule": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", @@ -35542,6 +37875,29 @@ "node": ">=10" } }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/semver-regex": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", @@ -36456,6 +38812,13 @@ "node": ">= 0.4" } }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" + }, "node_modules/stream-slicer": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", @@ -38124,6 +40487,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terser": { "version": "5.39.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", @@ -38267,6 +40643,61 @@ "xtend": ">=4.0.0 <4.1.0-0" } }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2-filter/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2-filter/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2-filter/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "node_modules/through2/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -38418,6 +40849,20 @@ "tmp": "^0.2.0" } }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/to-buffer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", @@ -38463,6 +40908,16 @@ "node": ">=4" } }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -38474,6 +40929,63 @@ "node": ">=8.0" } }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/to-through/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-through/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/to-through/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/to-through/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -39331,6 +41843,79 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.7.tgz", + "integrity": "sha512-lpz0Oxl6aidFkmS90VQDQjk/Qf2iw0IUvFqirdONBdj7jPSN9mGXhy66BcGNDxx5ZMyKKiBVAREvPEzT6Uxipw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@gerrit0/mini-shiki": "^3.7.0", + "lunr": "^2.3.9", + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "yaml": "^2.8.0" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18", + "pnpm": ">= 10" + }, + "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" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.7.1.tgz", + "integrity": "sha512-HN/fHLm2S6MD4HX8txfB4eWvVBzX/mEYy5U5s1KTAdh3E5uX5/lilswqTzZlPTT6fNZInAboAdFGpbAuBKnE4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typedoc": "0.28.x" + } + }, + "node_modules/typedoc-plugin-merge-modules": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-merge-modules/-/typedoc-plugin-merge-modules-7.0.0.tgz", + "integrity": "sha512-DQyfbbPNBElhpdpGrlkS+CrhGD3iooDjp/PHT8O1D/jumLCB+7XAY3jHiqob7d01o25EfwEOJWVwJK+9J6WlBg==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "typedoc": "0.28.x" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -39453,6 +42038,40 @@ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==" }, + "node_modules/uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ultrahtml": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", @@ -39487,6 +42106,16 @@ "through": "^2.3.8" } }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/uncrypto": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", @@ -39704,6 +42333,17 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -40108,6 +42748,104 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", @@ -40144,6 +42882,19 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/urlpattern-polyfill": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", @@ -40266,6 +43017,16 @@ "node": ">= 0.10" } }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -40300,6 +43061,265 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vinyl-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/vinyl-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/vinyl-fs/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/vinyl-source-stream": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", + "integrity": "sha512-X+1Jq+M6ufv/ky480hndPBsNb0ieqTQkvpakxMTxb7oUlyuNaJKL2HddYUrbTec0Lb0J53JlDiCetcgJ3b3Wmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "^2.0.3", + "vinyl": "^0.4.3" + } + }, + "node_modules/vinyl-source-stream/node_modules/clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha512-g62n3Kb9cszeZvmvBUqP/dsEJD/+80pDA8u8KqHnAPrVnQ2Je9rVV6opxkhuWCd1kCn2gOibzDKxCtBvD3q5kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/vinyl-source-stream/node_modules/clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vinyl-source-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vinyl-source-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/vinyl-source-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/vinyl-source-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/vinyl-source-stream/node_modules/vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha512-pmza4M5VA15HOImIQYWhoXGlGNafCm0QK5BpBUXkzzEwrRxKqBsbAhTfkT2zMcJhUX1G1Gkid0xaV8WjOl7DsA==", + "dev": true, + "dependencies": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vinyl-string/-/vinyl-string-1.0.2.tgz", + "integrity": "sha512-mDkPUvCM7K9r0WYZKIWc/dfPH8wkJBbe/3wZUU9EJyw3g6VSACg6FLlcZ/QbP1lTSdtBsVjQoYG1a9K0cfoKeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "vinyl": "^1.1.1" + } + }, + "node_modules/vinyl-string/node_modules/clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vinyl-string/node_modules/replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/vinyl-string/node_modules/vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/vinyl/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/vite": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", @@ -41462,6 +44482,19 @@ "node": ">=8" } }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -42153,6 +45186,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/xhr": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", @@ -42900,6 +45943,510 @@ "typescript": ">=5.0.0" } }, + "packages/agent-cli": { + "name": "@db-ux/agent-cli", + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "commander": "14.0.0", + "glob": "11.0.3" + }, + "bin": { + "agent-cli": "build/index.js" + }, + "devDependencies": { + "cpr": "3.0.1", + "esbuild": "0.25.5", + "tsx": "4.19.4", + "vitest": "3.2.4" + } + }, + "packages/agent-cli/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "packages/agent-cli/node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "packages/agent-cli/node_modules/tsx": { + "version": "4.19.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", + "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "packages/components": { "name": "@db-ux/core-components", "version": "0.0.0", @@ -42917,6 +46464,7 @@ "hygen": "6.2.11", "nodemon": "3.1.10", "sass": "1.85.0", + "sassdoc": "^2.7.4", "tsx": "4.20.3" } }, @@ -43467,6 +47015,9 @@ }, "scripts": { "version": "0.0.0", + "dependencies": { + "postcss-scss": "^4.0.9" + }, "devDependencies": { "@inquirer/prompts": "7.8.0", "dotenv": "17.2.1", @@ -43474,7 +47025,11 @@ "glob": "11.0.3", "inquirer": "12.9.0", "replace-in-file": "8.3.0", + "sassdoc": "2.7.4", "tar": "7.4.3", + "typedoc": "^0.28.5", + "typedoc-plugin-markdown": "^4.6.4", + "typedoc-plugin-merge-modules": "^7.0.0", "vitest": "3.2.4" } }, diff --git a/package.json b/package.json index cf729a7cbdf1..0170677b8bd2 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "codestyle": "prettier . --write", "commit:updated-snapshots": "git diff --name-only --diff-filter=M | xargs git add && git commit --message 'test: updated snapshots'", "dev": "npm run dev --workspace=scripts", + "generate:agent": "npm run agent --workspace=scripts", "generate:component": "npm run generate:component --workspace=@db-ux/core-components", "lint": "npm-run-all --parallel lint:*", "lint:jscpd": "jscpd . --exitCode 1 --config .config/.jscpd.json", @@ -69,6 +70,9 @@ "test:vue-components": "playwright test --config output/vue/playwright.config.ts --ui", "update:dependency:playwright": "node scripts/github/update-playwright.js" }, + "dependencies": { + "fast-glob": "^3.3.3" + }, "devDependencies": { "@angular-devkit/build-angular": "19.2.15", "@angular/animations": "19.2.14", diff --git a/packages/agent-cli/README.md b/packages/agent-cli/README.md new file mode 100644 index 000000000000..076630c1a5f3 --- /dev/null +++ b/packages/agent-cli/README.md @@ -0,0 +1,78 @@ +# @db-ux/agent-cli + +![Apache 2.0 license badge](https://img.shields.io/badge/License-Apache_2.0-blue.svg) +[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com) + +## Usage + +We provide a command-line interface (CLI) tool that copies the `@db-ux` documentation to your repository, making it available to AI agents. + +### Prerequisites + +Before using this CLI tool, make sure you have the appropriate DB UX Design System packages installed in your project. Currently, we've released the documentation for GitHub Copilot with pre-releases within the `next` npmjs tag, that include "-copilot*-*", like e.g. "3.0.2-copilot3-1616965". + +#### Installing DB UX Design System node packages + +For pre-release versions, e.g. for React: + +```shell +npm install @db-ux/react-core-components@3.0.2-copilot3-1616965 +``` + +### Running the CLI Tool + +Use this command in your repository: + +```shell +npx @db-ux/agent-cli +``` + +The DB UX Design System documentation will be added to (or replaced in subsequent runs, e.g. after a DB UX Design System update) in the file `.github/copilot-instructions.md` (if this file does not yet exist in your codebase, it will be created). + +### Advanced Usage + +You can also change the root path where the tool should check for `node_modules`: + +```shell +npx @db-ux/agent-cli packages/frontend +``` + +This is useful in monorepo setups where your DB UX packages might be installed in a specific workspace directory. + +### What the tool does + +1. **Scans your project's node_modules** for installed `@db-ux` packages +2. **Extracts relevant documentation** based on your installed versions +3. **Creates or updates** `.github/copilot-instructions.md` with component documentation +4. **Provides AI agents** with context about available components and their usage patterns + +### Best practices + +We've had the best experience with GitHub Copilot when using the following settings: + +- Agent mode works best for code generation and may also offer the best developer experience. +- Regarding the provided models, GPT-4o seemed to strike the best balance between "used tokens" and performance, although "Claude Sonnet 4" is still better. However, you run out of tokens quite quickly with this model. +- If you're primarily interested in testing this functionality at the moment, we have quite a bit of experience using a prompt that is both equal and non-trivial, but rather complex, such as "Can you create a new page with a dashboard? It should contain selections for KPIs. Each KPI is a card containing information and buttons." + +## Deutsche Bahn brand + +As we'd like to perfectly support our users and customers on their digital journey, the usage of Deutsche Bahn brand and trademarks are bound of clear guidelines and restrictions even if being used with the code that we're providing with this product; Deutsche Bahn fully reserves all rights regarding the Deutsche Bahn brand, even though that we're providing the code of DB UX Design System products free to use and release it under the Apache 2.0 license. +Please have a look at our brand portal at for any further questions and whom to contact on any brand issues. + +For any usage outside of Deutsche Bahn websites and applications you aren't allowed to use any Deutsche Bahn brand and +design assets as well as protected characteristics and trademarks, that for not including the DB Theme. + +## Contributions + +Contributions are very welcome, please refer to the [contribution guide](https://github.com/db-ux-design-system/core-web/blob/main/CONTRIBUTING.md). + +## Code of conduct + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone – have a look at our [Contributor Covenant Code of Conduct](https://github.com/db-ux-design-system/core-web/blob/main/CODE-OF-CONDUCT.md). + +## License + +This project is licensed under [Apache-2.0](LICENSE). diff --git a/packages/agent-cli/esbuild.js b/packages/agent-cli/esbuild.js new file mode 100644 index 000000000000..9cb155857134 --- /dev/null +++ b/packages/agent-cli/esbuild.js @@ -0,0 +1,10 @@ +import { build } from 'esbuild'; + +await build({ + entryPoints: ['./src/cli.ts'], + bundle: true, + outfile: './build/index.js', + platform: 'node', + format: 'esm', + packages: 'external' +}); diff --git a/packages/agent-cli/package.json b/packages/agent-cli/package.json new file mode 100644 index 000000000000..2ca8bdcf61bd --- /dev/null +++ b/packages/agent-cli/package.json @@ -0,0 +1,41 @@ +{ + "name": "@db-ux/agent-cli", + "version": "0.0.0", + "type": "module", + "description": "CLI for DB UX Design System generate AI agent instructions", + "repository": { + "type": "git", + "url": "git+https://github.com/db-ux-design-system/core-web.git" + }, + "license": "Apache-2.0", + "bin": { + "@db-ux/agent-cli": "build/index.js" + }, + "main": "build.js", + "files": [ + "build" + ], + "scripts": { + "build": "node esbuild.js", + "copy-build": "npm-run-all copy-build:*", + "copy-build:build": "cpr build ../../build-outputs/agent-cli/build -o", + "copy-build:package.json": "cpr package.json ../../build-outputs/agent-cli/package.json -o", + "copy-build:readme": "cpr README.md ../../build-outputs/agent-cli/README.md -o", + "test": "vitest run --config vitest.config.ts", + "test:cli": "tsx src/cli.ts --help" + }, + "dependencies": { + "commander": "14.0.0", + "glob": "11.0.3" + }, + "devDependencies": { + "cpr": "3.0.1", + "esbuild": "0.25.5", + "tsx": "4.19.4", + "vitest": "3.2.4" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + } +} diff --git a/packages/agent-cli/src/cli.ts b/packages/agent-cli/src/cli.ts new file mode 100644 index 000000000000..f06510772929 --- /dev/null +++ b/packages/agent-cli/src/cli.ts @@ -0,0 +1,29 @@ +#!/usr/bin/env node + +import { program } from 'commander'; +import { generateCopilot } from './copilot'; + +const action = async (rootPath: string = '.') => { + generateCopilot(rootPath); +}; + +const startProgram = ( + name: string, + description: string, + action: (root: string) => void +) => { + program.name(name).description(description); + program.argument( + '[root]', + 'Root path to generate AI agent instructions. Default: `.`' + ); + program.action(action); + + program.parse(); +}; + +startProgram( + '@db-ux/agent-cli', + 'CLI for DB UX Design System generate AI agent instructions', + action +); diff --git a/packages/agent-cli/src/copilot/index.ts b/packages/agent-cli/src/copilot/index.ts new file mode 100644 index 000000000000..40bcfc3fad7e --- /dev/null +++ b/packages/agent-cli/src/copilot/index.ts @@ -0,0 +1,116 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +function findAllNodeModulesDirectories( + directory: string, + found: string[] = [] +): string[] { + if (!fs.existsSync(directory)) { + return found; + } + + const entries = fs.readdirSync(directory, { withFileTypes: true }); + for (const entry of entries) { + if (entry.isDirectory()) { + if (entry.name === 'node_modules') { + found.push(path.join(directory, entry.name)); + } else if (!entry.name.startsWith('.')) { + findAllNodeModulesDirectories( + path.join(directory, entry.name), + found + ); + } + } + } + + return found; +} + +export const generateCopilot = (rootPath: string) => { + const outputFolder = path.resolve(rootPath, '.github'); + + const nodeModulesDirectories = findAllNodeModulesDirectories(rootPath); + if (nodeModulesDirectories.length === 0) { + console.error('No node_modules folders found.'); + return; + } + + let copilotInstructionsContent = ''; + + for (const nodeModulesPath of nodeModulesDirectories) { + const databaseUxPaths = [ + path.join(nodeModulesPath, '@db-ux'), + path.join(nodeModulesPath, '@db-ux-inner-source') + ]; + + for (const databaseUxPath of databaseUxPaths) { + if (!fs.existsSync(databaseUxPath)) { + continue; + } + + const packages = fs.readdirSync(databaseUxPath, { + withFileTypes: true + }); + for (const package_ of packages) { + if (package_.isDirectory()) { + const instructionsPath = path.join( + databaseUxPath, + package_.name, + 'agent', + '_instructions.md' + ); + if (fs.existsSync(instructionsPath)) { + let content = fs.readFileSync(instructionsPath, 'utf8'); + const relativePath = path.relative( + rootPath, + path.join(databaseUxPath, package_.name) + ); + content = content + .replaceAll( + '__agent-path__', + relativePath.replaceAll('\\', '/') + ) + .replaceAll( + '**agent-path**', + relativePath.replaceAll('\\', '/') + ); + copilotInstructionsContent += `\n# ${path.basename(databaseUxPath)}/${package_.name}\n${content}\n`; + } + } + } + } + } + + if (!fs.existsSync(outputFolder)) { + fs.mkdirSync(outputFolder); + } + + const copilotInstructionsPath = path.join( + outputFolder, + 'copilot-instructions.md' + ); + if (!fs.existsSync(copilotInstructionsPath)) { + fs.writeFileSync(copilotInstructionsPath, ''); + } + + if (copilotInstructionsContent.trim()) { + let copilotFileContent = fs.readFileSync( + copilotInstructionsPath, + 'utf8' + ); + const startMarker = '--- START: DB UX Copilot Instructions ---'; + const endMarker = '--- END: DB UX Copilot Instructions ---'; + const startIndex = copilotFileContent.indexOf(startMarker); + const endIndex = copilotFileContent.indexOf(endMarker); + if (startIndex !== -1 && endIndex !== -1 && endIndex > startIndex) { + copilotFileContent = ( + copilotFileContent.slice(0, startIndex) + + copilotFileContent.slice(endIndex + endMarker.length) + ).trim(); + } + + copilotFileContent += `\n${startMarker}\n${copilotInstructionsContent}\n${endMarker}\n`; + + fs.writeFileSync(copilotInstructionsPath, copilotFileContent); + } +}; diff --git a/packages/agent-cli/test/__snapshots__/index.spec.ts.snap b/packages/agent-cli/test/__snapshots__/index.spec.ts.snap new file mode 100644 index 000000000000..14d71e358cbd --- /dev/null +++ b/packages/agent-cli/test/__snapshots__/index.spec.ts.snap @@ -0,0 +1,17 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`default > check if docs are created 1`] = ` +" +--- START: DB UX Copilot Instructions --- + +# @db-ux/components +- use y for frontend/node_modules/@db-ux/components/test.md + + +# @db-ux/foundations +- use x for frontend/node_modules/@db-ux/foundations/test.md + + +--- END: DB UX Copilot Instructions --- +" +`; diff --git a/packages/agent-cli/test/frontend/node_modules/@db-ux/components/agent/_instructions.md b/packages/agent-cli/test/frontend/node_modules/@db-ux/components/agent/_instructions.md new file mode 100644 index 000000000000..0dda7be9a0a3 --- /dev/null +++ b/packages/agent-cli/test/frontend/node_modules/@db-ux/components/agent/_instructions.md @@ -0,0 +1 @@ +- use y for __agent-path__/test.md diff --git a/packages/agent-cli/test/frontend/node_modules/@db-ux/foundations/agent/_instructions.md b/packages/agent-cli/test/frontend/node_modules/@db-ux/foundations/agent/_instructions.md new file mode 100644 index 000000000000..684db263d50e --- /dev/null +++ b/packages/agent-cli/test/frontend/node_modules/@db-ux/foundations/agent/_instructions.md @@ -0,0 +1 @@ +- use x for __agent-path__/test.md diff --git a/packages/agent-cli/test/index.spec.ts b/packages/agent-cli/test/index.spec.ts new file mode 100644 index 000000000000..f058fb8dcaab --- /dev/null +++ b/packages/agent-cli/test/index.spec.ts @@ -0,0 +1,15 @@ +import fs from 'fs'; +import path from 'path'; +import { describe, expect, test } from 'vitest'; +import { generateCopilot } from '../src/copilot'; + +describe('default', () => { + test('check if docs are created', async () => { + const copilotFile = path.resolve( + 'test/.github/copilot-instructions.md' + ); + generateCopilot('test'); + + expect(fs.readFileSync(copilotFile).toString()).toMatchSnapshot(); + }); +}); diff --git a/packages/agent-cli/tsconfig.json b/packages/agent-cli/tsconfig.json new file mode 100644 index 000000000000..72afd062ae22 --- /dev/null +++ b/packages/agent-cli/tsconfig.json @@ -0,0 +1,14 @@ +{ + "include": ["."], + "compilerOptions": { + "strict": true, + "allowSyntheticDefaultImports": true, + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "target": "ESNext", + "verbatimModuleSyntax": true, + "skipLibCheck": true + } +} diff --git a/packages/agent-cli/vitest.config.ts b/packages/agent-cli/vitest.config.ts new file mode 100644 index 000000000000..08aee3800683 --- /dev/null +++ b/packages/agent-cli/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + include: ['test/**/*.{test,spec}.?(c|m)[jt]s?(x)'] + } +}); diff --git a/packages/components/.sassdocrc.json b/packages/components/.sassdocrc.json new file mode 100644 index 000000000000..921136c6a420 --- /dev/null +++ b/packages/components/.sassdocrc.json @@ -0,0 +1,7 @@ +{ + "source": { + "include": ["src/components"] + }, + "theme": "markdown", + "dest": "output/css" +} diff --git a/packages/components/agent/_instructions.md b/packages/components/agent/_instructions.md new file mode 100644 index 000000000000..969ec29bfccb --- /dev/null +++ b/packages/components/agent/_instructions.md @@ -0,0 +1,9 @@ +## Common AI mistakes + +### `DBButton` or `db-button` + +- available variants are `outline`, `brand`, `filled`, `ghost` +- always use variant `outline` as default +- use variant `brand` as CTA or primary action +- if `noText`/`no-text` property is used add a `DBTooltip` or `db-tooltip` inside the Button +- always add a `type` as property as best practise diff --git a/packages/components/configs/angular/mitosis.config.cjs b/packages/components/configs/angular/mitosis.config.cjs index ac914db8a382..61cdc2483e7c 100644 --- a/packages/components/configs/angular/mitosis.config.cjs +++ b/packages/components/configs/angular/mitosis.config.cjs @@ -3,7 +3,8 @@ const angular = require('./index.cjs'); * @type {import('@builder.io/mitosis').MitosisConfig} */ module.exports = { - files: 'src/**', + files: 'src/**/*.{lite.tsx,ts}', + exclude: ['src/**/*.agent.lite.tsx'], targets: ['angular'], dest: '../../output/tmp', options: { diff --git a/packages/components/configs/mitosis.agent.config.cjs b/packages/components/configs/mitosis.agent.config.cjs new file mode 100644 index 000000000000..b95c92dbb0d6 --- /dev/null +++ b/packages/components/configs/mitosis.agent.config.cjs @@ -0,0 +1,24 @@ +const agentPlugin = require('./plugins/agent/agent-plugin.cjs'); +/** + * @type {import('@builder.io/mitosis').MitosisConfig} + */ +module.exports = { + files: 'src/components/**/agent/*.agent.lite.tsx', + targets: ['angular', 'vue', 'react', 'stencil'], + dest: '../../output', + options: { + angular: { + api: 'signals' + }, + vue: { + api: 'composition' + } + }, + commonOptions: { + typescript: true, + explicitBuildFileExtensions: { + '.md': /.*(agent\.lite\.tsx)$/g + }, + plugins: [agentPlugin] + } +}; diff --git a/packages/components/configs/mitosis.config.cjs b/packages/components/configs/mitosis.config.cjs index 76263b2e2c81..8676a7964ec7 100644 --- a/packages/components/configs/mitosis.config.cjs +++ b/packages/components/configs/mitosis.config.cjs @@ -7,7 +7,8 @@ const stencil = require('./stencil/index.cjs'); * @type {import('@builder.io/mitosis').MitosisConfig} */ module.exports = { - files: 'src/**', + files: 'src/**/*.{lite.tsx,ts}', + exclude: ['src/**/*.agent.lite.tsx'], targets: ['angular', 'vue', 'react', 'stencil'], dest: '../../output', commonOptions: { diff --git a/packages/components/configs/plugins/agent/agent-plugin.cjs b/packages/components/configs/plugins/agent/agent-plugin.cjs new file mode 100644 index 000000000000..789a5e617dfc --- /dev/null +++ b/packages/components/configs/plugins/agent/agent-plugin.cjs @@ -0,0 +1,102 @@ +const targetMapping = [ + { name: 'react', lib: 'react', mdExtension: 'tsx' }, + { name: 'vue', lib: 'v', mdExtension: 'vue' }, + { name: 'angular', lib: 'ngx', mdExtension: 'ts' }, + { name: 'stencil', lib: 'wc', mdExtension: 'html' } +]; + +/** + * @type {import('@builder.io/mitosis').MitosisPlugin} + */ +module.exports = () => ({ + name: 'agent-plugin', + json: { + post: (json) => { + const target = json.pluginData.target; + const tagetMapItem = targetMapping.find( + ({ name }) => name === target + ); + + return { + ...json, + imports: json.imports.map((importLine) => { + if ( + Object.keys(importLine.imports).find((key) => + key.startsWith('DB') + ) + ) { + return { + ...importLine, + path: `@db-ux/${tagetMapItem.lib}-core-components` + }; + } + + return importLine; + }) + }; + } + }, + code: { + post: (code, json) => { + const target = json.pluginData.target; + const tagetMapItem = targetMapping.find( + ({ name }) => name === target + ); + const displayName = json.name.replace(/Docs$/, ''); + + let changedCode = code.trim(); + + if (json?.meta?.useMetadata?.slots) { + let replacement = ''; + for (const [key, value] of Object.entries( + json.meta.useMetadata.slots + )) { + const component = value[target]; + if (target === 'react') { + replacement = replacement + `${key}={${component}}\n `; + } else if (target === 'vue') { + replacement = + replacement + + `\n`; + } else { + replacement = replacement + `${component}\n`; + } + } + + if (target === 'react') { + changedCode = changedCode.replaceAll( + `>__slots__ `, + ` ${replacement}>` + ); + changedCode = changedCode.replaceAll( + '>\n' + ' __slots__', + ` ${replacement}>` + ); + } else { + changedCode = changedCode.replaceAll( + `__slots__`, + `${replacement}` + ); + } + } + + if (target === 'stencil') { + // Remove everything before the first `` and after the last `` + const match = /([\s\S]*?)<\/Fragment>/g.exec( + changedCode + ); + if (match) { + changedCode = match[1].trim(); + } + } + + return [ + `# ${displayName} Examples (${target})`, + '', + '```' + tagetMapItem.mdExtension, + changedCode, + '```' + ].join('\n'); + } + } +}); diff --git a/packages/components/configs/react/mitosis.config.cjs b/packages/components/configs/react/mitosis.config.cjs index d9352dcb3e6f..d58173148080 100644 --- a/packages/components/configs/react/mitosis.config.cjs +++ b/packages/components/configs/react/mitosis.config.cjs @@ -3,7 +3,8 @@ const react = require('./index.cjs'); * @type {import('@builder.io/mitosis').MitosisConfig} */ module.exports = { - files: 'src/**', + files: 'src/**/*.{lite.tsx,ts}', + exclude: ['src/**/*.agent.lite.tsx'], targets: ['react'], dest: '../../output/tmp', options: { diff --git a/packages/components/configs/stencil/mitosis.config.cjs b/packages/components/configs/stencil/mitosis.config.cjs index 983b2de0085d..7e1d3a488269 100644 --- a/packages/components/configs/stencil/mitosis.config.cjs +++ b/packages/components/configs/stencil/mitosis.config.cjs @@ -3,7 +3,8 @@ const stencil = require('./index.cjs'); * @type {import('@builder.io/mitosis').MitosisConfig} */ module.exports = { - files: 'src/**', + files: 'src/**/*.{lite.tsx,ts}', + exclude: ['src/**/*.agent.lite.tsx'], targets: ['stencil'], dest: '../../output/tmp', options: { diff --git a/packages/components/configs/vue/mitosis.config.cjs b/packages/components/configs/vue/mitosis.config.cjs index 6c2ad1f8843d..cec0f0568eff 100644 --- a/packages/components/configs/vue/mitosis.config.cjs +++ b/packages/components/configs/vue/mitosis.config.cjs @@ -3,7 +3,8 @@ const vue = require('./index.cjs'); * @type {import('@builder.io/mitosis').MitosisConfig} */ module.exports = { - files: 'src/**', + files: 'src/**/*.{lite.tsx,ts}', + exclude: ['src/**/*.agent.lite.tsx'], targets: ['vue'], dest: '../../output/tmp', options: { diff --git a/packages/components/package.json b/packages/components/package.json index 9c3d8e562806..eb42d823f61f 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -10,6 +10,7 @@ "author": "General technical components out of DB UX Design System (Version 3)", "license": "Apache-2.0", "files": [ + "agent", "build" ], "scripts": { @@ -27,6 +28,7 @@ "compile:vue": "mitosis build --config configs/vue/mitosis.config.cjs && tsx scripts/exec/vue.ts && cpr ../../output/tmp/vue/src ../../output/vue/src --overwrite", "copy-assets": "cpr ../foundations/assets build/assets -o", "copy-output": "npm-run-all copy:*", + "copy:agent": "cpr agent ../../build-outputs/components/agent -o", "copy:outputs": "cpr build ../../build-outputs/components/build --overwrite", "copy:package.json": "cpr package.json ../../build-outputs/components/package.json --overwrite", "copy:readme": "cpr README.md ../../build-outputs/components/README.md --overwrite", @@ -36,6 +38,7 @@ "dev:scss": "npm run build-style:01_sass -- --watch --source-map", "dev:stencil": "nodemon --watch src --watch scripts --ext tsx,ts --exec \"npm run compile:stencil\"", "dev:vue": "nodemon --watch src --watch scripts --ext tsx,ts --exec \"npm run compile:vue\"", + "generate:agent": "mitosis build -c configs/mitosis.agent.config.cjs", "generate:component": "hygen mitosis new", "generate:docs": "hygen update-docs new", "prepack": "npm run copy-assets", @@ -54,6 +57,7 @@ "hygen": "6.2.11", "nodemon": "3.1.10", "sass": "1.85.0", + "sassdoc": "^2.7.4", "tsx": "4.20.3" }, "publishConfig": { diff --git a/packages/components/plugins/debug/index.js b/packages/components/plugins/debug/index.js deleted file mode 100644 index 7432e016267a..000000000000 --- a/packages/components/plugins/debug/index.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = () => ({ - json: { - pre(json) { - console.log('---- PRE: JSON ----'); - console.log(json); - return json; - }, - post(json) { - console.log('---- POST: JSON ----'); - console.log(json); - return json; - } - }, - code: { - pre(code) { - console.log('---- PRE: CODE ----'); - console.log(code); - return code; - }, - post(code) { - console.log('---- POST: CODE ----'); - console.log(code); - return code; - } - } -}); diff --git a/packages/components/src/components/accordion-item/agent/accordion-item.agent.lite.tsx b/packages/components/src/components/accordion-item/agent/accordion-item.agent.lite.tsx new file mode 100644 index 000000000000..468114aecd8c --- /dev/null +++ b/packages/components/src/components/accordion-item/agent/accordion-item.agent.lite.tsx @@ -0,0 +1,37 @@ +import { DBAccordionItem } from '../index'; + +export default function AccordionItem() { + return ( + <> +

DBAccordionItem Documentation Examples

+ +

1. Default Accordion Item

+ Default Accordion Item + +

2. Initial State

+ Initially Open + + Initially Closed + + +

3. Disabled State

+ + Disabled Accordion Item + + +

4. Headline Variants

+ Custom Headline}> + With Custom Headline + + + With Plain Headline + + +

5. Toggle Event

+ console.log('Toggled:', open)}> + With Toggle Event + + + ); +} diff --git a/packages/components/src/components/accordion/agent/accordion.agent.lite.tsx b/packages/components/src/components/accordion/agent/accordion.agent.lite.tsx new file mode 100644 index 000000000000..ca56ceefb586 --- /dev/null +++ b/packages/components/src/components/accordion/agent/accordion.agent.lite.tsx @@ -0,0 +1,44 @@ +import { DBAccordion } from '../index'; + +export default function Accordion() { + function getItems() { + return [ + { + text: 'Item 1 Content', + headlinePlain: 'Item 1', + disabled: false + }, + { + text: 'Item 2 Content', + headlinePlain: 'Item 2', + disabled: true + } + ]; + } + + return ( + <> +

DBAccordion Documentation Examples

+ +

1. Default Accordion

+ Default Accordion + +

2. Behavior Variants

+ Multiple Behavior + Single Behavior + +

3. Initial Open Index

+ Initial Open Index + +

4. Items

+ Accordion with Items + +

5. Name Attribute

+ With Name + +

6. Variant Types

+ Divider Variant + Card Variant + + ); +} diff --git a/packages/components/src/components/badge/agent/badge.agent.lite.tsx b/packages/components/src/components/badge/agent/badge.agent.lite.tsx new file mode 100644 index 000000000000..4744acd6c470 --- /dev/null +++ b/packages/components/src/components/badge/agent/badge.agent.lite.tsx @@ -0,0 +1,44 @@ +import { DBBadge } from '../index'; + +export default function Badge() { + return ( + <> +

DBBadge Documentation Examples

+ +

1. Default Badge

+ Default Badge + +

2. Semantic Variants

+ Adaptive + Neutral + Critical + Informational + Warning + Successful + +

3. Sizes

+ Small + Medium + +

4. Emphasis Variants

+ Weak Emphasis + Strong Emphasis + +

5. Placement Variants

+ Inline + Corner Top Left + Corner Top Right + Corner Center Left + + Corner Center Right + + Corner Bottom Left + + Corner Bottom Right + + +

6. Custom Label

+ With Custom Label + + ); +} diff --git a/packages/components/src/components/brand/agent/brand.agent.lite.tsx b/packages/components/src/components/brand/agent/brand.agent.lite.tsx new file mode 100644 index 000000000000..cd40d275b452 --- /dev/null +++ b/packages/components/src/components/brand/agent/brand.agent.lite.tsx @@ -0,0 +1,18 @@ +import { DBBrand } from '../index'; + +export default function Brand() { + return ( + <> +

DBBrand Documentation Examples

+ +

1. Default Brand

+ Default Brand + +

2. Icon Visibility

+ Icon Hidden + +

3. Custom Text

+ With Custom Text + + ); +} diff --git a/packages/components/src/components/button/agent/button.agent.lite.tsx b/packages/components/src/components/button/agent/button.agent.lite.tsx new file mode 100644 index 000000000000..1cbe3a033ce0 --- /dev/null +++ b/packages/components/src/components/button/agent/button.agent.lite.tsx @@ -0,0 +1,63 @@ +import { DBButton } from '../index'; + +export default function Button() { + return ( + <> +

DBButton Documentation Examples

+ +

1. Default Button

+ Button + +

2. Variants

+ Filled + Outlined + Ghost + Brand + +

3. Sizes

+ Small + Medium + +

4. Icon Only

+ + +

5. Disabled

+ Disabled + +

6. Button Types

+ Type=button + Type=submit + Type=reset + +

7. Form Association

+
+ +
+ + Submit Form + + +

8. Name & Value

+ + Name/Value + + +

9. Width

+ Full width + Auto width + +

10. Icon Visibility

+ + Icon Hidden + + +

11. Custom Class

+ Custom Class + +

12. Click Event

+ alert('Button clicked!')}> + Click Me + + + ); +} diff --git a/packages/components/src/components/card/agent/card.agent.lite.tsx b/packages/components/src/components/card/agent/card.agent.lite.tsx new file mode 100644 index 000000000000..b949c96f2afa --- /dev/null +++ b/packages/components/src/components/card/agent/card.agent.lite.tsx @@ -0,0 +1,30 @@ +import { DBCard } from '../index'; + +export default function Card() { + return ( + <> +

DBCard Documentation Examples

+ +

1. Default Card

+ Default Card + +

2. Behaviors

+ Static + Interactive + +

3. Elevation Levels

+ Elevation Level 1 + Elevation Level 2 + Elevation Level 3 + +

4. Custom Class

+ Custom Class + +

5. Spacing

+ Medium Spacing + Small Spacing + Large Spacing + No Spacing + + ); +} diff --git a/packages/components/src/components/checkbox/agent/checkbox.agent.lite.tsx b/packages/components/src/components/checkbox/agent/checkbox.agent.lite.tsx new file mode 100644 index 000000000000..9dcfc392bf36 --- /dev/null +++ b/packages/components/src/components/checkbox/agent/checkbox.agent.lite.tsx @@ -0,0 +1,44 @@ +import { DBCheckbox } from '../index'; + +export default function Checkbox() { + return ( + <> +

DBCheckbox Documentation Examples

+ +

1. Default Checkbox

+ + +

2. Indeterminate State

+ + +

3. Sizes

+ + + +

4. Validation States

+ + + + +

5. Disabled State

+ + +

6. Message Property Example

+ + +

7. Change Event Example

+ + console.log('Change event:', event.target.checked) + } + /> + + ); +} diff --git a/packages/components/src/components/custom-select/agent/custom-select.agent.lite.tsx b/packages/components/src/components/custom-select/agent/custom-select.agent.lite.tsx new file mode 100644 index 000000000000..54010c113c8a --- /dev/null +++ b/packages/components/src/components/custom-select/agent/custom-select.agent.lite.tsx @@ -0,0 +1,72 @@ +import { DBCustomSelect } from '../index'; + +export default function CustomSelect() { + function getOptions() { + return [ + { value: '1', label: 'Option 1', selected: false }, + { value: '2', label: 'Option 2', disabled: true }, + { value: '3', label: 'Option 3' } + ]; + } + + return ( + <> +

DBCustomSelect Documentation Examples

+ +

1. Default Custom Select

+ + +

3. Multiple Select

+ + +

4. Disabled State

+ + +

5. Validation States

+ + + + +

6. Change Event Example

+ + console.log('Change event:', event.target.value) + } + options={getOptions()} + /> + +

7. Placeholder Example

+ + + ); +} diff --git a/packages/components/src/components/divider/agent/divider.agent.lite.tsx b/packages/components/src/components/divider/agent/divider.agent.lite.tsx new file mode 100644 index 000000000000..614586821793 --- /dev/null +++ b/packages/components/src/components/divider/agent/divider.agent.lite.tsx @@ -0,0 +1,28 @@ +import { DBDivider } from '../index'; + +export default function Divider() { + return ( + <> +

DBDivider Documentation Examples

+ +

1. Default Divider

+ + +

2. Margin Variants

+ + + +

3. Orientation Variants

+ + + +

4. Emphasis Variants

+ + + +

5. Width Variants

+ + + + ); +} diff --git a/packages/components/src/components/drawer/agent/drawer.agent.lite.tsx b/packages/components/src/components/drawer/agent/drawer.agent.lite.tsx new file mode 100644 index 000000000000..19407b34f958 --- /dev/null +++ b/packages/components/src/components/drawer/agent/drawer.agent.lite.tsx @@ -0,0 +1,65 @@ +import { useState } from 'react'; +import { DBButton } from '../../button'; +import { DBDrawer } from '../index'; + +export default function Drawer() { + const [open, setOpen] = useState(false); + + return ( + <> +

DBDrawer Documentation Examples

+ +

1. Default Drawer

+
+ { + setOpen(true); + }}> + Open Me + + { + setOpen(false); + }} + drawerHeader={
Optional drawer header
}> + My Drawer content +
+
+ +

2. Drawer Variants

+
+ { + setOpen(true); + }}> + Open Modal Drawer + + { + setOpen(false); + }} + variant="modal"> + Modal Drawer content + +
+
+ { + setOpen(true); + }}> + Open Inside Drawer + + { + setOpen(false); + }} + variant="inside"> + Inside Drawer content + +
+ + ); +} diff --git a/packages/components/src/components/drawer/drawer.scss b/packages/components/src/components/drawer/drawer.scss index ab174ff5d572..58f806873de4 100644 --- a/packages/components/src/components/drawer/drawer.scss +++ b/packages/components/src/components/drawer/drawer.scss @@ -26,6 +26,10 @@ %full-horizontal { &:not([data-width="full"]) { + /// Sets the maximum height of the drawer + /// @propertyname max-block-size + /// @cssprop --db-drawer-max-height + /// @default calc(100% - #{variables.$db-spacing-fixed-xl}) max-block-size: var( --db-drawer-max-height, calc(100% - #{variables.$db-spacing-fixed-xl}) @@ -87,6 +91,10 @@ $spacings: ( .db-drawer-header { // We need this variable to overwrite it inside the header + /// Controls the bottom padding inside the drawer header + /// @propertyname padding-block-end + /// @cssprop --db-drawer-header-padding-block-end + /// @default #{map.get($spacing, "block")} /* stylelint-disable-next-line db-ux/use-spacings */ padding-block-end: var( --db-drawer-header-padding-block-end, @@ -97,6 +105,10 @@ $spacings: ( .db-drawer-content { // We need this variable to overwrite it inside the header + /// Controls left/right padding inside the drawer content area + /// @propertyname padding-inline + /// @cssprop --db-drawer-content-padding-inline + /// @default #{map.get($spacing, "inline")} /* stylelint-disable-next-line db-ux/use-spacings */ padding-inline: var( --db-drawer-content-padding-inline, @@ -134,6 +146,19 @@ $spacings: ( box-shadow: variables.$db-elevation-md; &:not([data-width="full"]) { + /// Sets the maximum width of the drawer + /// and some default values for the drawer + /// @propertyname max-inline-size + /// @cssprop --db-drawer-max-width + /// @default calc(100% - #{variables.$db-spacing-fixed-xl}) + /// + /// @example css - Wide drawer + /// .db-drawer-wide { + /// --db-drawer-max-width: 800px; + /// } + ///
+ /// + ///
max-inline-size: var( --db-drawer-max-width, calc(100% - #{variables.$db-spacing-fixed-xl}) diff --git a/packages/components/src/components/header/agent/header.agent.lite.tsx b/packages/components/src/components/header/agent/header.agent.lite.tsx new file mode 100644 index 000000000000..68d1ba5d560f --- /dev/null +++ b/packages/components/src/components/header/agent/header.agent.lite.tsx @@ -0,0 +1,68 @@ +import { useMetadata } from '@builder.io/mitosis'; +import { useState } from 'react'; +import { DBNavigation } from '../../navigation'; +import { DBNavigationItem } from '../../navigation-item'; +import { DBHeader } from '../index'; + +useMetadata({ + slots: { + brand: { + angular: 'My Awesome App', + vue: 'My Awesome App', + stencil: 'My Awesome App', + react: 'My Awesome App' + }, + metaNavigation: { + angular: + 'ImprintHelp', + vue: 'ImprintHelp', + stencil: + '
ImprintHelp
', + react: '<>ImprintHelp' + }, + primaryAction: { + angular: + 'Search', + vue: 'Search', + stencil: + 'Search', + react: 'Search' + }, + secondaryAction: { + angular: + 'ProfileNotificationHelp', + vue: 'ProfileNotificationHelp', + stencil: + '
ProfileNotificationHelp
', + react: '<>ProfileNotificationHelp' + } + } +}); + +export default function Header() { + const [drawerOpen, setDrawerOpen] = useState(false); + + return ( + <> +

DBHeader Documentation Examples

+ +

1. Default Header

+ setDrawerOpen(open)}> + __slots__ + + + Navi-Item 1 + + + Navi-Item 2 + + + Navi-Item 3 + + + + + ); +} diff --git a/packages/components/src/components/icon/agent/icon.agent.lite.tsx b/packages/components/src/components/icon/agent/icon.agent.lite.tsx new file mode 100644 index 000000000000..15a7054b61b8 --- /dev/null +++ b/packages/components/src/components/icon/agent/icon.agent.lite.tsx @@ -0,0 +1,27 @@ +import { DBIcon } from '../index'; + +export default function Icon() { + return ( + <> +

DBIcon Documentation Examples

+ +

1. Default Icon

+ Default Icon + +

2. Icon Variants

+ User Icon + Settings Icon + +

3. Icon Weights

+ 16px Icon + 24px Icon + 32px Icon + +

4. Custom Class

+ Custom Class Icon + +

5. Text Content

+ Icon with Text + + ); +} diff --git a/packages/components/src/components/infotext/agent/infotext.agent.lite.tsx b/packages/components/src/components/infotext/agent/infotext.agent.lite.tsx new file mode 100644 index 000000000000..b310b0b01d1d --- /dev/null +++ b/packages/components/src/components/infotext/agent/infotext.agent.lite.tsx @@ -0,0 +1,32 @@ +import { DBInfotext } from '../index'; + +export default function Infotext() { + return ( + <> +

DBInfotext Documentation Examples

+ +

1. Default Infotext

+ Default Infotext + +

2. Semantic Variants

+ Adaptive + Neutral + Critical + Informational + Warning + Successful + +

3. Sizes

+ Small + Medium + +

4. Icon Visibility

+ + Icon Hidden + + +

5. Custom Class

+ Custom Class + + ); +} diff --git a/packages/components/src/components/input/agent/input.agent.lite.tsx b/packages/components/src/components/input/agent/input.agent.lite.tsx new file mode 100644 index 000000000000..f87c00148024 --- /dev/null +++ b/packages/components/src/components/input/agent/input.agent.lite.tsx @@ -0,0 +1,46 @@ +import { DBInput } from '../index'; + +export default function Input() { + return ( + <> +

DBInput Documentation Examples

+

1. Default Input

+ +

2. Input Types

+ + + + +

3. Sizes

+ + +

4. Icon Support

+ + + +

5. Validation States

+ + + +

6. Disabled State

+ +

7. Custom Class

+ +

8. Placeholder Examples

+ + +

9. Input Event Example

+ + console.log('Input event:', event.target.value) + } + /> +

10. Message Property Example

+ + + ); +} diff --git a/packages/components/src/components/link/agent/link.agent.lite.tsx b/packages/components/src/components/link/agent/link.agent.lite.tsx new file mode 100644 index 000000000000..34a0c3d4569f --- /dev/null +++ b/packages/components/src/components/link/agent/link.agent.lite.tsx @@ -0,0 +1,62 @@ +import { DBLink } from '../index'; + +export default function Link() { + return ( + <> +

DBLink Documentation Examples

+ +

1. Default Link

+ Default Link + +

2. Disabled Link

+ + Disabled Link + + +

3. Target Variants

+ + Self Target + + + Blank Target + + +

4. Custom Class

+ + Custom Class + + +

5. Rel Attribute

+ + No Referrer + + +

6. Link Variants

+ + Adaptive Variant + + + Brand Variant + + + Inline Variant + + +

7. Link Sizes

+ + Medium Size + + + Small Size + + +

8. Link Content

+ + External Content + + + Internal Content + + + ); +} diff --git a/packages/components/src/components/navigation-item/agent/navigation-item.agent.lite.tsx b/packages/components/src/components/navigation-item/agent/navigation-item.agent.lite.tsx new file mode 100644 index 000000000000..0b645ef0b306 --- /dev/null +++ b/packages/components/src/components/navigation-item/agent/navigation-item.agent.lite.tsx @@ -0,0 +1,35 @@ +import { DBNavigationItem } from '../index'; + +export default function NavigationItem() { + return ( + <> +

DBNavigationItem Documentation Examples

+ +

1. Default Navigation Item

+ Default Navigation Item + +

2. Active State

+ Active Navigation Item + +

3. Disabled State

+ + Disabled Navigation Item + + +

4. Sub-Navigation

+ Sub Navigation Content}> + Navigation Item with Sub-Navigation + + +

5. Icon Support

+ + Navigation Item with Icon + + +

6. Custom Class

+ + Navigation Item with Custom Class + + + ); +} diff --git a/packages/components/src/components/navigation/agent/navigation.agent.lite.tsx b/packages/components/src/components/navigation/agent/navigation.agent.lite.tsx new file mode 100644 index 000000000000..b37f0ac15bcf --- /dev/null +++ b/packages/components/src/components/navigation/agent/navigation.agent.lite.tsx @@ -0,0 +1,23 @@ +import { DBNavigationItem } from '../../navigation-item/index'; +import { DBNavigation } from '../index'; + +export default function Navigation() { + return ( + <> +

DBNavigation Documentation Examples

+ +

1. Default Navigation

+ + + Navi-Item 1 + + + Navi-Item 2 + + + Navi-Item 3 + + + + ); +} diff --git a/packages/components/src/components/notification/agent/notification.agent.lite.tsx b/packages/components/src/components/notification/agent/notification.agent.lite.tsx new file mode 100644 index 000000000000..e1118b1fef64 --- /dev/null +++ b/packages/components/src/components/notification/agent/notification.agent.lite.tsx @@ -0,0 +1,48 @@ +import { DBNotification } from '../index'; + +export default function Notification() { + return ( + <> +

DBNotification Documentation Examples

+ +

1. Default Notification

+ Default Notification + +

2. Semantic Variants

+ Adaptive + Neutral + Critical + + Informational + + Warning + Successful + +

3. Variants

+ Docked + Standalone + Overlay + +

4. Closeable

+ Closeable Notification + +

5. Headline

+ + Notification with Headline + + +

6. Timestamp

+ + Notification with Timestamp + + +

7. Icon Support

+ Notification with Icon + +

8. Custom Class

+ + Custom Class + + + ); +} diff --git a/packages/components/src/components/page/agent/page.agent.lite.tsx b/packages/components/src/components/page/agent/page.agent.lite.tsx new file mode 100644 index 000000000000..d3587e2ea8ed --- /dev/null +++ b/packages/components/src/components/page/agent/page.agent.lite.tsx @@ -0,0 +1,39 @@ +import { useMetadata } from '@builder.io/mitosis'; +import { DBPage } from '../index'; + +useMetadata({ + slots: { + header: { + angular: 'Header Content', + vue: 'Header Content', + stencil: 'Header Content', + react: 'Header Content' + } + } +}); + +export default function Page() { + return ( + <> +

DBPage Documentation Examples

+ +

1. Default Page

+ __slots__ Main Page + +

2. Document Overflow Variants

+ + __slots__ Main Page with Hidden Overflow + + + __slots__ Main Page with Auto Overflow + + +

3. Fade-In Effect

+ __slots__ Main Page with Fade-In + +

4. Variant Examples

+ __slots__ Page with Auto Variant + __slots__ Page with Fixed Variant + + ); +} diff --git a/packages/components/src/components/popover/agent/popover.agent.lite.tsx b/packages/components/src/components/popover/agent/popover.agent.lite.tsx new file mode 100644 index 000000000000..c1a520e01f77 --- /dev/null +++ b/packages/components/src/components/popover/agent/popover.agent.lite.tsx @@ -0,0 +1,57 @@ +import { DBButton } from '../../button/index'; +import { DBPopover } from '../index'; + +export default function Popover() { + return ( + <> +

DBPopover Documentation Examples

+ +

1. Default Popover

+ Hover on me to open Popover
}> + Use any HTML code here like e.g. a button: + + + +

2. Placement Variants

+ Top Placement} + placement="top"> + Popover with top placement + + Bottom Placement} + placement="bottom"> + Popover with bottom placement + + +

3. Delay Variants

+ Fast Delay} delay="fast"> + Popover with fast delay + + Slow Delay} delay="slow"> + Popover with slow delay + + +

4. Animation

+ With Animation} + animation={true}> + Popover with animation + + No Animation} + animation={false}> + Popover without animation + + +

5. Width Variants

+ Auto Width} width="auto"> + Popover with auto width + + Fixed Width} width="fixed"> + Popover with fixed width + + + ); +} diff --git a/packages/components/src/components/radio/agent/radio.agent.lite.tsx b/packages/components/src/components/radio/agent/radio.agent.lite.tsx new file mode 100644 index 000000000000..88000a240c2e --- /dev/null +++ b/packages/components/src/components/radio/agent/radio.agent.lite.tsx @@ -0,0 +1,32 @@ +import { DBRadio } from '../index'; + +export default function Radio() { + return ( + <> +

DBRadio Documentation Examples

+ +

1. Default Radio

+ + +

2. Sizes

+ + + +

3. Validation States

+ + + + +

4. Disabled State

+ + +

5. Change Event Example

+ + console.log('Change event:', event.target.checked) + } + /> + + ); +} diff --git a/packages/components/src/components/section/agent/section.agent.lite.tsx b/packages/components/src/components/section/agent/section.agent.lite.tsx new file mode 100644 index 000000000000..ef21a8812d8d --- /dev/null +++ b/packages/components/src/components/section/agent/section.agent.lite.tsx @@ -0,0 +1,27 @@ +import { DBSection } from '../index'; + +export default function Section() { + return ( + <> +

DBSection Documentation Examples

+ +

1. Default Section

+ Default Section + +

2. Spacing Variants

+ Medium Spacing + Small Spacing + Large Spacing + No Spacing + +

3. Container Width

+ Full Width + Medium Width + Large Width + Small Width + +

4. Custom Class

+ Custom Class + + ); +} diff --git a/packages/components/src/components/select/agent/select.agent.lite.tsx b/packages/components/src/components/select/agent/select.agent.lite.tsx new file mode 100644 index 000000000000..e1433af6cc14 --- /dev/null +++ b/packages/components/src/components/select/agent/select.agent.lite.tsx @@ -0,0 +1,76 @@ +import { DBSelect } from '../index'; + +export default function Select() { + function getOptions() { + return [ + { id: '1', label: 'Option 1', selected: false }, + { id: '2', label: 'Option 2', selected: true }, + { id: '3', label: 'Option 3', disabled: true } + ]; + } + + return ( + <> +

DBSelect Documentation Examples

+ +

1. Default Select

+ + + + + +

2. Options Array

+ + +

3. Multiple Select

+ + + + + +

4. Disabled State

+ + + + + +

5. Validation States

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

6. Change Event Example

+ + console.log('Change event:', event.target.value) + }> + + + + + ); +} diff --git a/packages/components/src/components/stack/agent/stack.agent.lite.tsx b/packages/components/src/components/stack/agent/stack.agent.lite.tsx new file mode 100644 index 000000000000..43ebfc9939ca --- /dev/null +++ b/packages/components/src/components/stack/agent/stack.agent.lite.tsx @@ -0,0 +1,45 @@ +import { DBStack } from '../index'; + +export default function Stack() { + return ( + <> +

DBStack Documentation Examples

+ +

1. Default Stack

+ Default Stack + +

2. Variants

+ Simple Variant + Divider Variant + +

3. Directions

+ Row Direction + Column Direction + +

4. Alignment

+ Stretch Alignment + Start Alignment + End Alignment + Center Alignment + +

5. Justify Content

+ Space Between + Start Justify + End Justify + Center Justify + +

6. Gap Spacing

+ Medium Gap + Small Gap + Large Gap + No Gap + +

7. Wrap

+ Wrap Enabled + Wrap Disabled + +

8. Custom Class

+ Custom Class + + ); +} diff --git a/packages/components/src/components/switch/agent/switch.agent.lite.tsx b/packages/components/src/components/switch/agent/switch.agent.lite.tsx new file mode 100644 index 000000000000..3d21ca0ffd7c --- /dev/null +++ b/packages/components/src/components/switch/agent/switch.agent.lite.tsx @@ -0,0 +1,41 @@ +import { DBSwitch } from '../index'; + +export default function Switch() { + return ( + <> +

DBSwitch Documentation Examples

+ +

1. Default Switch

+ + +

2. Visual Aid

+ + + +

3. Sizes

+ + + +

4. Validation States

+ + + + +

5. Disabled State

+ + +

6. Icon Support

+ + + + +

7. Change Event Example

+ + console.log('Change event:', event.target.checked) + } + /> + + ); +} diff --git a/packages/components/src/components/tab-item/agent/tab-item.agent.lite.tsx b/packages/components/src/components/tab-item/agent/tab-item.agent.lite.tsx new file mode 100644 index 000000000000..17b1fd12ea1d --- /dev/null +++ b/packages/components/src/components/tab-item/agent/tab-item.agent.lite.tsx @@ -0,0 +1,33 @@ +import { DBTabItem } from '../index'; + +export default function TabItem() { + return ( + <> +

DBTabItem Documentation Examples

+ +

1. Default Tab Item

+ Default Tab Item + +

2. Active State

+ Active Tab Item + +

3. Disabled State

+ Disabled Tab Item + +

4. Icon Variants

+ Tab Item with Icon + + Tab Item with Leading Icon + + + Tab Item with Trailing Icon + + +

5. Label Property

+ Tab Item with Label + +

6. No Text

+ + + ); +} diff --git a/packages/components/src/components/tabs/agent/tabs.agent.lite.tsx b/packages/components/src/components/tabs/agent/tabs.agent.lite.tsx new file mode 100644 index 000000000000..187a5b7ba7c5 --- /dev/null +++ b/packages/components/src/components/tabs/agent/tabs.agent.lite.tsx @@ -0,0 +1,70 @@ +import { DBTabItem } from '../../tab-item/index'; +import { DBTabList } from '../../tab-list/index'; +import { DBTabPanel } from '../../tab-panel/index'; +import { DBTabs } from '../index'; + +export default function Tabs() { + return ( + <> +

DBTabs Documentation Examples

+ +

1. Default Tabs

+ + + Tab 1 + Tab 2 + Tab 3 + + Tab Panel 1 + Tab Panel 2 + Tab Panel 3 + + +

2. Behavior Variants

+ + + Tab 1 + Tab 2 + Tab 3 + + Tab Panel 1 + Tab Panel 2 + Tab Panel 3 + + + + Tab 1 + Tab 2 + Tab 3 + + Tab Panel 1 + Tab Panel 2 + Tab Panel 3 + + +

3. Initial Selected Index

+ + + Tab 1 + Tab 2 + Tab 3 + + Tab Panel 1 + Tab Panel 2 + Tab Panel 3 + + +

4. Initial Selected Mode

+ + + Tab 1 + Tab 2 + Tab 3 + + Tab Panel 1 + Tab Panel 2 + Tab Panel 3 + + + ); +} diff --git a/packages/components/src/components/tag/agent/tag.agent.lite.tsx b/packages/components/src/components/tag/agent/tag.agent.lite.tsx new file mode 100644 index 000000000000..29b44538dcf0 --- /dev/null +++ b/packages/components/src/components/tag/agent/tag.agent.lite.tsx @@ -0,0 +1,51 @@ +import { DBButton } from '../../button'; +import { DBCheckbox } from '../../checkbox'; +import { DBLink } from '../../link'; +import { DBRadio } from '../../radio'; +import { DBTag } from '../index'; + +export default function Tag() { + return ( + <> +

DBTag Documentation Examples

+ +

1. Default Tags

+ + Tag as Button + + + Tag as Link + + + Tag as Checkbox + + + Tag as Radio + + Static Tag + +

2. Overflow Example

+ + Static Tag with overflow + + +

3. Removable Tag

+ console.log('Tag removed')}> + Removable Tag + + +

4. Semantic Variants

+ Adaptive Tag + Neutral Tag + Critical Tag + Informational Tag + Warning Tag + Successful Tag + +

5. Icon Support

+ Tag with Icon + + ); +} diff --git a/packages/components/src/components/textarea/agent/textarea.agent.lite.tsx b/packages/components/src/components/textarea/agent/textarea.agent.lite.tsx new file mode 100644 index 000000000000..9626b41e90c4 --- /dev/null +++ b/packages/components/src/components/textarea/agent/textarea.agent.lite.tsx @@ -0,0 +1,49 @@ +import { DBTextarea } from '../index'; + +export default function Textarea() { + return ( + <> +

DBTextarea Documentation Examples

+ +

1. Default Textarea

+ + +

2. Resizable Variants

+ + + + + +

3. Rows and Columns

+ + +

4. Wrap Variants

+ + + + +

5. Disabled State

+ + +

6. Placeholder Examples

+ + +

7. Message Property Example

+ + +

8. Input Event Example

+ + console.log('Input event:', event.target.value) + } + /> + + ); +} diff --git a/packages/components/src/components/tooltip/agent/tooltip.agent.lite.tsx b/packages/components/src/components/tooltip/agent/tooltip.agent.lite.tsx new file mode 100644 index 000000000000..5ac8d45ba39f --- /dev/null +++ b/packages/components/src/components/tooltip/agent/tooltip.agent.lite.tsx @@ -0,0 +1,48 @@ +import { DBButton } from '../../button'; +import { DBTooltip } from '../index'; + +export default function Tooltip() { + return ( + <> +

DBTooltip Documentation Examples

+ +

1. Default Tooltip

+ + Hover on me to open Tooltip + Tooltip + + +

2. Tooltip Variants

+ + Description Tooltip + + Description Tooltip Content + + + + Label Tooltip + Label Tooltip Content + + +

3. Tooltip with Arrow

+ + Tooltip with Arrow + + Tooltip Content with Arrow + + + +

4. Placement Variants

+ + Top Placement + Tooltip Content at Top + + + Bottom Placement + + Tooltip Content at Bottom + + + + ); +} diff --git a/packages/components/tsconfig.typedoc.json b/packages/components/tsconfig.typedoc.json new file mode 100644 index 000000000000..a515cf4eb1bd --- /dev/null +++ b/packages/components/tsconfig.typedoc.json @@ -0,0 +1,22 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "jsx": "react", + "skipLibCheck": true, + "target": "es2015", + "module": "ESNext", + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["src/components/**/*.ts", "src/components/**/*.tsx"], + "exclude": [ + "node_modules", + "**/index.ts", + "**/*.spec.ts", + "**/*.spec.tsx", + "**/*.agent.lite.tsx", + "**/__snapshots__/**" + ] +} diff --git a/packages/foundations/agent/_instructions.md b/packages/foundations/agent/_instructions.md new file mode 100644 index 000000000000..269790c622d9 --- /dev/null +++ b/packages/foundations/agent/_instructions.md @@ -0,0 +1,15 @@ +## CSS + +- If you use CSS follow these rules: + - use for `variables` like, sizing, spacing, elevation, border, container-size the file **agent-path**/agent/css/Variables.md + +## SCSS + +- If you use SCSS follow these rules: + - use for `variables` like, sizing, spacing, elevation, border, container-size the file **agent-path**/agent/scss/Variables.md + +## Tailwind + +- If you use Tailwind follow these rules: + - use for `variables` like, sizing, spacing, elevation, border, container-size the file **agent-path**/agent/tailwind/Variables.md + - Always stick with the variables don't use something like `p-4` or `m-[16px]` use `p-fix-xs` or `m-fix-md` instead. diff --git a/packages/foundations/agent/css/Variables.md b/packages/foundations/agent/css/Variables.md new file mode 100644 index 000000000000..445cc86fed25 --- /dev/null +++ b/packages/foundations/agent/css/Variables.md @@ -0,0 +1,130 @@ +```css +.my-component { + inline-size: var(--db-sizing-md); /* Use sizing for fixed widths */ + block-size: var(--db-sizing-lg); /* Use sizing for fixed heights */ + padding: var(--db-spacing-fixed-sm); /* Use fixed spacing for paddings */ + margin: var( + --db-spacing-responsive-md + ); /* Use responsive spacing for margins */ + border-radius: var(--db-border-radius-md); /* Use border radius */ + transition-duration: var( + --db-transition-duration-medium + ); /* Use transition duration */ + border-width: var(--db-border-width-md); /* Use border width */ +} +``` + +## CSS Variables List + +Use sizing's for fixed heights/widths e.g. the db-button has always a fixed height + +- `--db-sizing-3xs` +- `--db-sizing-2xs` +- `--db-sizing-xs` +- `--db-sizing-sm` +- `--db-sizing-md` +- `--db-sizing-lg` +- `--db-sizing-xl` +- `--db-sizing-2xl` +- `--db-sizing-3xl` + +Use fixed spacings for all kind of distances (margin, padding, ...) + +- `--db-spacing-fixed-3xs` +- `--db-spacing-fixed-2xs` +- `--db-spacing-fixed-xs` +- `--db-spacing-fixed-sm` +- `--db-spacing-fixed-md` +- `--db-spacing-fixed-lg` +- `--db-spacing-fixed-xl` +- `--db-spacing-fixed-2xl` +- `--db-spacing-fixed-3xl` + +The primary use-case for responsive spacings are paddings/gaps in an application e.g. the
should have a responsive padding. + +- `--db-spacing-responsive-3xs` +- `--db-spacing-responsive-2xs` +- `--db-spacing-responsive-xs` +- `--db-spacing-responsive-sm` +- `--db-spacing-responsive-md` +- `--db-spacing-responsive-lg` +- `--db-spacing-responsive-xl` +- `--db-spacing-responsive-2xl` +- `--db-spacing-responsive-3xl` + +Elevation + +- `--db-elevation-sm` +- `--db-elevation-md` +- `--db-elevation-lg` + +Border + +- `--db-border-width-3xs` +- `--db-border-width-2xs` +- `--db-border-width-xs` +- `--db-border-width-sm` +- `--db-border-width-md` +- `--db-border-width-lg` +- `--db-border-width-xl` +- `--db-border-width-2xl` +- `--db-border-width-3xl` +- `--db-border-radius-3xs` +- `--db-border-radius-2xs` +- `--db-border-radius-xs` +- `--db-border-radius-sm` +- `--db-border-radius-md` +- `--db-border-radius-lg` +- `--db-border-radius-xl` +- `--db-border-radius-2xl` +- `--db-border-radius-3xl` +- `--db-border-radius-full` + +Opacity + +- `--db-opacity-3xs` +- `--db-opacity-2xs` +- `--db-opacity-xs` +- `--db-opacity-sm` +- `--db-opacity-md` +- `--db-opacity-lg` +- `--db-opacity-xl` +- `--db-opacity-2xl` +- `--db-opacity-3xl` +- `--db-opacity-full` + +Transitions + +- `--db-transition-duration-extra-slow` +- `--db-transition-duration-slow` +- `--db-transition-duration-medium` +- `--db-transition-duration-fast` +- `--db-transition-duration-extra-fast` +- `--db-transition-timing-emotional` +- `--db-transition-timing-functional` +- `--db-transition-timing-show` +- `--db-transition-timing-hide` +- `--db-transition-straight-emotional` +- `--db-transition-straight-functional` +- `--db-transition-straight-show` +- `--db-transition-straight-hide` + +Screen sizes + +- `--db-screen-xs` +- `--db-screen-sm` +- `--db-screen-md` +- `--db-screen-lg` +- `--db-screen-xl` + +Container sizes + +- `--db-container-3xs` +- `--db-container-2xs` +- `--db-container-xs` +- `--db-container-sm` +- `--db-container-md` +- `--db-container-lg` +- `--db-container-xl` +- `--db-container-2xl` +- `--db-container-3xl` diff --git a/packages/foundations/agent/scss/Variables.md b/packages/foundations/agent/scss/Variables.md new file mode 100644 index 000000000000..db86db6e2ca9 --- /dev/null +++ b/packages/foundations/agent/scss/Variables.md @@ -0,0 +1,131 @@ +```scss +@use "@db-ux/core-foundations/build/styles/variables"; + +.my-component { + inline-size: variables.$db-sizing-md; // Use sizing for fixed widths + block-size: variables.$db-sizing-lg; // Use sizing for fixed heights + padding: variables.$db-spacing-fixed-sm; // Use fixed spacing for paddings + margin: variables.$db-spacing-responsive-md; // Use responsive spacing for margins + border-radius: variables.$db-border-radius-md; // Use border radius + transition-duration: variables.$db-transition-duration-medium; // Use transition duration + border-width: variables.$db-border-width-md; // Use border width +} +``` + +### SCSS Variables List + +Use sizing's for fixed heights/widths e.g. the db-button has always a fixed height + +- `$db-sizing-3xs` +- `$db-sizing-2xs` +- `$db-sizing-xs` +- `$db-sizing-sm` +- `$db-sizing-md` +- `$db-sizing-lg` +- `$db-sizing-xl` +- `$db-sizing-2xl` +- `$db-sizing-3xl` + +Use fixed spacings for all kind of distances (margin, padding, ...) + +- `$db-spacing-fixed-3xs` +- `$db-spacing-fixed-2xs` +- `$db-spacing-fixed-xs` +- `$db-spacing-fixed-sm` +- `$db-spacing-fixed-md` +- `$db-spacing-fixed-lg` +- `$db-spacing-fixed-xl` +- `$db-spacing-fixed-2xl` +- `$db-spacing-fixed-3xl` + +The primary use-case for responsive spacings are paddings/gaps in an application e.g. the
should have a responsive padding. + +- `$db-spacing-responsive-3xs` +- `$db-spacing-responsive-2xs` +- `$db-spacing-responsive-xs` +- `$db-spacing-responsive-sm` +- `$db-spacing-responsive-md` +- `$db-spacing-responsive-lg` +- `$db-spacing-responsive-xl` +- `$db-spacing-responsive-2xl` +- `$db-spacing-responsive-3xl` + +Use elevation for shadows + +- `$db-elevation-sm` +- `$db-elevation-md` +- `$db-elevation-lg` + +### Use border widths for borders + +- `$db-border-width-3xs` +- `$db-border-width-2xs` +- `$db-border-width-xs` +- `$db-border-width-sm` +- `$db-border-width-md` +- `$db-border-width-lg` +- `$db-border-width-xl` +- `$db-border-width-2xl` +- `$db-border-width-3xl` + +Use border radius for rounded corners + +- `$db-border-radius-3xs` +- `$db-border-radius-2xs` +- `$db-border-radius-xs` +- `$db-border-radius-sm` +- `$db-border-radius-md` +- `$db-border-radius-lg` +- `$db-border-radius-xl` +- `$db-border-radius-2xl` +- `$db-border-radius-3xl` +- `$db-border-radius-full` + +Use opacity for transparency effects + +- `$db-opacity-3xs` +- `$db-opacity-2xs` +- `$db-opacity-xs` +- `$db-opacity-sm` +- `$db-opacity-md` +- `$db-opacity-lg` +- `$db-opacity-xl` +- `$db-opacity-2xl` +- `$db-opacity-3xl` +- `$db-opacity-full` + +Use transition durations for animations + +- `$db-transition-duration-extra-slow` +- `$db-transition-duration-slow` +- `$db-transition-duration-medium` +- `$db-transition-duration-fast` +- `$db-transition-duration-extra-fast` +- `$db-transition-timing-emotional` +- `$db-transition-timing-functional` +- `$db-transition-timing-show` +- `$db-transition-timing-hide` +- `$db-transition-straight-emotional` +- `$db-transition-straight-functional` +- `$db-transition-straight-show` +- `$db-transition-straight-hide` + +Use screen sizes for responsive design breakpoints + +- `$db-screen-xs` +- `$db-screen-sm` +- `$db-screen-md` +- `$db-screen-lg` +- `$db-screen-xl` + +Use container sizes for fixed containers + +- `$db-container-3xs` +- `$db-container-2xs` +- `$db-container-xs` +- `$db-container-sm` +- `$db-container-md` +- `$db-container-lg` +- `$db-container-xl` +- `$db-container-2xl` +- `$db-container-3xl` diff --git a/packages/foundations/agent/tailwind/Variables.md b/packages/foundations/agent/tailwind/Variables.md new file mode 100644 index 000000000000..406d7d5aa441 --- /dev/null +++ b/packages/foundations/agent/tailwind/Variables.md @@ -0,0 +1,75 @@ +```html +
+
+
+ Example +
+
+
+``` + +## Available Variables + +```css +--spacing-fix-3xs: var(--db-spacing-fixed-3xs); +--spacing-fix-2xs: var(--db-spacing-fixed-2xs); +--spacing-fix-xs: var(--db-spacing-fixed-xs); +--spacing-fix-sm: var(--db-spacing-fixed-sm); +--spacing-fix-md: var(--db-spacing-fixed-md); +--spacing-fix-lg: var(--db-spacing-fixed-lg); +--spacing-fix-xl: var(--db-spacing-fixed-xl); +--spacing-fix-2xl: var(--db-spacing-fixed-2xl); +--spacing-fix-3xl: var(--db-spacing-fixed-3xl); +--spacing-res-3xs: var(--db-spacing-responsive-3xs); +--spacing-res-2xs: var(--db-spacing-responsive-2xs); +--spacing-res-xs: var(--db-spacing-responsive-xs); +--spacing-res-sm: var(--db-spacing-responsive-sm); +--spacing-res-md: var(--db-spacing-responsive-md); +--spacing-res-lg: var(--db-spacing-responsive-lg); +--spacing-res-xl: var(--db-spacing-responsive-xl); +--spacing-res-2xl: var(--db-spacing-responsive-2xl); +--spacing-res-3xl: var(--db-spacing-responsive-3xl); +--spacing-siz-3xs: var(--db-sizing-3xs); +--spacing-siz-2xs: var(--db-sizing-2xs); +--spacing-siz-xs: var(--db-sizing-xs); +--spacing-siz-sm: var(--db-sizing-sm); +--spacing-siz-md: var(--db-sizing-md); +--spacing-siz-lg: var(--db-sizing-lg); +--spacing-siz-xl: var(--db-sizing-xl); +--spacing-siz-2xl: var(--db-sizing-2xl); +--spacing-siz-3xl: var(--db-sizing-3xl); +--gap-3xs: var(--db-spacing-fixed-3xs); +--gap-2xs: var(--db-spacing-fixed-2xs); +--gap-xs: var(--db-spacing-fixed-xs); +--gap-sm: var(--db-spacing-fixed-sm); +--gap-md: var(--db-spacing-fixed-md); +--gap-lg: var(--db-spacing-fixed-lg); +--gap-xl: var(--db-spacing-fixed-xl); +--gap-2xl: var(--db-spacing-fixed-2xl); +--gap-3xl: var(--db-spacing-fixed-3xl); +--border: var(--db-border-width-3xs); +--border-3xs: var(--db-border-width-3xs); +--border-2xs: var(--db-border-width-2xs); +--border-xs: var(--db-border-width-xs); +--border-sm: var(--db-border-width-sm); +--border-md: var(--db-border-width-md); +--border-lg: var(--db-border-width-lg); +--border-xl: var(--db-border-width-xl); +--border-2xl: var(--db-border-width-2xl); +--border-3xl: var(--db-border-width-3xl); +--radius: var(--db-border-radius-xs); +--radius-3xs: var(--db-border-radius-3xs); +--radius-2xs: var(--db-border-radius-2xs); +--radius-xs: var(--db-border-radius-xs); +--radius-sm: var(--db-border-radius-sm); +--radius-md: var(--db-border-radius-md); +--radius-lg: var(--db-border-radius-lg); +--radius-xl: var(--db-border-radius-xl); +--radius-2xl: var(--db-border-radius-2xl); +--radius-3xl: var(--db-border-radius-3xl); +--radius-full: var(--db-border-radius-full); +--shadow: var(--db-elevation-md); +--shadow-sm: var(--db-elevation-sm); +--shadow-md: var(--db-elevation-md); +--shadow-lg: var(--db-elevation-lg); +``` diff --git a/packages/foundations/package.json b/packages/foundations/package.json index c16a86d3a9ec..3021ba569214 100644 --- a/packages/foundations/package.json +++ b/packages/foundations/package.json @@ -12,6 +12,7 @@ "types": "./build/index.d.ts", "module": "./build/index.js", "files": [ + "agent", "assets", "build" ], @@ -27,6 +28,7 @@ "build:06_ts": "tsc", "clean": "rm --recursive --force build", "copy-build": "npm-run-all copy-build:*", + "copy-build:agent": "cpr agent ../../build-outputs/foundations/agent -o", "copy-build:assets": "cpr assets ../../build-outputs/foundations/assets --overwrite", "copy-build:package.json": "cpr package.json ../../build-outputs/foundations/package.json --overwrite", "copy-build:readme": "cpr README.md ../../build-outputs/foundations/README.md --overwrite", diff --git a/scripts/documentation/README.md b/scripts/documentation/README.md new file mode 100644 index 000000000000..5c7e4d19ee3a --- /dev/null +++ b/scripts/documentation/README.md @@ -0,0 +1,125 @@ +# Generating docs for AI agents + +This document describes the order in which scripts must be run to produce the `agent-instructions.md` file, +which combines component documentation, code examples and CSS variable references for both agent and developers. + +## 1. Generate separate documentation files + +### 1.1 Annotate components and generate component Markdown + +> **Note:** This confuses copilot at the moment, we skip this step for now. + +Annotate your components with [JSDoc](https://jsdoc.app/) (classes, properties, etc.) so TypeDoc can pick up API signatures: + +````ts +/** +* Renders a configurable button element that works across multiple frameworks. +* +* @remarks +* Use `DBButton` for primary and secondary actions. Supports variants, sizes, +* icons, loading state, and ARIA helpers for accessibility. +* +* @param props - {@link DBButtonProps | Component props} controlling appearance and behavior. +* @returns A `