From f77d85515a41eccdaeb1518bb4d07d8f725eb1c0 Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 15:25:50 +0100 Subject: [PATCH 1/9] docs: documentation overhaul - central site - Fix playbook URLs (Luftfartsverket -> reqstool) - Add all missing component repos to playbook - Create landing page component (overview, getting-started, components) - Add local-antora-playbook.yml for local dev - Add package.json with build scripts - Add supplemental UI (branding, logo, .nojekyll) - Add CONTRIBUTING.md - Update README.md - Set start_page to reqstool::index.adoc - Update .gitignore for Antora build artifacts Signed-off-by: jimisola --- .gitignore | 6 + CONTRIBUTING.md | 29 + README.md | 51 +- docs/antora-playbook.yml | 34 +- docs/antora.yml | 8 + docs/local-antora-playbook.yml | 69 + docs/modules/ROOT/nav.adoc | 6 + docs/modules/ROOT/pages/background.adoc | 7 + docs/modules/ROOT/pages/components.adoc | 101 + docs/modules/ROOT/pages/getting-started.adoc | 36 + docs/modules/ROOT/pages/index.adoc | 92 + docs/modules/ROOT/pages/overview.adoc | 11 + docs/modules/ROOT/pages/terminology.adoc | 23 + package-lock.json | 2123 ++++++++++++++++++ package.json | 12 + supplemental-ui/.nojekyll | 0 supplemental-ui/css/extra.css | 52 + supplemental-ui/img/favicon.png | Bin 0 -> 11864 bytes supplemental-ui/img/logo.png | Bin 0 -> 11864 bytes supplemental-ui/partials/footer-content.hbs | 4 + supplemental-ui/partials/header-content.hbs | 17 + supplemental-ui/ui.yml | 2 + 22 files changed, 2672 insertions(+), 11 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 docs/antora.yml create mode 100644 docs/local-antora-playbook.yml create mode 100644 docs/modules/ROOT/nav.adoc create mode 100644 docs/modules/ROOT/pages/background.adoc create mode 100644 docs/modules/ROOT/pages/components.adoc create mode 100644 docs/modules/ROOT/pages/getting-started.adoc create mode 100644 docs/modules/ROOT/pages/index.adoc create mode 100644 docs/modules/ROOT/pages/overview.adoc create mode 100644 docs/modules/ROOT/pages/terminology.adoc create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 supplemental-ui/.nojekyll create mode 100644 supplemental-ui/css/extra.css create mode 100644 supplemental-ui/img/favicon.png create mode 100644 supplemental-ui/img/logo.png create mode 100644 supplemental-ui/partials/footer-content.hbs create mode 100644 supplemental-ui/partials/header-content.hbs create mode 100644 supplemental-ui/ui.yml diff --git a/.gitignore b/.gitignore index 40cb3b8..76767e6 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,9 @@ fabric.properties # Claude Code .claude/ + +# Antora +.cache/ +node_modules/ +docs/build/ +ui-bundle.zip diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..c6bacb7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Contributing to reqstool documentation + +Thank you for your interest in contributing! + +For DCO sign-off, commit conventions, and code review process, see the organization-wide [CONTRIBUTING.md](https://github.com/reqstool/.github/blob/main/CONTRIBUTING.md). + +## Prerequisites + +- Node.js 18+ +- npm +- All reqstool repos cloned as siblings (for local build) + +## Setup + +```bash +git clone https://github.com/reqstool/reqstool-docs.git +cd reqstool-docs +npm install +``` + +## Build locally + +```bash +# Build using local filesystem paths +npm run build:local + +# Preview the built site +npm run preview +``` diff --git a/README.md b/README.md index 8667dc7..f1a4867 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,52 @@ # Reqstool Documentation -This repository/project is used to aggregate documentation from other reqstool repositories. +[![Documentation](https://img.shields.io/badge/Documentation-blue?style=for-the-badge&link=docs)](https://reqstool.github.io) -See GitHub Pages for this repository/project. +Central documentation site for the [reqstool](https://github.com/reqstool) ecosystem. Built with [Antora](https://antora.org/) and published to GitHub Pages. + +**Live site:** [https://reqstool.github.io](https://reqstool.github.io) + +## Included components + +| Component | Source repo | +|-----------|------------| +| reqstool CLI | [reqstool-client](https://github.com/reqstool/reqstool-client) | +| Java Annotations | [reqstool-java-annotations](https://github.com/reqstool/reqstool-java-annotations) | +| Maven Plugin | [reqstool-java-maven-plugin](https://github.com/reqstool/reqstool-java-maven-plugin) | +| Gradle Plugin | [reqstool-java-gradle-plugin](https://github.com/reqstool/reqstool-java-gradle-plugin) | +| Python Decorators | [reqstool-python-decorators](https://github.com/reqstool/reqstool-python-decorators) | +| Hatch Plugin | [reqstool-python-hatch-plugin](https://github.com/reqstool/reqstool-python-hatch-plugin) | +| Poetry Plugin | [reqstool-python-poetry-plugin](https://github.com/reqstool/reqstool-python-poetry-plugin) | +| VS Code Extension | [reqstool-vscode-extension](https://github.com/reqstool/reqstool-vscode-extension) | +| TypeScript Tags | [reqstool-typescript-tags](https://github.com/reqstool/reqstool-typescript-tags) | +| AI Integration | [reqstool-ai](https://github.com/reqstool/reqstool-ai) | +| Demo Project | [reqstool-demo](https://github.com/reqstool/reqstool-demo) | + +## Build locally + +Prerequisites: Node.js 18+ + +```bash +# Install dependencies +npm install + +# Build using local filesystem paths (requires all repos cloned as siblings) +npm run build:local + +# Preview the built site +npm run preview +``` + +## Adding a new component + +1. Add Antora docs structure to your repo (`docs/antora.yml`, `docs/modules/ROOT/pages/`, etc.) +2. Add the repo as a content source in `docs/antora-playbook.yml` and `docs/local-antora-playbook.yml` +3. Add navigation links in the landing page (`docs/modules/ROOT/pages/components.adoc`) + +## Contributing + +See the organization-wide [CONTRIBUTING.md](https://github.com/reqstool/.github/blob/main/CONTRIBUTING.md). + +## License + +MIT License. diff --git a/docs/antora-playbook.yml b/docs/antora-playbook.yml index f76d482..05f2e55 100644 --- a/docs/antora-playbook.yml +++ b/docs/antora-playbook.yml @@ -5,30 +5,45 @@ runtime: site: title: Requirements Tool - url: https://github.com/Luftfartsverket/reqstool-docs - start_page: reqstool-client::index.adoc + url: https://reqstool.github.io + start_page: reqstool::index.adoc content: sources: - - url: https://github.com/Luftfartsverket/reqstool-client + - url: . branches: HEAD start_path: docs - - url: https://github.com/Luftfartsverket/reqstool-demo + - url: https://github.com/reqstool/reqstool-client branches: HEAD start_path: docs - - url: https://github.com/Luftfartsverket/reqstool-java-annotations + - url: https://github.com/reqstool/reqstool-demo branches: HEAD start_path: docs - - url: https://github.com/Luftfartsverket/reqstool-java-maven-plugin + - url: https://github.com/reqstool/reqstool-java-annotations branches: HEAD start_path: docs - - url: https://github.com/Luftfartsverket/reqstool-python-decorators + - url: https://github.com/reqstool/reqstool-java-maven-plugin branches: HEAD start_path: docs - - url: https://github.com/Luftfartsverket/reqstool-python-poetry-plugin + - url: https://github.com/reqstool/reqstool-java-gradle-plugin branches: HEAD start_path: docs - - url: https://github.com/Luftfartsverket/reqstool-python-hatch-plugin + - url: https://github.com/reqstool/reqstool-python-decorators + branches: HEAD + start_path: docs + - url: https://github.com/reqstool/reqstool-python-poetry-plugin + branches: HEAD + start_path: docs + - url: https://github.com/reqstool/reqstool-python-hatch-plugin + branches: HEAD + start_path: docs + - url: https://github.com/reqstool/reqstool-vscode-extension + branches: HEAD + start_path: docs + - url: https://github.com/reqstool/reqstool-typescript-tags + branches: HEAD + start_path: docs + - url: https://github.com/reqstool/reqstool-ai branches: HEAD start_path: docs @@ -50,3 +65,4 @@ ui: bundle: url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable snapshot: true + supplemental_files: supplemental-ui diff --git a/docs/antora.yml b/docs/antora.yml new file mode 100644 index 0000000..f0002d4 --- /dev/null +++ b/docs/antora.yml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/asciidoctor/asciidoctor-intellij-plugin/main/src/main/resources/jsonSchemas/antoraComponentSchema.json + +name: reqstool +title: Requirements Tool +version: ~ + +nav: + - modules/ROOT/nav.adoc diff --git a/docs/local-antora-playbook.yml b/docs/local-antora-playbook.yml new file mode 100644 index 0000000..1fdc0cb --- /dev/null +++ b/docs/local-antora-playbook.yml @@ -0,0 +1,69 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/asciidoctor/asciidoctor-intellij-plugin/main/src/main/resources/jsonSchemas/antoraPlaybookSchema.json +# For local development only. Published site: https://reqstool.github.io + +runtime: + cache_dir: ./.cache/antora + +site: + title: Requirements Tool + url: https://reqstool.github.io + start_page: reqstool::index.adoc + +content: + sources: + - url: ~+ + branches: HEAD + start_path: docs + - url: ../reqstool-client + branches: HEAD + start_path: docs + - url: ../reqstool-demo + branches: HEAD + start_path: docs + - url: ../reqstool-java-annotations + branches: HEAD + start_path: docs + - url: ../reqstool-java-maven-plugin + branches: HEAD + start_path: docs + - url: ../reqstool-java-gradle-plugin + branches: HEAD + start_path: docs + - url: ../reqstool-python-decorators + branches: HEAD + start_path: docs + - url: ../reqstool-python-poetry-plugin + branches: HEAD + start_path: docs + - url: ../reqstool-python-hatch-plugin + branches: HEAD + start_path: docs + - url: ../reqstool-vscode-extension + branches: HEAD + start_path: docs + - url: ../reqstool-typescript-tags + branches: HEAD + start_path: docs + - url: ../reqstool-ai + branches: HEAD + start_path: docs + +asciidoc: + attributes: + experimental: "" + idprefix: "" + idseparator: "-" + page-pagination: "" + kroki-server-url: https://kroki.io + kroki-fetch-diagram: true + allow-uri-read: true + sectnumlevels: 4 + toclevels: 3 + extensions: + - asciidoctor-kroki + +ui: + bundle: + url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable + snapshot: true + supplemental_files: supplemental-ui diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc new file mode 100644 index 0000000..693a8b8 --- /dev/null +++ b/docs/modules/ROOT/nav.adoc @@ -0,0 +1,6 @@ +* xref:index.adoc[Home] +* xref:overview.adoc[Overview] +* xref:background.adoc[Background] +* xref:terminology.adoc[Terminology] +* xref:getting-started.adoc[Getting Started] +* xref:components.adoc[Components] diff --git a/docs/modules/ROOT/pages/background.adoc b/docs/modules/ROOT/pages/background.adoc new file mode 100644 index 0000000..0d9852e --- /dev/null +++ b/docs/modules/ROOT/pages/background.adoc @@ -0,0 +1,7 @@ += Background + +The idea behind Reqstool was conceived by Jimisola Laursen (@jimisola/@lfvjimisola) when working for LFV (Sweden's leading Air Navigation Provider). The aviation industry has strong regulations in all aspects including software with a lot of requirements. + +The idea is to have defined requirements (own or external) and be able to specify _where a requirement is implemented_ and whether _tests for the requirement have passed or failed_. + +Some would argue that in an ideal world, each line of code would be directly related to a requirement... diff --git a/docs/modules/ROOT/pages/components.adoc b/docs/modules/ROOT/pages/components.adoc new file mode 100644 index 0000000..00a2d04 --- /dev/null +++ b/docs/modules/ROOT/pages/components.adoc @@ -0,0 +1,101 @@ += Components + +== Core + +[cols="2,3,1,1"] +|=== +| Component | Description | Language | Package + +| xref:reqstool-client::index.adoc[Command Line Client] +| Core CLI tool for generating reports, JSON exports, and status checks +| Python +| https://pypi.org/project/reqstool/[PyPI] + +|=== + +== Java + +[cols="2,3,1,1"] +|=== +| Component | Description | Language | Package + +| xref:reqstool-java-annotations::index.adoc[Java Annotations] +| `@Requirements` and `@SVCs` annotations +| Java 21+ +| https://central.sonatype.com/search?q=io.github.reqstool[Maven Central] + +| xref:reqstool-java-maven-plugin::index.adoc[Maven Plugin] +| Maven build plugin for assembling reqstool ZIP artifacts +| Java 21+ +| https://central.sonatype.com/search?q=io.github.reqstool[Maven Central] + +| xref:reqstool-java-gradle-plugin::index.adoc[Gradle Plugin] +| Gradle build plugin for assembling reqstool ZIP artifacts +| Java 17+ +| https://plugins.gradle.org/plugin/io.github.reqstool.gradle-plugin[Gradle Plugin Portal] + +|=== + +== Python + +[cols="2,3,1,1"] +|=== +| Component | Description | Language | Package + +| xref:reqstool-python-decorators::index.adoc[Python Decorators] +| `@Requirements` and `@SVCs` decorators for Python +| Python 3.13+ +| https://pypi.org/project/reqstool-python-decorators/[PyPI] + +| xref:reqstool-python-hatch-plugin::index.adoc[Hatch Plugin] +| Hatch build hook for collecting annotations and test results +| Python +| https://pypi.org/project/reqstool-python-hatch-plugin/[PyPI] + +| xref:reqstool-python-poetry-plugin::index.adoc[Poetry Plugin] +| Poetry build plugin for collecting annotations and test results +| Python +| https://pypi.org/project/reqstool-python-poetry-plugin/[PyPI] + +|=== + +== TypeScript / JavaScript + +[cols="2,3,1,1"] +|=== +| Component | Description | Language | Package + +| xref:reqstool-typescript-tags::index.adoc[TypeScript Tags] +| Annotation tag processor for TypeScript/JavaScript projects +| TypeScript +| https://www.npmjs.com/package/@reqstool/reqstool-typescript-tags[npm] + +|=== + +== Editor & Tooling + +[cols="2,3,1"] +|=== +| Component | Description | Language + +| xref:reqstool-vscode-extension::index.adoc[VS Code Extension] +| Hover information and file watching for reqstool in VS Code +| TypeScript + +| xref:reqstool-ai::index.adoc[AI Integration] +| AI-assisted requirements management (Claude Code skills and conventions) +| Shell + +|=== + +== Example + +[cols="2,3,1"] +|=== +| Component | Description | Language + +| xref:reqstool-demo::index.adoc[Demo Project] +| Complete working example with Maven and Gradle builds +| Java + +|=== diff --git a/docs/modules/ROOT/pages/getting-started.adoc b/docs/modules/ROOT/pages/getting-started.adoc new file mode 100644 index 0000000..e6c177a --- /dev/null +++ b/docs/modules/ROOT/pages/getting-started.adoc @@ -0,0 +1,36 @@ += Getting Started + +== Java projects + +. Add the xref:reqstool-java-annotations::index.adoc[Java Annotations] dependency to your project +. Annotate implementations with `@Requirements("REQ_001")` and tests with `@SVCs("SVC_001")` +. Add the xref:reqstool-java-maven-plugin::index.adoc[Maven Plugin] or xref:reqstool-java-gradle-plugin::index.adoc[Gradle Plugin] to your build +. The plugin assembles a ZIP artifact with requirements, annotations, and test results +. Install the CLI: `pipx install reqstool` +. Run: `reqstool status local -p docs/reqstool` + +See the xref:reqstool-demo::index.adoc[Demo Project] for a complete working example. + +== Python projects + +. Add `reqstool-python-decorators` as a dependency +. Decorate implementations with `@Requirements("REQ_001")` and tests with `@SVCs("SVC_001")` +. Add the xref:reqstool-python-hatch-plugin::index.adoc[Hatch Plugin] or xref:reqstool-python-poetry-plugin::index.adoc[Poetry Plugin] to your build +. Install the CLI: `pipx install reqstool` +. Run: `reqstool status local -p docs/reqstool` + +== TypeScript projects + +. Add `@reqstool/reqstool-typescript-tags` as a dev dependency +. Tag your code with reqstool annotations +. Run the tag processor: `reqstool-typescript-tags --inputs src,tests --output docs/reqstool/annotations.yml` +. Install the CLI: `pipx install reqstool` +. Run: `reqstool status local -p docs/reqstool` + +== VS Code integration + +Install the xref:reqstool-vscode-extension::index.adoc[VS Code Extension] from the marketplace to get hover information for requirements and SVCs directly in your editor. + +== AI-assisted workflow + +Use xref:reqstool-ai::index.adoc[reqstool-ai] to integrate requirements management into AI coding assistants like Claude Code. diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..2286404 --- /dev/null +++ b/docs/modules/ROOT/pages/index.adoc @@ -0,0 +1,92 @@ += Requirements Tool + +== What is reqstool? + +Reqstool is an open-source toolchain for managing software requirements with full traceability to implementation and test results. + +* **Define** requirements in YAML files with references between systems and microservices +* **Annotate** code to link implementations and tests to requirements (Java, Python, TypeScript) +* **Verify** that every requirement is implemented, tested, and passing +* **Report** with generated AsciiDoc/PDF reports for auditors and stakeholders + +== How it works + +[kroki,mermaid] +.... +graph LR + A["Requirements\n(YAML)"] --> B["Annotations\n(@Requirements, @SVCs)"] + B --> C["Test Results\n(JUnit XML)"] + A --> D["reqstool"] + B --> D + C --> D + D --> E["Status Report"] + D --> F["AsciiDoc Report"] + D --> G["JSON Export"] +.... + +== Ecosystem + +Reqstool provides components for multiple languages and build systems: + +[cols="1,2,1"] +|=== +| Component | Description | Language + +| xref:reqstool-client::index.adoc[Command Line Client] +| Core CLI for status checks, reports, and JSON export +| Python + +| xref:reqstool-java-annotations::index.adoc[Java Annotations] +| `@Requirements` and `@SVCs` annotations for Java +| Java + +| xref:reqstool-java-maven-plugin::index.adoc[Maven Plugin] +| Maven build plugin for assembling reqstool artifacts +| Java + +| xref:reqstool-java-gradle-plugin::index.adoc[Gradle Plugin] +| Gradle build plugin for assembling reqstool artifacts +| Java + +| xref:reqstool-python-decorators::index.adoc[Python Decorators] +| `@Requirements` and `@SVCs` decorators for Python +| Python + +| xref:reqstool-python-hatch-plugin::index.adoc[Hatch Plugin] +| Hatch build hook for Python projects +| Python + +| xref:reqstool-python-poetry-plugin::index.adoc[Poetry Plugin] +| Poetry build plugin for Python projects +| Python + +| xref:reqstool-vscode-extension::index.adoc[VS Code Extension] +| Hover info and file watching for VS Code +| TypeScript + +| xref:reqstool-typescript-tags::index.adoc[TypeScript Tags] +| Annotation support for TypeScript/JavaScript projects +| TypeScript + +| xref:reqstool-ai::index.adoc[AI Integration] +| AI-assisted requirements management with Claude Code +| Shell + +| xref:reqstool-demo::index.adoc[Demo Project] +| Full working example with Maven and Gradle +| Java +|=== + +== Quick start + +. Install the CLI: `pipx install reqstool` +. Define requirements in `docs/reqstool/requirements.yml` +. Annotate your code with `@Requirements` and `@SVCs` +. Add a build plugin for your ecosystem (xref:reqstool-java-maven-plugin::index.adoc[Maven], xref:reqstool-java-gradle-plugin::index.adoc[Gradle], xref:reqstool-python-hatch-plugin::index.adoc[Hatch], or xref:reqstool-python-poetry-plugin::index.adoc[Poetry]) +. Run `reqstool status local -p docs/reqstool` + +See xref:getting-started.adoc[Getting Started] for detailed instructions per language. + +== License + +All reqstool components are licensed under the https://opensource.org/license/mit/[MIT License] unless otherwise noted. diff --git a/docs/modules/ROOT/pages/overview.adoc b/docs/modules/ROOT/pages/overview.adoc new file mode 100644 index 0000000..e4d0a88 --- /dev/null +++ b/docs/modules/ROOT/pages/overview.adoc @@ -0,0 +1,11 @@ += Overview + +Reqstool is a tool for managing requirements with related software verification cases (aka tests) and verification results (test results). + +* Requirements are defined in YAML files and can reference each other (depending on the variant, different data will be parsed). +* Annotations are then used in code to specify where a requirement is implemented as well as tested. + +With this information and the actual test results (e.g. JUnit) use reqstool to: + +* Generate a report (AsciiDoc, which can be transformed into e.g. PDF) listing all requirements, where that requirement is implemented and tested, and whether the tests passed/failed. This report can be used e.g. with auditors ("Yes, we track this requirement, it's implemented (here) and it has been tested with a pass (here).") +* Status the software, i.e. get a list of all requirements, their status on implementation and tests. Reqstool will exit with a status code equal to the number of requirements that have not been implemented and tested with a pass. Hence, it can be used in a pipeline as a gate for deployment to production. diff --git a/docs/modules/ROOT/pages/terminology.adoc b/docs/modules/ROOT/pages/terminology.adoc new file mode 100644 index 0000000..4e33b14 --- /dev/null +++ b/docs/modules/ROOT/pages/terminology.adoc @@ -0,0 +1,23 @@ += Terminology + +|=== +| Term | Description + +| Requirements +| The actual requirement the software needs to implement + +| Software Verification Cases (SVCs) +| An instruction of a test that can be automated (unit, integration etc) or manual + +| Manual Verification Results (MVRs) +| Result of a test performed manually + +| Requirement Annotation (requirements_annotations) +| The annotation used in code to track where a specific requirement is implemented + +| Test Annotation (svcs_annotations) +| The annotation used in tests to specify where an SVC is tested + +| Requirement Config (reqstool_config) +| A file where custom paths to the required YAML files can be specified +|=== diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..512e742 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2123 @@ +{ + "name": "reqstool-docs", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "antora": "^3.1", + "asciidoctor-kroki": "^0.18" + } + }, + "node_modules/@antora/asciidoc-loader": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.14.tgz", + "integrity": "sha512-4xxisnoBFrlLNY6f3xZtyyfgm+tBLsqesTcEStfc8jtXUMYJ4b2DWIzo1vULmxvZ7yY5+Q7YqEvS5o6kIWAG0A==", + "license": "MPL-2.0", + "dependencies": { + "@antora/logger": "3.1.14", + "@antora/user-require-helper": "~3.0", + "@asciidoctor/core": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/asciidoc-loader/node_modules/@asciidoctor/core": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.8.tgz", + "integrity": "sha512-oozXk7ZO1RAd/KLFLkKOhqTcG4GO3CV44WwOFg2gMcCsqCUTarvMT7xERIoWW2WurKbB0/ce+98r01p8xPOlBw==", + "license": "MIT", + "dependencies": { + "asciidoctor-opal-runtime": "0.3.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11", + "npm": ">=5.0.0", + "yarn": ">=1.1.0" + } + }, + "node_modules/@antora/asciidoc-loader/node_modules/unxhr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", + "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "license": "MIT", + "engines": { + "node": ">=8.11" + } + }, + "node_modules/@antora/cli": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.14.tgz", + "integrity": "sha512-I6WcygMU2bFInjdURJjkYjo7K5M8B3lBB53v9OO0IcY0LhEY8Wa7IlZ7wVinf5qEjHvaYzRGTZVl6RsJtVt7Sw==", + "license": "MPL-2.0", + "dependencies": { + "@antora/logger": "3.1.14", + "@antora/playbook-builder": "3.1.14", + "@antora/user-require-helper": "~3.0", + "commander": "~11.1" + }, + "bin": { + "antora": "bin/antora" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-aggregator": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.14.tgz", + "integrity": "sha512-FVuBgnrGPiktYqK1WHbGF8O8l4m5KHlkxoJumrbacgFo8SKuiRFEo31zalxrCUsv8QM3UBEgX+LdHrve/9CGLg==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~3.0", + "@antora/logger": "3.1.14", + "@antora/user-require-helper": "~3.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "fast-glob": "~3.3", + "hpagent": "~1.2", + "isomorphic-git": "~1.25", + "js-yaml": "~4.1", + "multi-progress": "~4.0", + "picomatch": "~4.0", + "progress": "~2.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-classifier": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.14.tgz", + "integrity": "sha512-y8Fk+KU1lqD3aawOu3ZFK92YfOZ1k3YBJhLI9QIFM6Ck4STPnf7AwYbhfOtjODlwer5/OhFmfhjUB2hn7onGnA==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.14", + "@antora/logger": "3.1.14", + "mime-types": "~2.1", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/document-converter": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.14.tgz", + "integrity": "sha512-f6wFnL+489DI0ZDgoxYWzbxxWqPviRiJ56OHS1NixEfvJ7OpRBDPEbX1xnsIeiyFBgqX4+nY92MsCWKTa+Gf3w==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.14" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/expand-path-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", + "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/file-publisher": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.14.tgz", + "integrity": "sha512-fTaAnkyKSOlsxQM1TBFCAmiERA6Q67XleDCD2bMPVgfcENmo0Xfx59KwCHaA92IcRSmMftydlXHPaFxNh0UVsg==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~3.0", + "@antora/user-require-helper": "~3.0", + "vinyl": "~3.0", + "yazl": "~2.5" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/logger": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.14.tgz", + "integrity": "sha512-kVEeGqZbXR903hPIm+BlN97fLdQ3LoUzE/BOPZ6vRp9m9Mmbnm67Kg7fSYkfTMLB0S2UWpAPFg22RdsU5ZoAzA==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~3.0", + "pino": "~9.2", + "pino-pretty": "~11.2", + "sonic-boom": "~4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/navigation-builder": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.14.tgz", + "integrity": "sha512-/637YLGD7oUHGSfEfszXkk4ASfIhDAg5Xs9035J1dV07XYRlGqmtUb15rtapbcECpcQFjCyM5jFQYSNNvLrGcQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.14" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/page-composer": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.14.tgz", + "integrity": "sha512-RfA+67TxCqUPrQbZdrfjgLpHh8MR2z2du7cyF3HGX4N6DpqEBvz81NHHl3rA3fj6BQZPQbGm2OYAMU6wzJ6Pog==", + "license": "MPL-2.0", + "dependencies": { + "@antora/logger": "3.1.14", + "handlebars": "~4.7", + "require-from-string": "~2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/playbook-builder": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.14.tgz", + "integrity": "sha512-Ss2r7In00u/n9Da+JOxEqIE8NeRosf+f+agzH3Te09JV/mpgZKxEOE5V/VuP+TNNq4ww1eu5aOS8DiU2PYwj4Q==", + "license": "MPL-2.0", + "dependencies": { + "@iarna/toml": "~2.2", + "convict": "~6.2", + "js-yaml": "~4.1", + "json5": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/redirect-producer": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.14.tgz", + "integrity": "sha512-5koAwRk1cZrvE/qfOWKXqb3jtxrZbWA5EYHYGFEoato5By3cbC42blH4Bre9/48pjyS6znFpbZhYUBpT7PRhZA==", + "license": "MPL-2.0", + "dependencies": { + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-generator": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.14.tgz", + "integrity": "sha512-hQIUVtM9+xwleYWc4fIRZmiKl2p+ItOJuUm2+Hkdh07BZsySxkMOxxCyZsvTn9rc+4R94CYqDQCYElwFwdB2WA==", + "license": "MPL-2.0", + "dependencies": { + "@antora/asciidoc-loader": "3.1.14", + "@antora/content-aggregator": "3.1.14", + "@antora/content-classifier": "3.1.14", + "@antora/document-converter": "3.1.14", + "@antora/file-publisher": "3.1.14", + "@antora/logger": "3.1.14", + "@antora/navigation-builder": "3.1.14", + "@antora/page-composer": "3.1.14", + "@antora/playbook-builder": "3.1.14", + "@antora/redirect-producer": "3.1.14", + "@antora/site-mapper": "3.1.14", + "@antora/site-publisher": "3.1.14", + "@antora/ui-loader": "3.1.14", + "@antora/user-require-helper": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-mapper": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.14.tgz", + "integrity": "sha512-3qbETtwadl+fWREjzrBUxPUorMcMiZ+hdkB1El9z7it9KzKh0Yp7Je0+2uTxGX+Lov9uik48dZJ9e/mr5PeaRQ==", + "license": "MPL-2.0", + "dependencies": { + "@antora/content-classifier": "3.1.14", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-publisher": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.14.tgz", + "integrity": "sha512-8apyEmgepUc7ms9CTEIPwN3tGtWwLqR6fbLMLs7hibqmOSR880Ut/4GRGb97sqcGQXSHdIyWK2oJKzRl1Akb6Q==", + "license": "MPL-2.0", + "dependencies": { + "@antora/file-publisher": "3.1.14" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/ui-loader": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.14.tgz", + "integrity": "sha512-LVvTdKQOB44CmJ1JQDu8sJf6rrLZMxPAWWackdg2JtGyGHHpd80/MBcv4BSFk7//cJQ13Oqm/7JCbhD51KAFjg==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~3.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "fast-glob": "~3.3", + "hpagent": "~1.2", + "js-yaml": "~4.1", + "picomatch": "~4.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~3.0", + "yauzl": "~3.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/user-require-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-3.0.0.tgz", + "integrity": "sha512-KIXb8WYhnrnwH7Jj21l1w+et9k5GvcgcqvLOwxqWLEd0uVZOiMFdqFjqbVm3M+zcrs1JXWMeh2LLvxBbQs3q/Q==", + "license": "MPL-2.0", + "dependencies": { + "@antora/expand-path-helper": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@asciidoctor/core": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-3.0.4.tgz", + "integrity": "sha512-41SDMi7iRRBViPe0L6VWFTe55bv6HEOJeRqMj5+E5wB1YPdUPuTucL4UAESPZM6OWmn4t/5qM5LusXomFUVwVQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@asciidoctor/opal-runtime": "3.0.1", + "unxhr": "1.2.0" + }, + "engines": { + "node": ">=16", + "npm": ">=8" + } + }, + "node_modules/@asciidoctor/opal-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@asciidoctor/opal-runtime/-/opal-runtime-3.0.1.tgz", + "integrity": "sha512-iW7ACahOG0zZft4A/4CqDcc7JX+fWRNjV5tFAVkNCzwZD+EnFolPaUOPYt8jzadc0+Bgd80cQTtRMQnaaV1kkg==", + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "8.1.0", + "unxhr": "1.2.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "license": "ISC" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/antora": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/antora/-/antora-3.1.14.tgz", + "integrity": "sha512-z8HshJsT6pUfdDOUJ15RGtpOM9LmL6JXU5JBshoR/9/xd+1qLmKPkOnUv+HrijAk93r1imxZOdkmIqhLcv8B8A==", + "license": "MPL-2.0", + "dependencies": { + "@antora/cli": "3.1.14", + "@antora/site-generator": "3.1.14" + }, + "bin": { + "antora": "bin/antora" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/asciidoctor-kroki": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/asciidoctor-kroki/-/asciidoctor-kroki-0.18.1.tgz", + "integrity": "sha512-eQxbBCaPTbyNoJtk62Gp+6h4LlJp2147g7eS0QIVjqaLpFa8sseH0BlMiBoATrJUYv1w3nR+FTzvloBJ/MioYg==", + "license": "MIT", + "dependencies": { + "json5": "2.2.3", + "mkdirp": "2.1.3", + "pako": "2.1.0", + "rusha": "0.8.14", + "unxhr": "1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@asciidoctor/core": ">=2.2 <4.0" + } + }, + "node_modules/asciidoctor-opal-runtime": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", + "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", + "license": "MIT", + "dependencies": { + "glob": "7.1.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11" + } + }, + "node_modules/asciidoctor-opal-runtime/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/asciidoctor-opal-runtime/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/asciidoctor-opal-runtime/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/asciidoctor-opal-runtime/node_modules/unxhr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", + "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "license": "MIT", + "engines": { + "node": ">=8.11" + } + }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cache-directory": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", + "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", + "license": "LGPL-3.0+", + "dependencies": { + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/clean-git-ref": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", + "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "license": "Apache-2.0" + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/convict": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", + "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "yargs-parser": "^20.2.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/diff3": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", + "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isomorphic-git": { + "version": "1.25.10", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", + "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "license": "MIT", + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/isomorphic-git/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimisted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", + "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/mkdirp": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/multi-progress": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", + "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", + "license": "MIT", + "peerDependencies": { + "progress": "^2.0.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", + "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "license": "MIT", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.2.2.tgz", + "integrity": "sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", + "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", + "license": "MIT" + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "license": "ISC" + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rusha": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/should-proxy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", + "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==", + "license": "MIT" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sonic-boom": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", + "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unxhr": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", + "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==", + "license": "MIT", + "engines": { + "node": ">=8.11" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vinyl": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz", + "integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", + "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..02841a7 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "private": true, + "scripts": { + "build": "antora docs/antora-playbook.yml", + "build:local": "antora docs/local-antora-playbook.yml", + "preview": "npx http-server docs/build/site -o" + }, + "dependencies": { + "antora": "^3.1", + "asciidoctor-kroki": "^0.18" + } +} diff --git a/supplemental-ui/.nojekyll b/supplemental-ui/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/supplemental-ui/css/extra.css b/supplemental-ui/css/extra.css new file mode 100644 index 0000000..f3d591e --- /dev/null +++ b/supplemental-ui/css/extra.css @@ -0,0 +1,52 @@ +/* reqstool branding - black, white, green */ +:root { + --color-brand-green: #4CAF50; + --color-brand-dark: #1a1a1a; +} + +.navbar { + background-color: var(--color-brand-dark); +} + +.navbar .navbar-brand { + color: #fff; + font-weight: 700; +} + +.navbar .navbar-item, +.navbar .navbar-link { + color: rgba(255, 255, 255, 0.85); +} + +.navbar .navbar-item:hover, +.navbar .navbar-link:hover { + color: var(--color-brand-green); +} + +.doc .listingblock pre { + border-left: 3px solid var(--color-brand-green); +} + +a { + color: var(--color-brand-green); +} + +a:hover { + color: #388E3C; +} + +.nav-link.is-active { + color: var(--color-brand-green); + border-left-color: var(--color-brand-green); +} + +.doc h1, +.doc h2, +.doc h3 { + color: var(--color-brand-dark); +} + +.footer { + background-color: var(--color-brand-dark); + color: rgba(255, 255, 255, 0.7); +} diff --git a/supplemental-ui/img/favicon.png b/supplemental-ui/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..031a89418f4fabb1cb64a1a76b8726f5f2168ce8 GIT binary patch literal 11864 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 literal 0 HcmV?d00001 diff --git a/supplemental-ui/img/logo.png b/supplemental-ui/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..031a89418f4fabb1cb64a1a76b8726f5f2168ce8 GIT binary patch literal 11864 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 literal 0 HcmV?d00001 diff --git a/supplemental-ui/partials/footer-content.hbs b/supplemental-ui/partials/footer-content.hbs new file mode 100644 index 0000000..47d4234 --- /dev/null +++ b/supplemental-ui/partials/footer-content.hbs @@ -0,0 +1,4 @@ +
+

reqstool — Open-source requirements traceability toolchain

+

GitHub · Licensed under MIT

+
diff --git a/supplemental-ui/partials/header-content.hbs b/supplemental-ui/partials/header-content.hbs new file mode 100644 index 0000000..4af687b --- /dev/null +++ b/supplemental-ui/partials/header-content.hbs @@ -0,0 +1,17 @@ + diff --git a/supplemental-ui/ui.yml b/supplemental-ui/ui.yml new file mode 100644 index 0000000..705b9c4 --- /dev/null +++ b/supplemental-ui/ui.yml @@ -0,0 +1,2 @@ +static_files: + - .nojekyll From 30f8531d4ca4dc38322da9acace5fe2437ec1322 Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 16:19:41 +0100 Subject: [PATCH 2/9] docs: fix relative paths in local playbook Paths need ../../ prefix since playbook is inside docs/ and sibling repos are one level above the repo root. Signed-off-by: jimisola --- docs/local-antora-playbook.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/local-antora-playbook.yml b/docs/local-antora-playbook.yml index 1fdc0cb..c5cf1e4 100644 --- a/docs/local-antora-playbook.yml +++ b/docs/local-antora-playbook.yml @@ -14,37 +14,37 @@ content: - url: ~+ branches: HEAD start_path: docs - - url: ../reqstool-client + - url: ../../reqstool-client branches: HEAD start_path: docs - - url: ../reqstool-demo + - url: ../../reqstool-demo branches: HEAD start_path: docs - - url: ../reqstool-java-annotations + - url: ../../reqstool-java-annotations branches: HEAD start_path: docs - - url: ../reqstool-java-maven-plugin + - url: ../../reqstool-java-maven-plugin branches: HEAD start_path: docs - - url: ../reqstool-java-gradle-plugin + - url: ../../reqstool-java-gradle-plugin branches: HEAD start_path: docs - - url: ../reqstool-python-decorators + - url: ../../reqstool-python-decorators branches: HEAD start_path: docs - - url: ../reqstool-python-poetry-plugin + - url: ../../reqstool-python-poetry-plugin branches: HEAD start_path: docs - - url: ../reqstool-python-hatch-plugin + - url: ../../reqstool-python-hatch-plugin branches: HEAD start_path: docs - - url: ../reqstool-vscode-extension + - url: ../../reqstool-vscode-extension branches: HEAD start_path: docs - - url: ../reqstool-typescript-tags + - url: ../../reqstool-typescript-tags branches: HEAD start_path: docs - - url: ../reqstool-ai + - url: ../../reqstool-ai branches: HEAD start_path: docs From 18a4ad1392bdd936c9829c543dc5d65e77397373 Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 16:23:27 +0100 Subject: [PATCH 3/9] docs: fix supplemental_files path to be relative to playbook Use ../supplemental-ui instead of supplemental-ui to be explicit relative to the docs/ directory where playbooks live. Signed-off-by: jimisola --- docs/antora-playbook.yml | 2 +- docs/local-antora-playbook.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/antora-playbook.yml b/docs/antora-playbook.yml index 05f2e55..55a80c0 100644 --- a/docs/antora-playbook.yml +++ b/docs/antora-playbook.yml @@ -65,4 +65,4 @@ ui: bundle: url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable snapshot: true - supplemental_files: supplemental-ui + supplemental_files: ../supplemental-ui diff --git a/docs/local-antora-playbook.yml b/docs/local-antora-playbook.yml index c5cf1e4..e348702 100644 --- a/docs/local-antora-playbook.yml +++ b/docs/local-antora-playbook.yml @@ -66,4 +66,4 @@ ui: bundle: url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable snapshot: true - supplemental_files: supplemental-ui + supplemental_files: ../supplemental-ui From cd2eed701b1729ff31d42c9191decb08b61d64e5 Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 18:22:25 +0100 Subject: [PATCH 4/9] docs: fix local playbook source paths Change relative paths from ../../ to ../ to correctly resolve sibling repos from the playbook file location. Signed-off-by: jimisola --- docs/local-antora-playbook.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/local-antora-playbook.yml b/docs/local-antora-playbook.yml index e348702..86fff28 100644 --- a/docs/local-antora-playbook.yml +++ b/docs/local-antora-playbook.yml @@ -2,7 +2,7 @@ # For local development only. Published site: https://reqstool.github.io runtime: - cache_dir: ./.cache/antora + cache_dir: ../.cache/antora site: title: Requirements Tool @@ -14,37 +14,37 @@ content: - url: ~+ branches: HEAD start_path: docs - - url: ../../reqstool-client + - url: ../reqstool-client branches: HEAD start_path: docs - - url: ../../reqstool-demo + - url: ../reqstool-demo branches: HEAD start_path: docs - - url: ../../reqstool-java-annotations + - url: ../reqstool-java-annotations branches: HEAD start_path: docs - - url: ../../reqstool-java-maven-plugin + - url: ../reqstool-java-maven-plugin branches: HEAD start_path: docs - - url: ../../reqstool-java-gradle-plugin + - url: ../reqstool-java-gradle-plugin branches: HEAD start_path: docs - - url: ../../reqstool-python-decorators + - url: ../reqstool-python-decorators branches: HEAD start_path: docs - - url: ../../reqstool-python-poetry-plugin + - url: ../reqstool-python-poetry-plugin branches: HEAD start_path: docs - - url: ../../reqstool-python-hatch-plugin + - url: ../reqstool-python-hatch-plugin branches: HEAD start_path: docs - - url: ../../reqstool-vscode-extension + - url: ../reqstool-vscode-extension branches: HEAD start_path: docs - - url: ../../reqstool-typescript-tags + - url: ../reqstool-typescript-tags branches: HEAD start_path: docs - - url: ../../reqstool-ai + - url: ../reqstool-ai branches: HEAD start_path: docs @@ -64,6 +64,6 @@ asciidoc: ui: bundle: - url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable - snapshot: true - supplemental_files: ../supplemental-ui + url: /Users/r04755/dev/clones/jimisola/reqstool/reqstool-docs/.cache/antora/ui-bundle.zip + snapshot: false + supplemental_files: supplemental-ui From ed748fcc25b6aedc34b8df0844543807d974fffc Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 18:41:45 +0100 Subject: [PATCH 5/9] docs: add Export bullet, fix Maven plugin Java version in components Signed-off-by: jimisola --- docs/modules/ROOT/pages/components.adoc | 2 +- docs/modules/ROOT/pages/index.adoc | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/components.adoc b/docs/modules/ROOT/pages/components.adoc index 00a2d04..8963a05 100644 --- a/docs/modules/ROOT/pages/components.adoc +++ b/docs/modules/ROOT/pages/components.adoc @@ -26,7 +26,7 @@ | xref:reqstool-java-maven-plugin::index.adoc[Maven Plugin] | Maven build plugin for assembling reqstool ZIP artifacts -| Java 21+ +| Java 8+ | https://central.sonatype.com/search?q=io.github.reqstool[Maven Central] | xref:reqstool-java-gradle-plugin::index.adoc[Gradle Plugin] diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 2286404..bd1e7fa 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -8,6 +8,7 @@ Reqstool is an open-source toolchain for managing software requirements with ful * **Annotate** code to link implementations and tests to requirements (Java, Python, TypeScript) * **Verify** that every requirement is implemented, tested, and passing * **Report** with generated AsciiDoc/PDF reports for auditors and stakeholders +* **Export** data in JSON format for custom tooling and integrations == How it works From e7214c86fd85c95c02c7dfac9823385c63bf15dd Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 18:43:12 +0100 Subject: [PATCH 6/9] docs: use lowercase reqstool consistently Signed-off-by: jimisola --- docs/modules/ROOT/pages/background.adoc | 2 +- docs/modules/ROOT/pages/index.adoc | 4 ++-- docs/modules/ROOT/pages/overview.adoc | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/modules/ROOT/pages/background.adoc b/docs/modules/ROOT/pages/background.adoc index 0d9852e..b8a1026 100644 --- a/docs/modules/ROOT/pages/background.adoc +++ b/docs/modules/ROOT/pages/background.adoc @@ -1,6 +1,6 @@ = Background -The idea behind Reqstool was conceived by Jimisola Laursen (@jimisola/@lfvjimisola) when working for LFV (Sweden's leading Air Navigation Provider). The aviation industry has strong regulations in all aspects including software with a lot of requirements. +The idea behind reqstool was conceived by Jimisola Laursen (@jimisola/@lfvjimisola) when working for LFV (Sweden's leading Air Navigation Provider). The aviation industry has strong regulations in all aspects including software with a lot of requirements. The idea is to have defined requirements (own or external) and be able to specify _where a requirement is implemented_ and whether _tests for the requirement have passed or failed_. diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index bd1e7fa..df041b2 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -2,7 +2,7 @@ == What is reqstool? -Reqstool is an open-source toolchain for managing software requirements with full traceability to implementation and test results. +reqstool is an open-source toolchain for managing software requirements with full traceability to implementation and test results. * **Define** requirements in YAML files with references between systems and microservices * **Annotate** code to link implementations and tests to requirements (Java, Python, TypeScript) @@ -27,7 +27,7 @@ graph LR == Ecosystem -Reqstool provides components for multiple languages and build systems: +reqstool provides components for multiple languages and build systems: [cols="1,2,1"] |=== diff --git a/docs/modules/ROOT/pages/overview.adoc b/docs/modules/ROOT/pages/overview.adoc index e4d0a88..90b4573 100644 --- a/docs/modules/ROOT/pages/overview.adoc +++ b/docs/modules/ROOT/pages/overview.adoc @@ -1,6 +1,6 @@ = Overview -Reqstool is a tool for managing requirements with related software verification cases (aka tests) and verification results (test results). +reqstool is a tool for managing requirements with related software verification cases (aka tests) and verification results (test results). * Requirements are defined in YAML files and can reference each other (depending on the variant, different data will be parsed). * Annotations are then used in code to specify where a requirement is implemented as well as tested. @@ -8,4 +8,4 @@ Reqstool is a tool for managing requirements with related software verification With this information and the actual test results (e.g. JUnit) use reqstool to: * Generate a report (AsciiDoc, which can be transformed into e.g. PDF) listing all requirements, where that requirement is implemented and tested, and whether the tests passed/failed. This report can be used e.g. with auditors ("Yes, we track this requirement, it's implemented (here) and it has been tested with a pass (here).") -* Status the software, i.e. get a list of all requirements, their status on implementation and tests. Reqstool will exit with a status code equal to the number of requirements that have not been implemented and tested with a pass. Hence, it can be used in a pipeline as a gate for deployment to production. +* Status the software, i.e. get a list of all requirements, their status on implementation and tests. reqstool will exit with a status code equal to the number of requirements that have not been implemented and tested with a pass. Hence, it can be used in a pipeline as a gate for deployment to production. From 4cbdfb3f6e98357ce2ba56d44135fbf34004a083 Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 19:07:45 +0100 Subject: [PATCH 7/9] docs: move cross-cutting docs from reqstool-client to central site Move data.adoc, file_and_directory_set.adoc (as files-and-directories.adoc), and general concepts from how_it_works.adoc into the central reqstool component. Add concepts.adoc with annotations, parsing, custom paths, and validation. Update nav with new pages. Fix local playbook UI bundle path. Signed-off-by: jimisola --- docs/local-antora-playbook.yml | 6 +- docs/modules/ROOT/nav.adoc | 3 + docs/modules/ROOT/pages/concepts.adoc | 55 +++ docs/modules/ROOT/pages/data.adoc | 358 ++++++++++++++++++ .../ROOT/pages/files-and-directories.adoc | 143 +++++++ 5 files changed, 562 insertions(+), 3 deletions(-) create mode 100644 docs/modules/ROOT/pages/concepts.adoc create mode 100644 docs/modules/ROOT/pages/data.adoc create mode 100644 docs/modules/ROOT/pages/files-and-directories.adoc diff --git a/docs/local-antora-playbook.yml b/docs/local-antora-playbook.yml index 86fff28..c82df56 100644 --- a/docs/local-antora-playbook.yml +++ b/docs/local-antora-playbook.yml @@ -64,6 +64,6 @@ asciidoc: ui: bundle: - url: /Users/r04755/dev/clones/jimisola/reqstool/reqstool-docs/.cache/antora/ui-bundle.zip - snapshot: false - supplemental_files: supplemental-ui + url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable + snapshot: true + supplemental_files: ../supplemental-ui diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 693a8b8..902bed0 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -2,5 +2,8 @@ * xref:overview.adoc[Overview] * xref:background.adoc[Background] * xref:terminology.adoc[Terminology] +* xref:concepts.adoc[Concepts] +* xref:files-and-directories.adoc[Files and Directories] +* xref:data.adoc[Data] * xref:getting-started.adoc[Getting Started] * xref:components.adoc[Components] diff --git a/docs/modules/ROOT/pages/concepts.adoc b/docs/modules/ROOT/pages/concepts.adoc new file mode 100644 index 0000000..4139230 --- /dev/null +++ b/docs/modules/ROOT/pages/concepts.adoc @@ -0,0 +1,55 @@ += Concepts + +== Linking code with annotations + +reqstool uses annotations to couple requirements and software verification cases (SVCs) with code implementations and test results. You annotate functions or classes with `@Requirements` to mark where a requirement is implemented, and `@SVCs` to mark where an SVC is tested. + +Each ecosystem has its own annotation framework: + +* **Java** -- xref:reqstool-java-annotations::index.adoc[reqstool-java-annotations] (annotations) +* **Python** -- xref:reqstool-python-decorators::index.adoc[reqstool-python-decorators] (decorators) +* **TypeScript** -- xref:reqstool-typescript-tags::index.adoc[reqstool-typescript-tags] (tags) + +See each project's documentation for installation and usage details. + +== How parsing works + +When reqstool processes data from multiple sources, parsing begins sequentially from the URI the user provides. This becomes the initial source of the reqstool report. For example, if you have a microservice (ms-001) that inherits requirements from another source (ext-001), you start the parsing in the `docs/requirements` path of ms-001. + +When the initial source's requirement files are processed, reqstool continues to parse the other sources specified within the `imports` parameter of the initial source's requirement file. If xref:data.adoc#filters[filters] are applied in the initial source, the data in the following sources will adhere to these settings. + +For example, to exclude one requirement from ext-001, specify it in the `requirements.yml` file of the ms-001 project: + +[source,yaml] +---- +imports: + local: + - path: ./ext-001 + +filters: + ext-001: + requirement_ids: + excludes: + - REQ_101 +---- + +When reqstool reads the data from ext-001, REQ_101 will not be imported, but all other requirements specified in ext-001's `requirements.yml` file will. + +Filters can currently be applied to `requirements.yml` and `software_verification_cases.yml`. + +== Custom paths + +If you are providing a path to a git repository or a Maven artifact, you can override the xref:files-and-directories.adoc#reqstool_config[reqstool_config.yml] of the YAML files by providing a `reqstool_config.yml` file in the same folder as your `requirements.yml`. In the `reqstool_config.yml`, you describe the structure of your repository/artifact and specify where the required YAML files are located. If reqstool detects such a file, it will locate the required files from the paths described in the `reqstool_config.yml` instead of the defaults. + +== Validation + +reqstool validates that the data within the YAML files is as correct as possible. If any errors are found, it prints a summary to stdout so that errors can be detected and corrected quickly. + +The main things that are validated: + +* No duplicate Requirement/SVC/MVR IDs +* SVCs refer to requirements that actually exist +* Annotation implementations refer to existing requirements +* Annotation tests refer to existing SVCs +* MVRs refer to existing SVCs +* SVCs and requirements have only one of the import/exclude filters set per file diff --git a/docs/modules/ROOT/pages/data.adoc b/docs/modules/ROOT/pages/data.adoc new file mode 100644 index 0000000..a2eae5b --- /dev/null +++ b/docs/modules/ROOT/pages/data.adoc @@ -0,0 +1,358 @@ += Data + +== Data Source Types + +reqstool reads data from four different sources: + +* Local file system +* Git repository +* Maven repository (zip artifact) +* PyPI package (tar.gz) + +[plantuml,format=svg] +.... +@startuml +!include +!include +!include +!include +title Source Types Overview + +AddExternalSystemTag("git", $sprite="git-icon,color=red", $legendText="Git repository") +AddExternalSystemTag("maven", $sprite="maven", $legendText="Maven repository") +AddExternalSystemTag("pypi", $sprite="pypi", $legendText="Pypi package") + +System(reqstool, reqstool) +System_Ext(git, , $tags="git") +System_Ext(mvn, , $tags="maven") +System_Ext(pypi, , $tags="pypi") +System(local, Local files) +System(output, Output) + + +Rel(git,reqstool,) +Rel(mvn,reqstool,) +Rel(pypi,reqstool,) +Rel(local, reqstool,) +Rel(reqstool, output, ) + +@enduml +.... + +== Data Inputs + +reqstool reads both static (created by human) and dynamic data (generated by tools, e.g. test reports): + +[plantuml,format=svg] +.... +@startuml +!include +!include +!include + +title Data Input Overview + +AddContainerTag("file", $sprite="document", $legendText="Input data file") +AddContainerTag("report", $sprite="book_journal", $legendText="Output file/stdout") + +Container(reqstool, reqstool, "reqstool client") +Container(reqs, Requirements, requirements.yml , $tags="file") +Container(svc, Software Verification Cases, software_verification_cases.yml, $tags="file") +Container(mvr, Manual Verification Results, manual_verification_results.yml, $tags="file") +Container(test_res, Test Report, Unit Test Reports,$tags="file") + +Rel(reqs, reqstool, ) +Rel(svc, reqstool, ) +Rel(mvr, reqstool, ) +Rel(test_res, reqstool, ) + +@enduml +.... + +[[static-directory-structure]] +== Static Data Inputs + +reqstool looks for the following files in the location provided as an argument: + +[listing] +---- +requirements/ + manual_verification_results.yml <.> + requirements.yml <.> + reqstool_config.yml <.> + software_verification_cases.yml <.> +---- +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/manual_verification_results.yml[manual_verification_results.yml example] | https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/manual_verification_results.schema.json[JSON Schema] +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/requirements.yml[requirements.yml example] | https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/requirements.schema.json[JSON Schema] +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/reqstool_config.yml[reqstool_config.yml example] | https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/reqstool_config.schema.json[JSON Schema] +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/software_verification_cases.yml[software_verification_cases.yml example] | https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/software_verification_cases.schema.json[JSON Schema] + +For example: + +[source,bash] +---- +reqstool report-asciidoc local -p /home/ms001/requirements +---- + +reqstool will look for the files above in the folder specified by the `-p` argument. + +[[dynamic-directory-structure]] +== Dynamic Data Inputs + +Dynamic files (annotations and test results) are generated during the build process. Their location varies by ecosystem. A custom layout can be specified in xref:files-and-directories.adoc#reqstool_config[reqstool_config.yml]. + +== Artifact Structures by Ecosystem + +Each ecosystem produces a different artifact structure that reqstool can consume. + +[[java-artifact-structure]] +=== Java + +==== Build Output (Maven) + +After building a Maven project, dynamic files reside in the `target` directory: + +[listing] +---- +target/ + failsafe-reports/ <.> + surefire-reports/ <.> + generated-sources/ + annotations/ + resources/ + annotations.yml <.> + generated-test-sources/ + test-annotations/ + resources/ + annotations.yml <.> +---- +<.> Integration test reports (Failsafe) +<.> Unit test reports (Surefire) +<.> Requirements annotations -- see https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/annotations.schema.json[JSON Schema] +<.> SVCs annotations -- see https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/annotations.schema.json[JSON Schema] + +==== Maven Artifact (ZIP) + +The https://github.com/reqstool/reqstool-java-maven-plugin[reqstool Java Maven Plugin] packages static and dynamic files into a zip artifact (`--reqstool.zip`) during the build. The plugin combines `svcs_annotations.yml` and `requirements_annotations.yml` into a single `annotations.yml`. + +The published artifact has this structure: + +[listing] +---- +requirements/ + manual_verification_results.yml <.> + requirements.yml <.> + annotations.yml <.> + reqstool_config.yml <.> + software_verification_cases.yml <.> + test_results/ + failsafe/ <.> + surefire/ <.> +---- +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/manual_verification_results.yml[example] +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/requirements.yml[example] +<.> Combined annotations -- see https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/annotations.schema.json[JSON Schema] +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/reqstool_config.yml[example] +<.> See https://github.com/reqstool/reqstool-demo/blob/main/docs/reqstool/software_verification_cases.yml[example] +<.> Integration test reports (Failsafe) +<.> Unit test reports (Surefire) + +For Gradle projects, the https://github.com/reqstool/reqstool-java-gradle-plugin[reqstool Java Gradle Plugin] produces an equivalent artifact structure. + +[[python-artifact-structure]] +=== Python + +==== Build Output (Hatch/Poetry) + +After building a Hatch or Poetry project, dynamic files reside in the `build` directory: + +[listing] +---- +build/ + reqstool/ + annotations.yml <.> +---- +<.> Generated annotations -- see https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/annotations.schema.json[JSON Schema] + +==== PyPI Package (tar.gz) + +The https://github.com/reqstool/reqstool-python-hatch-plugin[reqstool Python Hatch Plugin] or https://github.com/reqstool/reqstool-python-poetry-plugin[reqstool Python Poetry Plugin] adds a custom `reqstool_config.yml` to the tar.gz with paths based on the package structure. + +The published package has this structure: + +[listing] +---- +-/ + build/ + reqstool/ + annotations.yml + test_results.xml + reqstool/ + manual_verification_results.yml + requirements.yml + reqstool_config.yml + software_verification_cases.yml + src/ + tests/ + reqstool_config.yml <.> +---- +<.> Generated custom reqstool_config.yml -- see https://github.com/reqstool/reqstool-client/blob/main/src/reqstool/resources/schemas/v1/reqstool_config.schema.json[JSON Schema] + +[[typescript-artifact-structure]] +=== TypeScript + +The https://github.com/reqstool/reqstool-typescript-tags[reqstool TypeScript Tags] processor scans TypeScript source files for annotation tags and generates an `annotations.yml` file. See the project documentation for details on the output structure. + +== Variant Data Matrix + +|=== +| Variant | Requirements | Annotations (implementation) | Annotations (tests) | Software Verification Cases | Automated Tests | Manual Verification Results + +| Microservice | yes | yes | yes | yes | yes | yes +| System | yes | no | yes | yes | yes | yes +| External | yes | no | no | no | no | no +|=== + +== Imports + +Requirements and software verification cases can be imported from other sources via the `imports` attribute in `requirements.yml`. Imports can be combined with <>. + +=== Local Import + +Import from another source on the local file system: + +.requirements.yml +[source,yaml] +---- +imports: + local: + - path: ../sys-001 +---- + +=== Git Import + +Import from a Git repository. The optional `env_token` field specifies an environment variable containing an authentication token. If no authentication is required, `env_token` can be omitted. + +.requirements.yml +[source,yaml] +---- +imports: + git: + - url: https://github.com/reqstool/reqstool-demo + branch: main + path: docs/reqstool + env_token: SECRET_TOKEN +---- + +=== Maven Import + +Import from a Maven repository: + +.requirements.yml +[source,yaml] +---- +imports: + maven: + - url: https://maven.pkg.github.com/reqstool/reqstool-client + group_id: se.lfv.reqstool.testdata + artifact_id: reqstool-testdata-test-basic-ms101 + path: "" + version: 0.0.2 +---- + +=== PyPI Import + +Import from a PyPI package: + +.requirements.yml +[source,yaml] +---- +imports: + pypi: + - env_token: PYPI_TOKEN + url: https://pypi.org/project/reqstool/ + package: reqstool + version: 0.4.7 +---- + +=== Mixed Import Sources + +It is also possible to import from multiple source types: + +.requirements.yml +[source,yaml] +---- +imports: + local: + - path: ../sys-001 + git: + - url: https://github.com/reqstool/reqstool-demo + branch: main + path: docs/reqstool +---- + +[[filters]] +== Filters + +Filters can be applied in both `requirements.yml` and `software_verification_cases.yml` to include or exclude specific items. + +.requirements.yml +[source,yaml] +---- +filters: + sys-001: + requirement_ids: + includes: + - REQ_sys001_103 + - ext-001:REQ_ext001_101 +---- + +.software_verification_cases.yml +[source,yaml] +---- +filters: + sys-001: + svc_ids: + includes: + - SVC_sys001_101 + - SVC_sys001_109 +---- + +== Categories + +A requirement is assigned to one or multiple categories. + +.requirements.yml +[source,yaml] +---- +requirements: + - id: REQ_ms001_101 + title: Title REQ_ms001_101 + significance: may + description: Description REQ_ms001_101 + rationale: Rationale REQ_ms001_101 + categories: ["maintainability", "functional-suitability"] + revision: 0.0.1 +---- + +Categories follow the https://iso25000.com/index.php/en/iso-25000-standards/iso-25010[ISO 25010 Product Quality Characteristics]. + +=== ISO 25010 Product Quality Characteristics + +* **Functional Suitability:** Assesses the degree to which the software provides appropriate functions that meet specified needs under specified conditions. + +* **Performance Efficiency:** Evaluates the degree to which the software provides appropriate performance relative to the amount of resources used under specified conditions. + +* **Compatibility:** Assesses the degree to which the software can exchange information and work together with other systems, products, or environments. + +* **Interaction Capability:** Describes to which degree a product or system can be interacted with by specified users to exchange information. + +* **Reliability:** The degree to which the software performs specified functions under specified conditions without failure for a specified period of time. + +* **Security:** The degree to which the software protects information and data from unauthorized access, disclosure, alteration, or destruction. + +* **Maintainability:** Evaluates the degree to which the software can be modified effectively and efficiently without introducing defects or degrading performance. + +* **Flexibility:** Assesses the degree to which the software can be transferred from one environment to another, including the necessary adaptation effort. + +* **Safety:** The degree to which a product under defined conditions avoids a state in which human life, health, property, or the environment is endangered. diff --git a/docs/modules/ROOT/pages/files-and-directories.adoc b/docs/modules/ROOT/pages/files-and-directories.adoc new file mode 100644 index 0000000..29cbd9f --- /dev/null +++ b/docs/modules/ROOT/pages/files-and-directories.adoc @@ -0,0 +1,143 @@ += Standard Files and Directory Sets + +All files have a JSON Schema: https://github.com/reqstool/reqstool-client/tree/main/src/reqstool/resources/schemas/v1 + +For examples see: + +* https://github.com/reqstool/reqstool-demo/tree/main/docs/reqstool[reqstool-demo project] +* unit tests: https://github.com/reqstool/reqstool-client/tree/main/tests/resources/test_data/data/local[test data] + +[[reqstool_config]] +== file: reqstool_config.yml +Contains file and directory configuration used by `reqstool`. + +The layout of files and directories for a project depends on the language and build tool. The table below shows the default paths that reqstool uses when only `language` and `build` are specified: + +[cols="1,1,2,2"] +|=== +| Language | Build Tool | Static files (requirements, SVCs, MVRs) | Dynamic files (annotations, test results) + +| Java +| Maven +| `./reqstool/` +| `../../target/` (relative to static files) + +| Java +| Gradle +| `./reqstool/` +| `../../build/` (relative to static files) + +| Python +| Hatch +| `docs/reqstool/` +| `../../build/` (relative to static files) + +| Python +| Poetry +| `docs/reqstool/` +| `../../build/` (relative to static files) +|=== + +These defaults are applied by the build plugins. They are configurable -- see each plugin's documentation for details. + +If no `reqstool_config.yml` file is present, reqstool will expect all files and folders (including dynamic ones) to reside in the path provided to the `-p` argument. This works well with a xref:data.adoc#java-artifact-structure[Maven zip artifact] or xref:data.adoc#python-artifact-structure[PyPI package]. + +A minimal `reqstool_config.yml` only needs to specify language and build tool: + +[source,yaml] +---- +# yaml-language-server: $schema=https://raw.githubusercontent.com/reqstool/reqstool-client/main/src/reqstool/resources/schemas/v1/reqstool_config.schema.json + +language: java +build: maven +---- + +Below is an example with custom paths. Paths are relative to the `-p` argument provided when reqstool is run: + +[source,yaml] +---- +# yaml-language-server: $schema=https://raw.githubusercontent.com/reqstool/reqstool-client/main/src/reqstool/resources/schemas/v1/reqstool_config.schema.json + +language: java +build: maven +resources: + requirements: ../../target/some_folder/requirements.yml + software_verification_cases: ../../target/some_folder/software_verification_cases.yml + manual_verification_results: ../../target/some_folder/manual_verification_results.yml + annotations: ../../target/reqstool/annotations.yml + test_results: + - ../../target/**/*.xml +---- + +== file: requirements.yml + +Contains all the requirements. + +Below is an example of a `requirements.yml` file: + +[source,yaml] +---- +metadata: + urn: ms-101 + variant: microservice + title: Some Microservice Requirement Title + url: https://url.example.com + +requirements: + - id: REQ_101 + title: Title REQ_101 + significance: may + description: Requirement with automated test and should have no implementation + rationale: Rationale REQ_001 + categories: ["maintainability", "functional-suitability"] + implementation: N/A + lifecycle: + state: obsolete + reason: Superseded by REQ_102 + revision: 0.0.1 +---- + +The `metadata` section is required to describe the application. + +In the `requirements` section, an array of requirements can be specified. + +=== Required fields + +* `id` -- Must be unique within the project. +* `title` -- A title of the requirement. +* `significance` -- Could be `shall`, `should`, or `may`. +* `description` -- Short text to describe the requirement. +* `categories` -- Which categories the requirement relates to. +* `revision` -- In which version the requirement was introduced. + +=== Optional fields + +* `rationale` -- Why this requirement is important. +* `implementation` -- If this requirement requires a source code implementation or not. Acceptable values: `in-code` or `N/A`. Defaults to `in-code` if omitted. +* `lifecycle` -- Provides four options: `draft`, `effective`, `obsolete`, `deprecated`. Defaults to `effective` if omitted. If set to `obsolete` or `deprecated`, reqstool will issue a warning during parsing when referenced in code or by other requirements, SVCs, or MVRs. + +== file: software_verification_cases.yml + +Contains information about how specific requirements should be verified. + +One of the fields to be set on a software verification case is the verification type which can be selected from five pre-defined values: `automated-test`, `manual-test`, `review`, `platform`, `other`. + +All but `automated-test` expect at least one manual verification entry for that particular software verification case. The `automated-test` value expects at least one automated test to exist and preferably pass. + +== file: manual_verification_results.yml + +Contains information and the result of a manual verification case. + +== file: requirement_annotations.yml + +Typically generated by an annotations parser and lists all requirement annotations. + +== file: svcs_annotations.yml + +Typically generated by an annotations parser and lists all software verification cases annotations. + +== file: annotations.yml + +Lists all annotations, containing both requirements and software verification cases annotations. + +Generated by default by the Python decorators parser. For Java projects, the Maven and Gradle plugins combine `requirements_annotations.yml` and `svcs_annotations.yml` into this file. From ee4495321225f9a886630fdff556a444e424e88c Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 19:12:17 +0100 Subject: [PATCH 8/9] fix: correct supplemental_files path resolution in playbooks Antora resolves paths starting with '..' relative to CWD, not the playbook directory. Use './../supplemental-ui' (dot-prefixed) so the path resolves via the playbook dir instead. Use cached UI bundle for local playbook to avoid network dependency. Signed-off-by: jimisola --- docs/antora-playbook.yml | 2 +- docs/local-antora-playbook.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/antora-playbook.yml b/docs/antora-playbook.yml index 55a80c0..4207d24 100644 --- a/docs/antora-playbook.yml +++ b/docs/antora-playbook.yml @@ -65,4 +65,4 @@ ui: bundle: url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable snapshot: true - supplemental_files: ../supplemental-ui + supplemental_files: ./../supplemental-ui diff --git a/docs/local-antora-playbook.yml b/docs/local-antora-playbook.yml index c82df56..e648af3 100644 --- a/docs/local-antora-playbook.yml +++ b/docs/local-antora-playbook.yml @@ -64,6 +64,6 @@ asciidoc: ui: bundle: - url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable - snapshot: true - supplemental_files: ../supplemental-ui + url: ./../.cache/antora/ui-bundle.zip + snapshot: false + supplemental_files: ./../supplemental-ui From 59b150e347d5f7162e964f74d3a31de083e904d6 Mon Sep 17 00:00:00 2001 From: Jimisola Laursen Date: Sat, 7 Mar 2026 19:34:39 +0100 Subject: [PATCH 9/9] docs: update Java versions for maven and gradle plugins to 21+ Signed-off-by: jimisola --- docs/modules/ROOT/pages/components.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/pages/components.adoc b/docs/modules/ROOT/pages/components.adoc index 8963a05..c249419 100644 --- a/docs/modules/ROOT/pages/components.adoc +++ b/docs/modules/ROOT/pages/components.adoc @@ -26,12 +26,12 @@ | xref:reqstool-java-maven-plugin::index.adoc[Maven Plugin] | Maven build plugin for assembling reqstool ZIP artifacts -| Java 8+ +| Java 21+ | https://central.sonatype.com/search?q=io.github.reqstool[Maven Central] | xref:reqstool-java-gradle-plugin::index.adoc[Gradle Plugin] | Gradle build plugin for assembling reqstool ZIP artifacts -| Java 17+ +| Java 21+ | https://plugins.gradle.org/plugin/io.github.reqstool.gradle-plugin[Gradle Plugin Portal] |===