diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f9c648c5..d98a8565 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,6 +5,7 @@ repos: - id: terraform_docs args: - --args=--config=.terraform-docs.yml + files: ^modules/[^/]+/[^/]+/.+\.tf$ # Only run on .tf files in modules/*/*/ directories - id: terraform_fmt - id: terragrunt_fmt - repo: https://github.com/pre-commit/pre-commit-hooks diff --git a/.terraform-docs.yml b/.terraform-docs.yml index e15cb266..865828f8 100644 --- a/.terraform-docs.yml +++ b/.terraform-docs.yml @@ -4,7 +4,6 @@ version: "" recursive: enabled: false - path: kit content: "" diff --git a/README.md b/README.md index 43a7ba21..bb364071 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,10 @@ AWS S3 Module – Provision S3 buckets with encryption and logging. All Terraform modules are listed in the `modules/` directory. This directory is split into subdirectories for each platform. In a platform's directory, you will find all modules that are available for that platform. +Additionally, you might also find a `meshstack_integration.tf` and `README.md` file in a platform +directory. These allow you to integrate a given platform directly with meshStack. + +``` A single module is structured as follows: diff --git a/index.ts b/index.ts index e143216c..bb15ec39 100644 --- a/index.ts +++ b/index.ts @@ -3,6 +3,9 @@ const path = require("path"); const matter = require("gray-matter"); const { execSync } = require("child_process"); +const repoRoot = path.resolve(__dirname, "modules"); +const assetsDir = path.resolve(__dirname, "website/public/assets/logos"); + function getGitHubRemoteUrl() { try { const remoteUrl = execSync("git config --get remote.origin.url") @@ -38,44 +41,76 @@ function findReadmes(dir){ }); } -function copyFilesToAssets( - sourceDir, - destinationDir, - fileFilter -){ - const copiedFiles = {}; +function findPlatforms(): Platform[] { + fs.mkdirSync(assetsDir, { recursive: true }); - fs.readdirSync(sourceDir, { withFileTypes: true }) + return fs.readdirSync(repoRoot, { withFileTypes: true }) .filter((dirent) => dirent.isDirectory() && dirent.name !== ".github") - .forEach((dir) => { - const platformDir = path.join(sourceDir, dir.name); - fs.readdirSync(platformDir) - .filter(fileFilter) - .forEach((file) => { - const sourcePath = path.join(platformDir, file); - const destinationPath = path.join( - destinationDir, - `${dir.name}${path.extname(file)}` - ); - - fs.mkdirSync(destinationDir, { recursive: true }); - fs.copyFileSync(sourcePath, destinationPath); - - copiedFiles[dir.name] = destinationPath - .replace(path.resolve(__dirname, "website/public"), "") - .replace(/^\/+/g, ""); - }); + .map((dir) => { + const platformDir: string = path.join(repoRoot, dir.name); + const platformLogo = getPlatformLogoOrThrow(platformDir, dir.name); + const platformReadme = getPlatformReadmeOrThrow(platformDir); + const { name, description, content } = extractReadmeFrontMatter(platformReadme); + const terraformSnippet = getTerraformSnippet(platformDir); + + return { + platformType: dir.name, + name, + description, + logo: platformLogo, + readme: content, + terraformSnippet + }; }); +} - return copiedFiles; +// Finds the logo, copies it to website assets and returns the path. +function getPlatformLogoOrThrow(platformDir: string, platformType: string): string { + const logoFile = fs.readdirSync(platformDir).find(f => f.endsWith('.png') || f.endsWith('.svg')); + if (logoFile) { + const sourcePath = path.join(platformDir, logoFile); + const destPath = path.join(assetsDir, `${platformType}${path.extname(logoFile)}`); + fs.copyFileSync(sourcePath, destPath); + return destPath.replace(path.resolve(__dirname, "website/public"), "").replace(/^\/+/g, ""); + } + + throw new Error(`Logo file not found for platform: ${platformType} in directory: ${platformDir}. Each platform should have a logo.`); } -function copyPlatformLogosToAssets() { - const modulesDir = path.resolve(__dirname, "modules"); - const assetsDir = path.resolve(__dirname, "website/public/assets/logos"); - return copyFilesToAssets(modulesDir, assetsDir, (file) => - file.endsWith(".png") || file.endsWith(".svg") - ); +function getPlatformReadmeOrThrow(platformDir: string) { + try { + return fs.readFileSync(path.join(platformDir, "README.md"), "utf-8"); + } catch { + throw new Error('Platform README.md not found. Each platform should have a README.md file.'); + } +} + +function extractReadmeFrontMatter(platformReadme: string): { name: string; description: string; content: string } { + const { data, content } = matter(platformReadme); + + const name = data.name; + if (!name) { + throw new Error('Property "name" is missing in the front matter of the platform README.md. Each platform README.md should have a name defined in the front matter.'); + } + + const description = data.description; + if (!description) { + throw new Error('Property "description" is missing in the front matter of the platform README.md. Each platform README.md should have a description defined in the front matter.'); + } + + return { + name, + description, + content + } +} + +function getTerraformSnippet(platformDir: string): string | null { + try { + return fs.readFileSync(path.join(platformDir, "meshstack_integration.tf"), "utf-8") + } catch { + return null; + } } function copyBuildingBlockLogoToAssets(buildingBlockDir) { @@ -161,15 +196,13 @@ function getIdAndPlatform(filePath) { // Main execution function main() { - const repoRoot = path.resolve(__dirname, "modules"); - - const platformLogos = copyPlatformLogosToAssets(); + const platforms = findPlatforms(); fs.writeFileSync( - "website/public/assets/platform-logos.json", - JSON.stringify(platformLogos, null, 2) + "website/public/assets/platform.json", + JSON.stringify(platforms, null, 2) ); console.log( - `✅ Successfully processed ${Object.entries(platformLogos).length} platform logos. Output saved to platform-logos.json` + `✅ Successfully processed ${platforms.length} platforms. Output saved to platform.json` ); const readmeFiles = findReadmes(repoRoot); @@ -184,3 +217,12 @@ function main() { } main(); + +export interface Platform { + platformType: string; + name: string; + description: string; + logo: string; + readme: string; + terraformSnippet?: string; +} diff --git a/modules/aks/README.md b/modules/aks/README.md new file mode 100644 index 00000000..430b2a97 --- /dev/null +++ b/modules/aks/README.md @@ -0,0 +1,7 @@ +--- +name: Azure Kubernetes Service +description: Managed Kubernetes service on Azure +category: hyperscaler +--- + +A meshStack integration of AKS allows you to automatically provision and manage Kubernetes namespaces for meshStack projects, enforce policies and enable secure authentication for your AKS workloads, and track usage to enable billing across namespaces. diff --git a/modules/aws/README.md b/modules/aws/README.md new file mode 100644 index 00000000..6725967a --- /dev/null +++ b/modules/aws/README.md @@ -0,0 +1,7 @@ +--- +name: Amazon Web Services +description: Scalable cloud computing platform by Amazon +category: hyperscaler +--- + +meshStack integration with AWS enables automated account provisioning, policy enforcement, and unified billing for AWS resources across your organization. diff --git a/modules/azure/README.md b/modules/azure/README.md new file mode 100644 index 00000000..d6480a5f --- /dev/null +++ b/modules/azure/README.md @@ -0,0 +1,7 @@ +--- +name: Microsoft Azure +description: Cloud computing platform and services by Microsoft +category: hyperscaler +--- + +meshStack integration with Azure streamlines subscription management, enforces governance, and enables cost tracking for Azure resources in your organization. diff --git a/modules/azuredevops/README.md b/modules/azuredevops/README.md new file mode 100644 index 00000000..c0dddb08 --- /dev/null +++ b/modules/azuredevops/README.md @@ -0,0 +1,7 @@ +--- +name: Azure DevOps +description: Developer services for support teams to plan, build, and ship software +category: devops +--- + +meshStack integration with Azure DevOps automates project and repository setup, ensuring consistent governance and access management for your development workflows. diff --git a/modules/cloudfoundry/README.md b/modules/cloudfoundry/README.md new file mode 100644 index 00000000..22635dd0 --- /dev/null +++ b/modules/cloudfoundry/README.md @@ -0,0 +1,7 @@ +--- +name: Cloud Foundry +description: Open source cloud application platform +category: private-cloud +--- + +meshStack integration with Cloud Foundry automates org and space provisioning, policy enforcement, and enables usage-based billing for your cloud-native applications. diff --git a/modules/datadog/README.md b/modules/datadog/README.md new file mode 100644 index 00000000..a19e6ccb --- /dev/null +++ b/modules/datadog/README.md @@ -0,0 +1,7 @@ +--- +name: Datadog +description: Monitoring and security platform for cloud applications +category: devops +--- + +meshStack integration with Datadog enables automated account management and unified monitoring setup for your cloud environments. diff --git a/modules/gcp/README.md b/modules/gcp/README.md new file mode 100644 index 00000000..e1b2da05 --- /dev/null +++ b/modules/gcp/README.md @@ -0,0 +1,7 @@ +--- +name: Google Cloud Platform +description: Suite of cloud computing services by Google +category: hyperscaler +--- + +meshStack integration with GCP automates project provisioning, policy enforcement, and cost tracking for Google Cloud resources across your organization. diff --git a/modules/github/README.md b/modules/github/README.md new file mode 100644 index 00000000..b5d16710 --- /dev/null +++ b/modules/github/README.md @@ -0,0 +1,7 @@ +--- +name: GitHub +description: Code hosting platform for version control and collaboration +category: devops +--- + +meshStack integration with GitHub automates repository creation and access management, ensuring secure and consistent collaboration for your teams. diff --git a/modules/ionos/README.md b/modules/ionos/README.md new file mode 100644 index 00000000..07f63fee --- /dev/null +++ b/modules/ionos/README.md @@ -0,0 +1,7 @@ +--- +name: IONOS Cloud +description: European cloud infrastructure and hosting provider +category: european +--- + +meshStack integration with IONOS automates resource provisioning and governance, enabling secure and compliant cloud usage for your organization. diff --git a/modules/kubernetes/README.md b/modules/kubernetes/README.md new file mode 100644 index 00000000..176414b5 --- /dev/null +++ b/modules/kubernetes/README.md @@ -0,0 +1,7 @@ +--- +name: Kubernetes +description: Open-source system for automating deployment, scaling, and management of containerized applications +category: devops +--- + +meshStack integration with Kubernetes automates namespace management, policy enforcement, and enables secure access for your container workloads. diff --git a/modules/oci/README.md b/modules/oci/README.md new file mode 100644 index 00000000..9bea95af --- /dev/null +++ b/modules/oci/README.md @@ -0,0 +1,7 @@ +--- +name: Oracle Cloud Infrastructure +description: Cloud computing services platform by Oracle +category: hyperscaler +--- + +meshStack integration with Oracle Cloud Infrastructure (OCI) automates tenancy and compartment provisioning, enforces governance, and enables unified billing for your OCI resources. diff --git a/modules/openshift/README.md b/modules/openshift/README.md new file mode 100644 index 00000000..049f156d --- /dev/null +++ b/modules/openshift/README.md @@ -0,0 +1,7 @@ +--- +name: OpenShift +description: Enterprise Kubernetes platform by Red Hat +category: private-cloud +--- + +meshStack integration with OpenShift automates project and namespace provisioning, enforces policies, and enables cost tracking for your containerized applications. diff --git a/modules/openstack/README.md b/modules/openstack/README.md new file mode 100644 index 00000000..1875e1c9 --- /dev/null +++ b/modules/openstack/README.md @@ -0,0 +1,7 @@ +--- +name: OpenStack +description: Open source cloud computing platform for public and private clouds +category: private-cloud +--- + +meshStack integration with OpenStack automates project and resource management, enforces governance, and enables unified billing for your cloud infrastructure. diff --git a/modules/ovh/README.md b/modules/ovh/README.md new file mode 100644 index 00000000..eebbbc76 --- /dev/null +++ b/modules/ovh/README.md @@ -0,0 +1,7 @@ +--- +name: OVHcloud +description: European cloud computing and hosting provider +category: european +--- + +meshStack integration with OVHcloud automates resource provisioning, governance, and cost tracking for your cloud environments. diff --git a/modules/sapbtp/README.md b/modules/sapbtp/README.md new file mode 100644 index 00000000..c7183890 --- /dev/null +++ b/modules/sapbtp/README.md @@ -0,0 +1,7 @@ +--- +name: SAP Business Technology Platform +description: Integrated offering for data management, analytics, and application development +category: european +--- + +meshStack integration with SAP BTP automates subaccount management, policy enforcement, and enables unified billing for your SAP cloud services. diff --git a/modules/stackit/README.md b/modules/stackit/README.md new file mode 100644 index 00000000..7bc58f0d --- /dev/null +++ b/modules/stackit/README.md @@ -0,0 +1,7 @@ +--- +name: STACKIT +description: European cloud platform by Schwarz Group +category: european +--- + +meshStack integration with STACKIT automates project provisioning, governance, and cost tracking for your cloud workloads. diff --git a/modules/tencentcloud/README.md b/modules/tencentcloud/README.md new file mode 100644 index 00000000..1221f528 --- /dev/null +++ b/modules/tencentcloud/README.md @@ -0,0 +1,7 @@ +--- +name: Tencent Cloud +description: Cloud computing services by Tencent +category: china +--- + +meshStack integration with Tencent Cloud automates resource provisioning, policy enforcement, and enables unified billing for your cloud resources. diff --git a/package-lock.json b/package-lock.json index 24f7ba6f..2dad6e04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,19 @@ "license": "MIT", "dependencies": { "gray-matter": "^4.0.3" + }, + "devDependencies": { + "@types/node": "^25.2.0" + } + }, + "node_modules/@types/node": { + "version": "25.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", + "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" } }, "node_modules/esprima": { @@ -116,6 +129,13 @@ "engines": { "node": ">=0.10.0" } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" } } } diff --git a/package.json b/package.json index 303d64cf..41a610a3 100644 --- a/package.json +++ b/package.json @@ -2,5 +2,8 @@ "license": "MIT", "dependencies": { "gray-matter": "^4.0.3" + }, + "devDependencies": { + "@types/node": "^25.2.0" } } diff --git a/website/.gitignore b/website/.gitignore index 6181850f..61c6e67f 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -40,3 +40,9 @@ testem.log # System files .DS_Store Thumbs.db + +# Files generated by index.ts +/public/assets/building-block-logos +/public/assets/logos +/public/assets/platform.json +/public/assets/templates.json diff --git a/website/package.json b/website/package.json index e39009c3..e8546b7f 100644 --- a/website/package.json +++ b/website/package.json @@ -34,6 +34,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^50.6.8", "express": "^4.18.2", + "marked": "^15.0.12", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" diff --git a/website/public/assets/building-block-logos/aks-github-connector.png b/website/public/assets/building-block-logos/aks-github-connector.png deleted file mode 100644 index 47f4f62f..00000000 Binary files a/website/public/assets/building-block-logos/aks-github-connector.png and /dev/null differ diff --git a/website/public/assets/building-block-logos/aks-postgresql.png b/website/public/assets/building-block-logos/aks-postgresql.png deleted file mode 100644 index b360079f..00000000 Binary files a/website/public/assets/building-block-logos/aks-postgresql.png and /dev/null differ diff --git a/website/public/assets/building-block-logos/aws-s3_bucket.png b/website/public/assets/building-block-logos/aws-s3_bucket.png deleted file mode 100644 index e31ad968..00000000 Binary files a/website/public/assets/building-block-logos/aws-s3_bucket.png and /dev/null differ diff --git a/website/public/assets/building-block-logos/azure-budget-alert.png b/website/public/assets/building-block-logos/azure-budget-alert.png deleted file mode 100644 index e7489ca3..00000000 Binary files a/website/public/assets/building-block-logos/azure-budget-alert.png and /dev/null differ diff --git a/website/public/assets/building-block-logos/azure-key-vault.png b/website/public/assets/building-block-logos/azure-key-vault.png deleted file mode 100644 index 9ee9c2b1..00000000 Binary files a/website/public/assets/building-block-logos/azure-key-vault.png and /dev/null differ diff --git a/website/public/assets/building-block-logos/azure-postgresql.png b/website/public/assets/building-block-logos/azure-postgresql.png deleted file mode 100644 index be52c23c..00000000 Binary files a/website/public/assets/building-block-logos/azure-postgresql.png and /dev/null differ diff --git a/website/public/assets/building-block-logos/github-repository.png b/website/public/assets/building-block-logos/github-repository.png deleted file mode 100644 index 94777fd7..00000000 Binary files a/website/public/assets/building-block-logos/github-repository.png and /dev/null differ diff --git a/website/public/assets/logos/aks.png b/website/public/assets/logos/aks.png deleted file mode 100644 index 9352d24c..00000000 Binary files a/website/public/assets/logos/aks.png and /dev/null differ diff --git a/website/public/assets/logos/aks.svg b/website/public/assets/logos/aks.svg deleted file mode 100644 index 2e597c43..00000000 --- a/website/public/assets/logos/aks.svg +++ /dev/null @@ -1 +0,0 @@ -Icon-compute-23 \ No newline at end of file diff --git a/website/public/assets/logos/aws.png b/website/public/assets/logos/aws.png deleted file mode 100644 index 158abc89..00000000 Binary files a/website/public/assets/logos/aws.png and /dev/null differ diff --git a/website/public/assets/logos/aws.svg b/website/public/assets/logos/aws.svg deleted file mode 100644 index 4715937f..00000000 --- a/website/public/assets/logos/aws.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - diff --git a/website/public/assets/logos/azure.png b/website/public/assets/logos/azure.png deleted file mode 100644 index fd128627..00000000 Binary files a/website/public/assets/logos/azure.png and /dev/null differ diff --git a/website/public/assets/logos/azure.svg b/website/public/assets/logos/azure.svg deleted file mode 100644 index 71d042af..00000000 --- a/website/public/assets/logos/azure.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/website/public/assets/logos/azuredevops.svg b/website/public/assets/logos/azuredevops.svg deleted file mode 100644 index 3d4a462f..00000000 --- a/website/public/assets/logos/azuredevops.svg +++ /dev/null @@ -1 +0,0 @@ -Icon-devops-261 \ No newline at end of file diff --git a/website/public/assets/logos/cloudfoundry.png b/website/public/assets/logos/cloudfoundry.png deleted file mode 100644 index 620a4099..00000000 Binary files a/website/public/assets/logos/cloudfoundry.png and /dev/null differ diff --git a/website/public/assets/logos/datadog.png b/website/public/assets/logos/datadog.png deleted file mode 100644 index 5d5589cf..00000000 Binary files a/website/public/assets/logos/datadog.png and /dev/null differ diff --git a/website/public/assets/logos/gcp.png b/website/public/assets/logos/gcp.png deleted file mode 100644 index 5fcee5ca..00000000 Binary files a/website/public/assets/logos/gcp.png and /dev/null differ diff --git a/website/public/assets/logos/github.png b/website/public/assets/logos/github.png deleted file mode 100644 index 9490ffc6..00000000 Binary files a/website/public/assets/logos/github.png and /dev/null differ diff --git a/website/public/assets/logos/ionos.png b/website/public/assets/logos/ionos.png deleted file mode 100644 index 8dfae889..00000000 Binary files a/website/public/assets/logos/ionos.png and /dev/null differ diff --git a/website/public/assets/logos/openshift.png b/website/public/assets/logos/openshift.png deleted file mode 100644 index f2c536cb..00000000 Binary files a/website/public/assets/logos/openshift.png and /dev/null differ diff --git a/website/public/assets/logos/openstack.png b/website/public/assets/logos/openstack.png deleted file mode 100644 index 84e96877..00000000 Binary files a/website/public/assets/logos/openstack.png and /dev/null differ diff --git a/website/public/assets/logos/ovh.png b/website/public/assets/logos/ovh.png deleted file mode 100644 index bebb8606..00000000 Binary files a/website/public/assets/logos/ovh.png and /dev/null differ diff --git a/website/public/assets/logos/sapbtp.png b/website/public/assets/logos/sapbtp.png deleted file mode 100644 index 89c5b4d1..00000000 Binary files a/website/public/assets/logos/sapbtp.png and /dev/null differ diff --git a/website/public/assets/logos/stackit.png b/website/public/assets/logos/stackit.png deleted file mode 100644 index d4ce3d0b..00000000 Binary files a/website/public/assets/logos/stackit.png and /dev/null differ diff --git a/website/public/assets/logos/stackit.svg b/website/public/assets/logos/stackit.svg deleted file mode 100644 index b840e102..00000000 --- a/website/public/assets/logos/stackit.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/website/public/assets/logos/tencentcloud.png b/website/public/assets/logos/tencentcloud.png deleted file mode 100644 index 50d5d914..00000000 Binary files a/website/public/assets/logos/tencentcloud.png and /dev/null differ diff --git a/website/public/assets/platform-logos.json b/website/public/assets/platform-logos.json deleted file mode 100644 index b1030f6e..00000000 --- a/website/public/assets/platform-logos.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "aks": "assets/logos/aks.svg", - "aws": "assets/logos/aws.svg", - "azure": "assets/logos/azure.svg", - "azuredevops": "assets/logos/azuredevops.svg", - "cloudfoundry": "assets/logos/cloudfoundry.png", - "datadog": "assets/logos/datadog.png", - "gcp": "assets/logos/gcp.png", - "github": "assets/logos/github.png", - "ionos": "assets/logos/ionos.png", - "kubernetes": "assets/logos/kubernetes.png", - "oci": "assets/logos/oci.png", - "openshift": "assets/logos/openshift.png", - "openstack": "assets/logos/openstack.png", - "ovh": "assets/logos/ovh.png", - "sapbtp": "assets/logos/sapbtp.png", - "stackit": "assets/logos/stackit.png", - "tencentcloud": "assets/logos/tencentcloud.png" -} \ No newline at end of file diff --git a/website/public/assets/templates.json b/website/public/assets/templates.json deleted file mode 100644 index 7e9850ef..00000000 --- a/website/public/assets/templates.json +++ /dev/null @@ -1,7599 +0,0 @@ -{ - "templates": [ - { - "id": "aks-github-connector", - "platformType": "aks", - "logo": "assets/building-block-logos/aks-github-connector.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aks/github-connector/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aks/github-connector/backplane", - "name": "GitHub Actions Integration with AKS", - "supportedPlatforms": [ - "aks" - ], - "description": "CI/CD pipeline using GitHub Actions for secure, scalable AKS deployment.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [additional\\_environment\\_variables](#input\\_additional\\_environment\\_variables)", - "type": "Map of additional environment variable key/value pairs to set as GitHub Actions environment variables.", - "required": false - }, - { - "name": "", - "description": " [github\\_environment\\_name](#input\\_github\\_environment\\_name)", - "type": "Name of the GitHub environment to use for deployments.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo](#input\\_github\\_repo)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [namespace](#input\\_namespace)", - "type": "Associated namespace in AKS.", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [additional\\_environment\\_variables](#input\\_additional\\_environment\\_variables)", - "type": "Map of additional environment variable key/value pairs to set as GitHub Actions environment variables.", - "required": false - }, - { - "name": "", - "description": " [github\\_environment\\_name](#input\\_github\\_environment\\_name)", - "type": "Name of the GitHub environment to use for deployments.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo](#input\\_github\\_repo)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [namespace](#input\\_namespace)", - "type": "Associated namespace in AKS.", - "required": false - } - ], - "outputs": [] - }, - { - "id": "aks-postgresql", - "platformType": "aks", - "logo": "assets/building-block-logos/aks-postgresql.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aks/postgresql/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aks/postgresql/backplane", - "name": "PostgreSQL Integration with AKS", - "supportedPlatforms": [ - "aks" - ], - "description": "Provides managed PostgreSQL with direct integration to AKS for secure access.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [name](#input\\_name)", - "type": "User selected part of the name.", - "required": false - }, - { - "name": "", - "description": " [namespace](#input\\_namespace)", - "type": "Associated namespace in AKS.", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "The meshStack project identifier.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "The meshStack workspace identifier.", - "required": false - }, - { - "name": "", - "description": " [secret\\_name](#output\\_secret\\_name)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [name](#input\\_name)", - "type": "User selected part of the name.", - "required": false - }, - { - "name": "", - "description": " [namespace](#input\\_namespace)", - "type": "Associated namespace in AKS.", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "The meshStack project identifier.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "The meshStack workspace identifier.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [secret\\_name](#output\\_secret\\_name)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "aks-starterkit", - "platformType": "aks", - "logo": "assets/building-block-logos/aks-starterkit.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aks/starterkit/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aks/starterkit/backplane", - "name": "AKS Starterkit", - "supportedPlatforms": [ - "aks" - ], - "description": "The AKS Starterkit provides application teams with a pre-configured Kubernetes environment. It includes two Kubernetes namespaces (dev&prod), a Git repository, a CI/CD pipeline using GitHub Actions, and a secure container registry integration.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [archive\\_repo\\_on\\_destroy](#input\\_archive\\_repo\\_on\\_destroy)", - "type": "Whether to archive github repository when destroying the terraform resource, or delete it. Defaults to true (archive).", - "required": false - }, - { - "name": "", - "description": " [creator](#input\\_creator)", - "type": "Information about the creator of the resources who will be assigned Project Admin role", - "required": false - }, - { - "name": "", - "description": " [full\\_platform\\_identifier](#input\\_full\\_platform\\_identifier)", - "type": "Full platform identifier of the AKS Namespace platform.", - "required": false - }, - { - "name": "", - "description": " [github\\_actions\\_connector\\_definition\\_version\\_uuid](#input\\_github\\_actions\\_connector\\_definition\\_version\\_uuid)", - "type": "UUID of the GitHub Actions connector building block definition version.", - "required": false - }, - { - "name": "", - "description": " [github\\_org](#input\\_github\\_org)", - "type": "GitHub organization name. Used only for display purposes.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_definition\\_uuid](#input\\_github\\_repo\\_definition\\_uuid)", - "type": "UUID of the GitHub repository building block definition.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_definition\\_version\\_uuid](#input\\_github\\_repo\\_definition\\_version\\_uuid)", - "type": "UUID of the GitHub repository building block definition version.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_input\\_repo\\_visibility](#input\\_github\\_repo\\_input\\_repo\\_visibility)", - "type": "Visibility of the GitHub repository (e.g., public, private).", - "required": false - }, - { - "name": "", - "description": " [landing\\_zone\\_dev\\_identifier](#input\\_landing\\_zone\\_dev\\_identifier)", - "type": "AKS Landing zone identifier for the development tenant.", - "required": false - }, - { - "name": "", - "description": " [landing\\_zone\\_prod\\_identifier](#input\\_landing\\_zone\\_prod\\_identifier)", - "type": "AKS Landing zone identifier for the production tenant.", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "This name will be used for the created projects, app subdomain and GitHub repository.", - "required": false - }, - { - "name": "", - "description": " [project\\_tags\\_yaml](#input\\_project\\_tags\\_yaml)", - "type": "YAML configuration for project tags that will be applied to dev and prod projects. Expected structure:
yaml
dev:
key1:
- \"value1\"
- \"value2\"
key2:
- \"value3\"
prod:
key1:
- \"value4\"
key2:
- \"value5\"
- \"value6\"
", - "required": false - }, - { - "name": "", - "description": " [repo\\_admin](#input\\_repo\\_admin)", - "type": "GitHub handle of the user who will be assigned as the repository admin. Delete building block definition input if not needed.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [dev-link](#output\\_dev-link)", - "type": "Link to the dev environment Angular app", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_url](#output\\_github\\_repo\\_url)", - "type": "URL of the created GitHub repository", - "required": false - }, - { - "name": "", - "description": " [prod-link](#output\\_prod-link)", - "type": "Link to the prod environment Angular app", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Summary with next steps and insights into created resources", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [archive\\_repo\\_on\\_destroy](#input\\_archive\\_repo\\_on\\_destroy)", - "type": "Whether to archive github repository when destroying the terraform resource, or delete it. Defaults to true (archive).", - "required": false - }, - { - "name": "", - "description": " [creator](#input\\_creator)", - "type": "Information about the creator of the resources who will be assigned Project Admin role", - "required": false - }, - { - "name": "", - "description": " [full\\_platform\\_identifier](#input\\_full\\_platform\\_identifier)", - "type": "Full platform identifier of the AKS Namespace platform.", - "required": false - }, - { - "name": "", - "description": " [github\\_actions\\_connector\\_definition\\_version\\_uuid](#input\\_github\\_actions\\_connector\\_definition\\_version\\_uuid)", - "type": "UUID of the GitHub Actions connector building block definition version.", - "required": false - }, - { - "name": "", - "description": " [github\\_org](#input\\_github\\_org)", - "type": "GitHub organization name. Used only for display purposes.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_definition\\_uuid](#input\\_github\\_repo\\_definition\\_uuid)", - "type": "UUID of the GitHub repository building block definition.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_definition\\_version\\_uuid](#input\\_github\\_repo\\_definition\\_version\\_uuid)", - "type": "UUID of the GitHub repository building block definition version.", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_input\\_repo\\_visibility](#input\\_github\\_repo\\_input\\_repo\\_visibility)", - "type": "Visibility of the GitHub repository (e.g., public, private).", - "required": false - }, - { - "name": "", - "description": " [landing\\_zone\\_dev\\_identifier](#input\\_landing\\_zone\\_dev\\_identifier)", - "type": "AKS Landing zone identifier for the development tenant.", - "required": false - }, - { - "name": "", - "description": " [landing\\_zone\\_prod\\_identifier](#input\\_landing\\_zone\\_prod\\_identifier)", - "type": "AKS Landing zone identifier for the production tenant.", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "This name will be used for the created projects, app subdomain and GitHub repository.", - "required": false - }, - { - "name": "", - "description": " [project\\_tags\\_yaml](#input\\_project\\_tags\\_yaml)", - "type": "YAML configuration for project tags that will be applied to dev and prod projects. Expected structure:
yaml
dev:
key1:
- \"value1\"
- \"value2\"
key2:
- \"value3\"
prod:
key1:
- \"value4\"
key2:
- \"value5\"
- \"value6\"
", - "required": false - }, - { - "name": "", - "description": " [repo\\_admin](#input\\_repo\\_admin)", - "type": "GitHub handle of the user who will be assigned as the repository admin. Delete building block definition input if not needed.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "n/a", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [dev-link](#output\\_dev-link)", - "type": "Link to the dev environment Angular app", - "required": false - }, - { - "name": "", - "description": " [github\\_repo\\_url](#output\\_github\\_repo\\_url)", - "type": "URL of the created GitHub repository", - "required": false - }, - { - "name": "", - "description": " [prod-link](#output\\_prod-link)", - "type": "Link to the prod environment Angular app", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Summary with next steps and insights into created resources", - "required": false - } - ] - }, - { - "id": "aws-agentic-coding-sandbox", - "platformType": "aws", - "logo": "assets/building-block-logos/aws-agentic-coding-sandbox.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/agentic-coding-sandbox/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/agentic-coding-sandbox/backplane", - "name": "Agentic Coding Sandbox", - "supportedPlatforms": [ - "aws" - ], - "description": "A composition building block that provides developers with a sandboxed AWS environment\nto access agentic coding tools like Claude via AWS Bedrock, with automatic budget alerts\nand region enablement for AI model access.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [budget\\_amount](#input\\_budget\\_amount)", - "type": "Monthly budget amount. You will receive an alert when the budget is exceeded.", - "required": false - }, - { - "name": "", - "description": " [composition\\_config\\_yaml](#input\\_composition\\_config\\_yaml)", - "type": "YAML configuration for landing zone and building blocks. Expected structure:
yaml
landing_zone:
landing_zone_identifier: \"my-landing-zone\"
platform_identifier: \"my-platform\"
budget_alert_building_block:
definition_uuid: \"uuid-here\"
definition_version: 1
enable_eu_south_2_region_building_block:
definition_uuid: \"uuid-here\"
definition_version: 1
project:
default_tags:
environment: \"sandbox\"
cost_center: \"engineering\"
owner_tag_key: \"project_owner\" # optional, if not set no project owner tag will be set
", - "required": false - }, - { - "name": "", - "description": " [username](#input\\_username)", - "type": "meshStack username of the project contact. This should be an email.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "Identifier for the owning workspace", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [budget\\_amount](#input\\_budget\\_amount)", - "type": "Monthly budget amount. You will receive an alert when the budget is exceeded.", - "required": false - }, - { - "name": "", - "description": " [composition\\_config\\_yaml](#input\\_composition\\_config\\_yaml)", - "type": "YAML configuration for landing zone and building blocks. Expected structure:
yaml
landing_zone:
landing_zone_identifier: \"my-landing-zone\"
platform_identifier: \"my-platform\"
budget_alert_building_block:
definition_uuid: \"uuid-here\"
definition_version: 1
enable_eu_south_2_region_building_block:
definition_uuid: \"uuid-here\"
definition_version: 1
project:
default_tags:
environment: \"sandbox\"
cost_center: \"engineering\"
owner_tag_key: \"project_owner\" # optional, if not set no project owner tag will be set
", - "required": false - }, - { - "name": "", - "description": " [username](#input\\_username)", - "type": "meshStack username of the project contact. This should be an email.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "Identifier for the owning workspace", - "required": false - } - ], - "outputs": [] - }, - { - "id": "aws-budget-alert", - "platformType": "aws", - "logo": "assets/building-block-logos/aws-budget-alert.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/budget-alert/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/budget-alert/backplane", - "name": "AWS Budget Alert", - "supportedPlatforms": [ - "aws" - ], - "description": "Sets up budget alerts for an AWS account to monitor spending and prevent cost overruns.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [account\\_id](#input\\_account\\_id)", - "type": "target account id where the budget alert should be created", - "required": false - }, - { - "name": "", - "description": " [actual\\_threshold\\_percent](#input\\_actual\\_threshold\\_percent)", - "type": "The precise percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [assume\\_role\\_name](#input\\_assume\\_role\\_name)", - "type": "The name of the role to assume in target account identified by account\\_id", - "required": false - }, - { - "name": "", - "description": " [aws\\_partition](#input\\_aws\\_partition)", - "type": "The AWS partition to use. e.g. aws, aws-cn, aws-us-gov", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#input\\_budget\\_name)", - "type": "Name of the budget alert rule", - "required": false - }, - { - "name": "", - "description": " [contact\\_emails](#input\\_contact\\_emails)", - "type": "Comma-separated list of emails of the users who should receive the Budget alert. e.g. 'foo@example.com, bar@example.com'", - "required": false - }, - { - "name": "", - "description": " [forecasted\\_threshold\\_percent](#input\\_forecasted\\_threshold\\_percent)", - "type": "The forecasted percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [monthly\\_budget\\_amount](#input\\_monthly\\_budget\\_amount)", - "type": "Set the monthly budget for this account in USD.", - "required": false - }, - { - "name": "", - "description": " [budget\\_amount](#output\\_budget\\_amount)", - "type": "The amount of the budget", - "required": false - }, - { - "name": "", - "description": " [budget\\_id](#output\\_budget\\_id)", - "type": "The ID of the budget", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#output\\_budget\\_name)", - "type": "The name of the budget", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [account\\_id](#input\\_account\\_id)", - "type": "target account id where the budget alert should be created", - "required": false - }, - { - "name": "", - "description": " [actual\\_threshold\\_percent](#input\\_actual\\_threshold\\_percent)", - "type": "The precise percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [assume\\_role\\_name](#input\\_assume\\_role\\_name)", - "type": "The name of the role to assume in target account identified by account\\_id", - "required": false - }, - { - "name": "", - "description": " [aws\\_partition](#input\\_aws\\_partition)", - "type": "The AWS partition to use. e.g. aws, aws-cn, aws-us-gov", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#input\\_budget\\_name)", - "type": "Name of the budget alert rule", - "required": false - }, - { - "name": "", - "description": " [contact\\_emails](#input\\_contact\\_emails)", - "type": "Comma-separated list of emails of the users who should receive the Budget alert. e.g. 'foo@example.com, bar@example.com'", - "required": false - }, - { - "name": "", - "description": " [forecasted\\_threshold\\_percent](#input\\_forecasted\\_threshold\\_percent)", - "type": "The forecasted percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [monthly\\_budget\\_amount](#input\\_monthly\\_budget\\_amount)", - "type": "Set the monthly budget for this account in USD.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [budget\\_amount](#output\\_budget\\_amount)", - "type": "The amount of the budget", - "required": false - }, - { - "name": "", - "description": " [budget\\_id](#output\\_budget\\_id)", - "type": "The ID of the budget", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#output\\_budget\\_name)", - "type": "The name of the budget", - "required": false - } - ] - }, - { - "id": "aws-opt-in-region", - "platformType": "aws", - "logo": "assets/building-block-logos/aws-opt-in-region.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/opt-in-region/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/opt-in-region/backplane", - "name": "Enable Opt-In Regions", - "supportedPlatforms": [ - "aws" - ], - "description": "The building block enables you to enable AWS regions that require explicit opt-in for your AWS account. This is particularly useful for managing access to newer AWS regions or regions with specific compliance requirements.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [account\\_id](#input\\_account\\_id)", - "type": "The ID of the target account where the opt-in region will be managed", - "required": false - }, - { - "name": "", - "description": " [assume\\_role\\_arn](#input\\_assume\\_role\\_arn)", - "type": "The ARN of the role in the organization management account that the building block will assume to manage opt-in regions", - "required": false - }, - { - "name": "", - "description": " [enabled](#input\\_enabled)", - "type": "Whether the region is enabled", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "The region name to manage (e.g., ap-southeast-3, me-central-1, af-south-1)", - "required": false - }, - { - "name": "", - "description": " [opt\\_status](#output\\_opt\\_status)", - "type": "The region opt status", - "required": false - }, - { - "name": "", - "description": " [region](#output\\_region)", - "type": "The region name", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [account\\_id](#input\\_account\\_id)", - "type": "The ID of the target account where the opt-in region will be managed", - "required": false - }, - { - "name": "", - "description": " [assume\\_role\\_arn](#input\\_assume\\_role\\_arn)", - "type": "The ARN of the role in the organization management account that the building block will assume to manage opt-in regions", - "required": false - }, - { - "name": "", - "description": " [enabled](#input\\_enabled)", - "type": "Whether the region is enabled", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "The region name to manage (e.g., ap-southeast-3, me-central-1, af-south-1)", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [opt\\_status](#output\\_opt\\_status)", - "type": "The region opt status", - "required": false - }, - { - "name": "", - "description": " [region](#output\\_region)", - "type": "The region name", - "required": false - } - ] - }, - { - "id": "aws-s3_bucket", - "platformType": "aws", - "logo": "assets/building-block-logos/aws-s3_bucket.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/s3_bucket/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/aws/s3_bucket/backplane", - "name": "AWS S3 Bucket", - "supportedPlatforms": [ - "aws" - ], - "description": "Provides an AWS S3 bucket for object storage with access controls, lifecycle policies, and encryption.", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [bucket\\_name](#input\\_bucket\\_name)", - "type": "The name of the S3 bucket", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "The AWS region", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "List of tags to apply to the resource", - "required": false - }, - { - "name": "", - "description": " [bucket\\_arn](#output\\_bucket\\_arn)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_domain\\_name](#output\\_bucket\\_domain\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_name](#output\\_bucket\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_regional\\_domain\\_name](#output\\_bucket\\_regional\\_domain\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_uri](#output\\_bucket\\_uri)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [bucket\\_name](#input\\_bucket\\_name)", - "type": "The name of the S3 bucket", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "The AWS region", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "List of tags to apply to the resource", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [bucket\\_arn](#output\\_bucket\\_arn)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_domain\\_name](#output\\_bucket\\_domain\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_name](#output\\_bucket\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_regional\\_domain\\_name](#output\\_bucket\\_regional\\_domain\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_uri](#output\\_bucket\\_uri)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "azure-aks", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-aks.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/aks/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/aks/backplane", - "name": "AKS Cluster", - "supportedPlatforms": [ - "azure" - ], - "description": "Provision a production-grade Azure Kubernetes Service (AKS) cluster with Azure AD, OIDC, Workload Identity, Log Analytics and custom VNet using Terraform.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [aks\\_admin\\_group\\_object\\_id](#input\\_aks\\_admin\\_group\\_object\\_id)", - "type": "Object ID of the Azure AD group used for AKS admin access. If null, Azure AD RBAC will not be configured.", - "required": false - }, - { - "name": "", - "description": " [aks\\_cluster\\_name](#input\\_aks\\_cluster\\_name)", - "type": "Name of the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [allow\\_gateway\\_transit\\_from\\_hub](#input\\_allow\\_gateway\\_transit\\_from\\_hub)", - "type": "Allow gateway transit from hub to spoke. Set to true if hub has a gateway and you want spoke to use it.", - "required": false - }, - { - "name": "", - "description": " [dns\\_prefix](#input\\_dns\\_prefix)", - "type": "DNS prefix for the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [dns\\_service\\_ip](#input\\_dns\\_service\\_ip)", - "type": "IP address for Kubernetes DNS service (must be within service\\_cidr)", - "required": false - }, - { - "name": "", - "description": " [enable\\_auto\\_scaling](#input\\_enable\\_auto\\_scaling)", - "type": "Enable auto-scaling for the default node pool", - "required": false - }, - { - "name": "", - "description": " [existing\\_vnet\\_resource\\_group\\_name](#input\\_existing\\_vnet\\_resource\\_group\\_name)", - "type": "Resource group name of the existing VNet. Only used when vnet\\_name is provided. Defaults to the AKS resource group if not specified.", - "required": false - }, - { - "name": "", - "description": " [hub\\_resource\\_group\\_name](#input\\_hub\\_resource\\_group\\_name)", - "type": "Resource group name of the hub virtual network. Required when private\\_cluster\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_subscription\\_id](#input\\_hub\\_subscription\\_id)", - "type": "Subscription ID of the hub network. Required when private\\_cluster\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet\\_name](#input\\_hub\\_vnet\\_name)", - "type": "Name of the hub virtual network to peer with. Required when private\\_cluster\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [kubernetes\\_version](#input\\_kubernetes\\_version)", - "type": "Kubernetes version for the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [log\\_analytics\\_workspace\\_name](#input\\_log\\_analytics\\_workspace\\_name)", - "type": "Name of the Log Analytics Workspace. If null, no LAW or monitoring will be created.", - "required": false - }, - { - "name": "", - "description": " [log\\_retention\\_days](#input\\_log\\_retention\\_days)", - "type": "Number of days to retain logs in Log Analytics Workspace", - "required": false - }, - { - "name": "", - "description": " [max\\_node\\_count](#input\\_max\\_node\\_count)", - "type": "Maximum number of nodes for auto-scaling (set to enable auto-scaling)", - "required": false - }, - { - "name": "", - "description": " [min\\_node\\_count](#input\\_min\\_node\\_count)", - "type": "Minimum number of nodes for auto-scaling (set to enable auto-scaling)", - "required": false - }, - { - "name": "", - "description": " [network\\_plugin](#input\\_network\\_plugin)", - "type": "Network plugin to use (azure or kubenet)", - "required": false - }, - { - "name": "", - "description": " [network\\_policy](#input\\_network\\_policy)", - "type": "Network policy to use (azure, calico, or cilium)", - "required": false - }, - { - "name": "", - "description": " [node\\_count](#input\\_node\\_count)", - "type": "Initial number of nodes in the default node pool", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb)", - "type": "OS disk size in GB for the node pool", - "required": false - }, - { - "name": "", - "description": " [private\\_cluster\\_enabled](#input\\_private\\_cluster\\_enabled)", - "type": "Enable private cluster (API server only accessible via private endpoint)", - "required": false - }, - { - "name": "", - "description": " [private\\_cluster\\_public\\_fqdn\\_enabled](#input\\_private\\_cluster\\_public\\_fqdn\\_enabled)", - "type": "Enable public FQDN for private cluster (allows public DNS resolution but API server remains private)", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#input\\_private\\_dns\\_zone\\_id)", - "type": "Private DNS Zone ID for private cluster. Use 'System' for Azure-managed zone, or provide custom zone ID. Only used when private\\_cluster\\_enabled is true.", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group to create for the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [service\\_cidr](#input\\_service\\_cidr)", - "type": "CIDR for Kubernetes services (must not overlap with VNet or subnet)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "Address prefix for the AKS subnet (only used if subnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "Name of the subnet for AKS. If not provided, a new subnet will be created.", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vm\\_size](#input\\_vm\\_size)", - "type": "Size of the virtual machines for the default node pool", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "Address space for the AKS virtual network (only used if vnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network for AKS. If not provided, a new VNet will be created.", - "required": false - }, - { - "name": "", - "description": " [aks\\_identity\\_client\\_id](#output\\_aks\\_identity\\_client\\_id)", - "type": "Client ID of the AKS system-assigned managed identity", - "required": false - }, - { - "name": "", - "description": " [kube\\_config](#output\\_kube\\_config)", - "type": "Kubeconfig raw output", - "required": false - }, - { - "name": "", - "description": " [law\\_id](#output\\_law\\_id)", - "type": "Log Analytics Workspace ID", - "required": false - }, - { - "name": "", - "description": " [oidc\\_issuer\\_url](#output\\_oidc\\_issuer\\_url)", - "type": "OIDC issuer URL for federated identity and workload identity setup", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "Subnet ID used by AKS", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [aks\\_admin\\_group\\_object\\_id](#input\\_aks\\_admin\\_group\\_object\\_id)", - "type": "Object ID of the Azure AD group used for AKS admin access. If null, Azure AD RBAC will not be configured.", - "required": false - }, - { - "name": "", - "description": " [aks\\_cluster\\_name](#input\\_aks\\_cluster\\_name)", - "type": "Name of the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [allow\\_gateway\\_transit\\_from\\_hub](#input\\_allow\\_gateway\\_transit\\_from\\_hub)", - "type": "Allow gateway transit from hub to spoke. Set to true if hub has a gateway and you want spoke to use it.", - "required": false - }, - { - "name": "", - "description": " [dns\\_prefix](#input\\_dns\\_prefix)", - "type": "DNS prefix for the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [dns\\_service\\_ip](#input\\_dns\\_service\\_ip)", - "type": "IP address for Kubernetes DNS service (must be within service\\_cidr)", - "required": false - }, - { - "name": "", - "description": " [enable\\_auto\\_scaling](#input\\_enable\\_auto\\_scaling)", - "type": "Enable auto-scaling for the default node pool", - "required": false - }, - { - "name": "", - "description": " [existing\\_vnet\\_resource\\_group\\_name](#input\\_existing\\_vnet\\_resource\\_group\\_name)", - "type": "Resource group name of the existing VNet. Only used when vnet\\_name is provided. Defaults to the AKS resource group if not specified.", - "required": false - }, - { - "name": "", - "description": " [hub\\_resource\\_group\\_name](#input\\_hub\\_resource\\_group\\_name)", - "type": "Resource group name of the hub virtual network. Required when private\\_cluster\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_subscription\\_id](#input\\_hub\\_subscription\\_id)", - "type": "Subscription ID of the hub network. Required when private\\_cluster\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet\\_name](#input\\_hub\\_vnet\\_name)", - "type": "Name of the hub virtual network to peer with. Required when private\\_cluster\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [kubernetes\\_version](#input\\_kubernetes\\_version)", - "type": "Kubernetes version for the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [log\\_analytics\\_workspace\\_name](#input\\_log\\_analytics\\_workspace\\_name)", - "type": "Name of the Log Analytics Workspace. If null, no LAW or monitoring will be created.", - "required": false - }, - { - "name": "", - "description": " [log\\_retention\\_days](#input\\_log\\_retention\\_days)", - "type": "Number of days to retain logs in Log Analytics Workspace", - "required": false - }, - { - "name": "", - "description": " [max\\_node\\_count](#input\\_max\\_node\\_count)", - "type": "Maximum number of nodes for auto-scaling (set to enable auto-scaling)", - "required": false - }, - { - "name": "", - "description": " [min\\_node\\_count](#input\\_min\\_node\\_count)", - "type": "Minimum number of nodes for auto-scaling (set to enable auto-scaling)", - "required": false - }, - { - "name": "", - "description": " [network\\_plugin](#input\\_network\\_plugin)", - "type": "Network plugin to use (azure or kubenet)", - "required": false - }, - { - "name": "", - "description": " [network\\_policy](#input\\_network\\_policy)", - "type": "Network policy to use (azure, calico, or cilium)", - "required": false - }, - { - "name": "", - "description": " [node\\_count](#input\\_node\\_count)", - "type": "Initial number of nodes in the default node pool", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb)", - "type": "OS disk size in GB for the node pool", - "required": false - }, - { - "name": "", - "description": " [private\\_cluster\\_enabled](#input\\_private\\_cluster\\_enabled)", - "type": "Enable private cluster (API server only accessible via private endpoint)", - "required": false - }, - { - "name": "", - "description": " [private\\_cluster\\_public\\_fqdn\\_enabled](#input\\_private\\_cluster\\_public\\_fqdn\\_enabled)", - "type": "Enable public FQDN for private cluster (allows public DNS resolution but API server remains private)", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#input\\_private\\_dns\\_zone\\_id)", - "type": "Private DNS Zone ID for private cluster. Use 'System' for Azure-managed zone, or provide custom zone ID. Only used when private\\_cluster\\_enabled is true.", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group to create for the AKS cluster", - "required": false - }, - { - "name": "", - "description": " [service\\_cidr](#input\\_service\\_cidr)", - "type": "CIDR for Kubernetes services (must not overlap with VNet or subnet)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "Address prefix for the AKS subnet (only used if subnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "Name of the subnet for AKS. If not provided, a new subnet will be created.", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vm\\_size](#input\\_vm\\_size)", - "type": "Size of the virtual machines for the default node pool", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "Address space for the AKS virtual network (only used if vnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network for AKS. If not provided, a new VNet will be created.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [aks\\_identity\\_client\\_id](#output\\_aks\\_identity\\_client\\_id)", - "type": "Client ID of the AKS system-assigned managed identity", - "required": false - }, - { - "name": "", - "description": " [kube\\_config](#output\\_kube\\_config)", - "type": "Kubeconfig raw output", - "required": false - }, - { - "name": "", - "description": " [law\\_id](#output\\_law\\_id)", - "type": "Log Analytics Workspace ID", - "required": false - }, - { - "name": "", - "description": " [oidc\\_issuer\\_url](#output\\_oidc\\_issuer\\_url)", - "type": "OIDC issuer URL for federated identity and workload identity setup", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "Subnet ID used by AKS", - "required": false - } - ] - }, - { - "id": "azure-azure-bastion", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-azure-bastion.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/azure-bastion/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/azure-bastion/backplane", - "name": "Azure Bastion Host", - "supportedPlatforms": [ - "azure" - ], - "description": "Provides secure RDP and SSH connectivity to virtual machines in Azure virtual networks without exposing them to the public internet, with comprehensive monitoring and alerting.", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [alert\\_email\\_receivers](#input\\_alert\\_email\\_receivers)", - "type": "List of email receivers for alerts provided by meshStack", - "required": false - }, - { - "name": "", - "description": " [alert\\_webhook\\_receivers](#input\\_alert\\_webhook\\_receivers)", - "type": "List of webhook receivers for alerts (Teams, Slack, etc.)", - "required": false - }, - { - "name": "", - "description": " [azure\\_delay\\_seconds](#input\\_azure\\_delay\\_seconds)", - "type": "Delay in seconds to wait for Azure resources to be ready", - "required": false - }, - { - "name": "", - "description": " [bastion\\_sku](#input\\_bastion\\_sku)", - "type": "SKU of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_subnet\\_cidr](#input\\_bastion\\_subnet\\_cidr)", - "type": "CIDR block for the AzureBastionSubnet (minimum /27)", - "required": false - }, - { - "name": "", - "description": " [enable\\_observability](#input\\_enable\\_observability)", - "type": "Enable comprehensive observability (alerts, monitoring)", - "required": false - }, - { - "name": "", - "description": " [enable\\_resource\\_locks](#input\\_enable\\_resource\\_locks)", - "type": "Enable resource locks to prevent accidental deletion/modification", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "Name of the Azure Bastion deployment", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group where Bastion will be deployed", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network where Bastion subnet will be created", - "required": false - }, - { - "name": "", - "description": " [action\\_group\\_id](#output\\_action\\_group\\_id)", - "type": "The ID of the central action group for notifications", - "required": false - }, - { - "name": "", - "description": " [action\\_group\\_name](#output\\_action\\_group\\_name)", - "type": "The name of the central action group for notifications", - "required": false - }, - { - "name": "", - "description": " [bastion\\_host\\_fqdn](#output\\_bastion\\_host\\_fqdn)", - "type": "The FQDN of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_host\\_id](#output\\_bastion\\_host\\_id)", - "type": "The ID of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_host\\_name](#output\\_bastion\\_host\\_name)", - "type": "The name of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_nsg\\_id](#output\\_bastion\\_nsg\\_id)", - "type": "The ID of the Bastion Network Security Group", - "required": false - }, - { - "name": "", - "description": " [bastion\\_public\\_ip](#output\\_bastion\\_public\\_ip)", - "type": "The public IP address of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_resource\\_health\\_alert\\_id](#output\\_bastion\\_resource\\_health\\_alert\\_id)", - "type": "The ID of the Bastion resource health alert", - "required": false - }, - { - "name": "", - "description": " [bastion\\_subnet\\_id](#output\\_bastion\\_subnet\\_id)", - "type": "The ID of the AzureBastionSubnet", - "required": false - }, - { - "name": "", - "description": " [service\\_health\\_alert\\_id](#output\\_service\\_health\\_alert\\_id)", - "type": "The ID of the service health alert", - "required": false - }, - { - "name": "", - "description": " [subscription\\_resource\\_health\\_alert\\_id](#output\\_subscription\\_resource\\_health\\_alert\\_id)", - "type": "The ID of the subscription resource health alert", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#output\\_vnet\\_address\\_space)", - "type": "The address space of the POC Virtual Network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the POC Virtual Network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#output\\_vnet\\_name)", - "type": "The name of the POC Virtual Network", - "required": false - }, - { - "name": "", - "description": " [workload\\_subnet\\_id](#output\\_workload\\_subnet\\_id)", - "type": "The ID of workload subnet", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [alert\\_email\\_receivers](#input\\_alert\\_email\\_receivers)", - "type": "List of email receivers for alerts provided by meshStack", - "required": false - }, - { - "name": "", - "description": " [alert\\_webhook\\_receivers](#input\\_alert\\_webhook\\_receivers)", - "type": "List of webhook receivers for alerts (Teams, Slack, etc.)", - "required": false - }, - { - "name": "", - "description": " [azure\\_delay\\_seconds](#input\\_azure\\_delay\\_seconds)", - "type": "Delay in seconds to wait for Azure resources to be ready", - "required": false - }, - { - "name": "", - "description": " [bastion\\_sku](#input\\_bastion\\_sku)", - "type": "SKU of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_subnet\\_cidr](#input\\_bastion\\_subnet\\_cidr)", - "type": "CIDR block for the AzureBastionSubnet (minimum /27)", - "required": false - }, - { - "name": "", - "description": " [enable\\_observability](#input\\_enable\\_observability)", - "type": "Enable comprehensive observability (alerts, monitoring)", - "required": false - }, - { - "name": "", - "description": " [enable\\_resource\\_locks](#input\\_enable\\_resource\\_locks)", - "type": "Enable resource locks to prevent accidental deletion/modification", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "Name of the Azure Bastion deployment", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group where Bastion will be deployed", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network where Bastion subnet will be created", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [terraform](#requirement\\_terraform)", - "type": ">= 1.3.0", - "required": false - }, - { - "name": "", - "description": " [azurerm](#requirement\\_azurerm)", - "type": "~> 3.116.0", - "required": false - }, - { - "name": "", - "description": " [time](#requirement\\_time)", - "type": "~> 0.11.1", - "required": false - }, - { - "name": "", - "description": " [alert\\_email\\_receivers](#input\\_alert\\_email\\_receivers)", - "type": "List of email receivers for alerts provided by meshStack", - "required": false - }, - { - "name": "", - "description": " [alert\\_webhook\\_receivers](#input\\_alert\\_webhook\\_receivers)", - "type": "List of webhook receivers for alerts (Teams, Slack, etc.)", - "required": false - }, - { - "name": "", - "description": " [azure\\_delay\\_seconds](#input\\_azure\\_delay\\_seconds)", - "type": "Delay in seconds to wait for Azure resources to be ready", - "required": false - }, - { - "name": "", - "description": " [bastion\\_sku](#input\\_bastion\\_sku)", - "type": "SKU of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_subnet\\_cidr](#input\\_bastion\\_subnet\\_cidr)", - "type": "CIDR block for the AzureBastionSubnet (minimum /27)", - "required": false - }, - { - "name": "", - "description": " [enable\\_observability](#input\\_enable\\_observability)", - "type": "Enable comprehensive observability (alerts, monitoring)", - "required": false - }, - { - "name": "", - "description": " [enable\\_resource\\_locks](#input\\_enable\\_resource\\_locks)", - "type": "Enable resource locks to prevent accidental deletion/modification", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "Name of the Azure Bastion deployment", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group where Bastion will be deployed", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network where Bastion subnet will be created", - "required": false - }, - { - "name": "", - "description": " [action\\_group\\_id](#output\\_action\\_group\\_id)", - "type": "The ID of the central action group for notifications", - "required": false - }, - { - "name": "", - "description": " [action\\_group\\_name](#output\\_action\\_group\\_name)", - "type": "The name of the central action group for notifications", - "required": false - }, - { - "name": "", - "description": " [bastion\\_host\\_fqdn](#output\\_bastion\\_host\\_fqdn)", - "type": "The FQDN of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_host\\_id](#output\\_bastion\\_host\\_id)", - "type": "The ID of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_host\\_name](#output\\_bastion\\_host\\_name)", - "type": "The name of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_nsg\\_id](#output\\_bastion\\_nsg\\_id)", - "type": "The ID of the Bastion Network Security Group", - "required": false - }, - { - "name": "", - "description": " [bastion\\_public\\_ip](#output\\_bastion\\_public\\_ip)", - "type": "The public IP address of the Azure Bastion Host", - "required": false - }, - { - "name": "", - "description": " [bastion\\_resource\\_health\\_alert\\_id](#output\\_bastion\\_resource\\_health\\_alert\\_id)", - "type": "The ID of the Bastion resource health alert", - "required": false - }, - { - "name": "", - "description": " [bastion\\_subnet\\_id](#output\\_bastion\\_subnet\\_id)", - "type": "The ID of the AzureBastionSubnet", - "required": false - }, - { - "name": "", - "description": " [service\\_health\\_alert\\_id](#output\\_service\\_health\\_alert\\_id)", - "type": "The ID of the service health alert", - "required": false - }, - { - "name": "", - "description": " [subscription\\_resource\\_health\\_alert\\_id](#output\\_subscription\\_resource\\_health\\_alert\\_id)", - "type": "The ID of the subscription resource health alert", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#output\\_vnet\\_address\\_space)", - "type": "The address space of the POC Virtual Network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the POC Virtual Network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#output\\_vnet\\_name)", - "type": "The name of the POC Virtual Network", - "required": false - }, - { - "name": "", - "description": " [workload\\_subnet\\_id](#output\\_workload\\_subnet\\_id)", - "type": "The ID of workload subnet", - "required": false - } - ] - }, - { - "id": "azure-azure-virtual-machine", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-azure-virtual-machine.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/azure-virtual-machine/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/azure-virtual-machine/backplane", - "name": "Azure Virtual Machine", - "supportedPlatforms": [ - "azure" - ], - "description": "(ALPHA) Provisions an Azure Virtual Machine (VM) with support for both Linux and Windows operating systems, including network interface, optional public IP, network security group, and optional data disk.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [admin\\_password](#input\\_admin\\_password)", - "type": "The admin password for Windows VM (required for Windows)", - "required": false - }, - { - "name": "", - "description": " [admin\\_username](#input\\_admin\\_username)", - "type": "The admin username for the VM", - "required": false - }, - { - "name": "", - "description": " [data\\_disk\\_size\\_gb](#input\\_data\\_disk\\_size\\_gb)", - "type": "The size of the data disk in GB. Set to 0 to skip data disk creation", - "required": false - }, - { - "name": "", - "description": " [data\\_disk\\_storage\\_type](#input\\_data\\_disk\\_storage\\_type)", - "type": "The storage account type for the data disk", - "required": false - }, - { - "name": "", - "description": " [enable\\_public\\_ip](#input\\_enable\\_public\\_ip)", - "type": "Whether to create and assign a public IP address to the VM", - "required": false - }, - { - "name": "", - "description": " [enable\\_spot\\_instance](#input\\_enable\\_spot\\_instance)", - "type": "Enable spot instance for significant cost savings (VM can be evicted when Azure needs capacity)", - "required": false - }, - { - "name": "", - "description": " [image\\_offer](#input\\_image\\_offer)", - "type": "The offer of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_publisher](#input\\_image\\_publisher)", - "type": "The publisher of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_sku](#input\\_image\\_sku)", - "type": "The SKU of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_version](#input\\_image\\_version)", - "type": "The version of the image", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb)", - "type": "The size of the OS disk in GB", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_storage\\_type](#input\\_os\\_disk\\_storage\\_type)", - "type": "The storage account type for the OS disk", - "required": false - }, - { - "name": "", - "description": " [os\\_type](#input\\_os\\_type)", - "type": "The operating system type (Linux or Windows)", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "The name or full resource ID of the resource group (e.g., '/subscriptions/.../resourceGroups/my-rg'). If not provided, a new resource group will be created.", - "required": false - }, - { - "name": "", - "description": " [spot\\_eviction\\_policy](#input\\_spot\\_eviction\\_policy)", - "type": "Eviction policy for spot instances (Deallocate or Delete)", - "required": false - }, - { - "name": "", - "description": " [spot\\_max\\_bid\\_price](#input\\_spot\\_max\\_bid\\_price)", - "type": "Maximum price to pay for spot instance per hour. -1 means pay up to on-demand price. Default is -1 for maximum availability", - "required": false - }, - { - "name": "", - "description": " [ssh\\_public\\_key](#input\\_ssh\\_public\\_key)", - "type": "SSH public key for Linux VM authentication (required for Linux)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "The address prefix for the subnet", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vm\\_name](#input\\_vm\\_name)", - "type": "The name of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vm\\_size](#input\\_vm\\_size)", - "type": "The size of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "The address space for the virtual network", - "required": false - }, - { - "name": "", - "description": " [azure\\_portal\\_url](#output\\_azure\\_portal\\_url)", - "type": "Direct link to the VM in Azure Portal", - "required": false - }, - { - "name": "", - "description": " [network\\_interface\\_id](#output\\_network\\_interface\\_id)", - "type": "The ID of the network interface", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "The name of the resource group", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "The ID of the subnet", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Markdown summary output of the building block with connection instructions", - "required": false - }, - { - "name": "", - "description": " [vm\\_id](#output\\_vm\\_id)", - "type": "The ID of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vm\\_identity\\_principal\\_id](#output\\_vm\\_identity\\_principal\\_id)", - "type": "The Principal ID of the system-assigned managed identity", - "required": false - }, - { - "name": "", - "description": " [vm\\_name](#output\\_vm\\_name)", - "type": "The name of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vm\\_private\\_ip](#output\\_vm\\_private\\_ip)", - "type": "The private IP address of the VM", - "required": false - }, - { - "name": "", - "description": " [vm\\_public\\_ip](#output\\_vm\\_public\\_ip)", - "type": "The public IP address of the VM (if enabled)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the virtual network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#output\\_vnet\\_name)", - "type": "The name of the virtual network", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [admin\\_password](#input\\_admin\\_password)", - "type": "The admin password for Windows VM (required for Windows)", - "required": false - }, - { - "name": "", - "description": " [admin\\_username](#input\\_admin\\_username)", - "type": "The admin username for the VM", - "required": false - }, - { - "name": "", - "description": " [data\\_disk\\_size\\_gb](#input\\_data\\_disk\\_size\\_gb)", - "type": "The size of the data disk in GB. Set to 0 to skip data disk creation", - "required": false - }, - { - "name": "", - "description": " [data\\_disk\\_storage\\_type](#input\\_data\\_disk\\_storage\\_type)", - "type": "The storage account type for the data disk", - "required": false - }, - { - "name": "", - "description": " [enable\\_public\\_ip](#input\\_enable\\_public\\_ip)", - "type": "Whether to create and assign a public IP address to the VM", - "required": false - }, - { - "name": "", - "description": " [enable\\_spot\\_instance](#input\\_enable\\_spot\\_instance)", - "type": "Enable spot instance for significant cost savings (VM can be evicted when Azure needs capacity)", - "required": false - }, - { - "name": "", - "description": " [image\\_offer](#input\\_image\\_offer)", - "type": "The offer of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_publisher](#input\\_image\\_publisher)", - "type": "The publisher of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_sku](#input\\_image\\_sku)", - "type": "The SKU of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_version](#input\\_image\\_version)", - "type": "The version of the image", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb)", - "type": "The size of the OS disk in GB", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_storage\\_type](#input\\_os\\_disk\\_storage\\_type)", - "type": "The storage account type for the OS disk", - "required": false - }, - { - "name": "", - "description": " [os\\_type](#input\\_os\\_type)", - "type": "The operating system type (Linux or Windows)", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "The name or full resource ID of the resource group (e.g., '/subscriptions/.../resourceGroups/my-rg'). If not provided, a new resource group will be created.", - "required": false - }, - { - "name": "", - "description": " [spot\\_eviction\\_policy](#input\\_spot\\_eviction\\_policy)", - "type": "Eviction policy for spot instances (Deallocate or Delete)", - "required": false - }, - { - "name": "", - "description": " [spot\\_max\\_bid\\_price](#input\\_spot\\_max\\_bid\\_price)", - "type": "Maximum price to pay for spot instance per hour. -1 means pay up to on-demand price. Default is -1 for maximum availability", - "required": false - }, - { - "name": "", - "description": " [ssh\\_public\\_key](#input\\_ssh\\_public\\_key)", - "type": "SSH public key for Linux VM authentication (required for Linux)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "The address prefix for the subnet", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [vm\\_name](#input\\_vm\\_name)", - "type": "The name of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vm\\_size](#input\\_vm\\_size)", - "type": "The size of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "The address space for the virtual network", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [azure\\_portal\\_url](#output\\_azure\\_portal\\_url)", - "type": "Direct link to the VM in Azure Portal", - "required": false - }, - { - "name": "", - "description": " [network\\_interface\\_id](#output\\_network\\_interface\\_id)", - "type": "The ID of the network interface", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "The name of the resource group", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "The ID of the subnet", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Markdown summary output of the building block with connection instructions", - "required": false - }, - { - "name": "", - "description": " [vm\\_id](#output\\_vm\\_id)", - "type": "The ID of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vm\\_identity\\_principal\\_id](#output\\_vm\\_identity\\_principal\\_id)", - "type": "The Principal ID of the system-assigned managed identity", - "required": false - }, - { - "name": "", - "description": " [vm\\_name](#output\\_vm\\_name)", - "type": "The name of the virtual machine", - "required": false - }, - { - "name": "", - "description": " [vm\\_private\\_ip](#output\\_vm\\_private\\_ip)", - "type": "The private IP address of the VM", - "required": false - }, - { - "name": "", - "description": " [vm\\_public\\_ip](#output\\_vm\\_public\\_ip)", - "type": "The public IP address of the VM (if enabled)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the virtual network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#output\\_vnet\\_name)", - "type": "The name of the virtual network", - "required": false - } - ] - }, - { - "id": "azure-azure-virtual-machine-starterkit", - "platformType": "azure", - "logo": null, - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/azure-virtual-machine-starterkit/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/azure-virtual-machine-starterkit/backplane", - "name": "Azure Virtual Machine Starterkit", - "supportedPlatforms": [ - "azure" - ], - "description": "The Azure Virtual Machine Starterkit provides application teams with a pre-configured Azure environment. It includes a dedicated project, an Azure tenant, and a virtual machine for quick provisioning and testing.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [azure\\_vm\\_definition\\_version\\_uuid](#input\\_azure\\_vm\\_definition\\_version\\_uuid)", - "type": "UUID of the Azure Virtual Machine building block definition version.", - "required": false - }, - { - "name": "", - "description": " [creator](#input\\_creator)", - "type": "Information about the creator of the resources who will be assigned Project Admin role", - "required": false - }, - { - "name": "", - "description": " [full\\_platform\\_identifier](#input\\_full\\_platform\\_identifier)", - "type": "Full platform identifier of the Azure platform.", - "required": false - }, - { - "name": "", - "description": " [landing\\_zone\\_identifier](#input\\_landing\\_zone\\_identifier)", - "type": "Azure Landing zone identifier for the tenant.", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "This name will be used for the created project and VM", - "required": false - }, - { - "name": "", - "description": " [project\\_tags\\_yaml](#input\\_project\\_tags\\_yaml)", - "type": "YAML configuration for project tags. Expected structure:
yaml
key1:
- \"value1\"
- \"value2\"
key2:
- \"value3\"
", - "required": false - }, - { - "name": "", - "description": " [vm\\_admin\\_password](#input\\_vm\\_admin\\_password)", - "type": "The admin password for Windows VM (required for Windows).", - "required": false - }, - { - "name": "", - "description": " [vm\\_admin\\_username](#input\\_vm\\_admin\\_username)", - "type": "The admin username for the VM.", - "required": false - }, - { - "name": "", - "description": " [vm\\_enable\\_public\\_ip](#input\\_vm\\_enable\\_public\\_ip)", - "type": "Whether to create and assign a public IP address to the VM.", - "required": false - }, - { - "name": "", - "description": " [vm\\_location](#input\\_vm\\_location)", - "type": "The Azure region where the VM will be deployed.", - "required": false - }, - { - "name": "", - "description": " [vm\\_os\\_type](#input\\_vm\\_os\\_type)", - "type": "The operating system type (Linux or Windows).", - "required": false - }, - { - "name": "", - "description": " [vm\\_size](#input\\_vm\\_size)", - "type": "The size of the virtual machine.", - "required": false - }, - { - "name": "", - "description": " [vm\\_ssh\\_public\\_key](#input\\_vm\\_ssh\\_public\\_key)", - "type": "SSH public key for Linux VM authentication (required for Linux).", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "The identifier of the meshStack workspace", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#output\\_project\\_name)", - "type": "Name of the created meshStack project", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Summary with next steps and insights into created resources", - "required": false - }, - { - "name": "", - "description": " [tenant\\_uuid](#output\\_tenant\\_uuid)", - "type": "UUID of the created Azure tenant", - "required": false - }, - { - "name": "", - "description": " [vm\\_building\\_block\\_uuid](#output\\_vm\\_building\\_block\\_uuid)", - "type": "UUID of the Azure VM building block", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [azure\\_vm\\_definition\\_version\\_uuid](#input\\_azure\\_vm\\_definition\\_version\\_uuid)", - "type": "UUID of the Azure Virtual Machine building block definition version.", - "required": false - }, - { - "name": "", - "description": " [creator](#input\\_creator)", - "type": "Information about the creator of the resources who will be assigned Project Admin role", - "required": false - }, - { - "name": "", - "description": " [full\\_platform\\_identifier](#input\\_full\\_platform\\_identifier)", - "type": "Full platform identifier of the Azure platform.", - "required": false - }, - { - "name": "", - "description": " [landing\\_zone\\_identifier](#input\\_landing\\_zone\\_identifier)", - "type": "Azure Landing zone identifier for the tenant.", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "This name will be used for the created project and VM", - "required": false - }, - { - "name": "", - "description": " [project\\_tags\\_yaml](#input\\_project\\_tags\\_yaml)", - "type": "YAML configuration for project tags. Expected structure:
yaml
key1:
- \"value1\"
- \"value2\"
key2:
- \"value3\"
", - "required": false - }, - { - "name": "", - "description": " [vm\\_admin\\_password](#input\\_vm\\_admin\\_password)", - "type": "The admin password for Windows VM (required for Windows).", - "required": false - }, - { - "name": "", - "description": " [vm\\_admin\\_username](#input\\_vm\\_admin\\_username)", - "type": "The admin username for the VM.", - "required": false - }, - { - "name": "", - "description": " [vm\\_enable\\_public\\_ip](#input\\_vm\\_enable\\_public\\_ip)", - "type": "Whether to create and assign a public IP address to the VM.", - "required": false - }, - { - "name": "", - "description": " [vm\\_location](#input\\_vm\\_location)", - "type": "The Azure region where the VM will be deployed.", - "required": false - }, - { - "name": "", - "description": " [vm\\_os\\_type](#input\\_vm\\_os\\_type)", - "type": "The operating system type (Linux or Windows).", - "required": false - }, - { - "name": "", - "description": " [vm\\_size](#input\\_vm\\_size)", - "type": "The size of the virtual machine.", - "required": false - }, - { - "name": "", - "description": " [vm\\_ssh\\_public\\_key](#input\\_vm\\_ssh\\_public\\_key)", - "type": "SSH public key for Linux VM authentication (required for Linux).", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "The identifier of the meshStack workspace", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [project\\_name](#output\\_project\\_name)", - "type": "Name of the created meshStack project", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Summary with next steps and insights into created resources", - "required": false - }, - { - "name": "", - "description": " [tenant\\_uuid](#output\\_tenant\\_uuid)", - "type": "UUID of the created Azure tenant", - "required": false - }, - { - "name": "", - "description": " [vm\\_building\\_block\\_uuid](#output\\_vm\\_building\\_block\\_uuid)", - "type": "UUID of the Azure VM building block", - "required": false - } - ] - }, - { - "id": "azure-budget-alert", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-budget-alert.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/budget-alert/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/budget-alert/backplane", - "name": "Azure Subscription Budget Alert", - "supportedPlatforms": [ - "azure" - ], - "description": "Sets up budget alerts for an Azure subscription to monitor spending and prevent cost overruns.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [actual\\_threshold\\_percent](#input\\_actual\\_threshold\\_percent)", - "type": "The precise percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#input\\_budget\\_name)", - "type": "Name of the budget alert rule", - "required": false - }, - { - "name": "", - "description": " [contact\\_emails](#input\\_contact\\_emails)", - "type": "Comma-separated list of emails of the users who should receive the Budget alert. e.g. 'foo@example.com, bar@example.com'", - "required": false - }, - { - "name": "", - "description": " [forcasted\\_threshold\\_percent](#input\\_forcasted\\_threshold\\_percent)", - "type": "The forcasted percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [monthly\\_budget\\_amount](#input\\_monthly\\_budget\\_amount)", - "type": "Set the monthly budget for this subscription in the billing currency.", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#input\\_subscription\\_id)", - "type": "The ID of the subscription at which you want to assign the budget", - "required": false - }, - { - "name": "", - "description": " [budget\\_amount](#output\\_budget\\_amount)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [actual\\_threshold\\_percent](#input\\_actual\\_threshold\\_percent)", - "type": "The precise percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#input\\_budget\\_name)", - "type": "Name of the budget alert rule", - "required": false - }, - { - "name": "", - "description": " [contact\\_emails](#input\\_contact\\_emails)", - "type": "Comma-separated list of emails of the users who should receive the Budget alert. e.g. 'foo@example.com, bar@example.com'", - "required": false - }, - { - "name": "", - "description": " [forcasted\\_threshold\\_percent](#input\\_forcasted\\_threshold\\_percent)", - "type": "The forcasted percentage of the monthly budget at which you wish to activate the alert upon reaching. E.g. '15' for 15% or '120' for 120%", - "required": false - }, - { - "name": "", - "description": " [monthly\\_budget\\_amount](#input\\_monthly\\_budget\\_amount)", - "type": "Set the monthly budget for this subscription in the billing currency.", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#input\\_subscription\\_id)", - "type": "The ID of the subscription at which you want to assign the budget", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [budget\\_amount](#output\\_budget\\_amount)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "azure-container-registry", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-container-registry.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/container-registry/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/container-registry/backplane", - "name": "Azure Container Registry", - "supportedPlatforms": [ - "azure" - ], - "description": "Provides a production-grade Azure Container Registry for storing and managing Docker container images and OCI artifacts with private networking support.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [acr\\_name](#input\\_acr\\_name)", - "type": "Name of the Azure Container Registry (must be globally unique, alphanumeric only)", - "required": false - }, - { - "name": "", - "description": " [admin\\_enabled](#input\\_admin\\_enabled)", - "type": "Enable admin user for basic authentication (not recommended for production)", - "required": false - }, - { - "name": "", - "description": " [aks\\_managed\\_identity\\_principal\\_id](#input\\_aks\\_managed\\_identity\\_principal\\_id)", - "type": "Principal ID of the AKS managed identity to grant AcrPull access. If provided, AcrPull role will be assigned automatically.", - "required": false - }, - { - "name": "", - "description": " [allow\\_gateway\\_transit\\_from\\_hub](#input\\_allow\\_gateway\\_transit\\_from\\_hub)", - "type": "Allow gateway transit from hub to spoke. Set to true if hub has a gateway and you want spoke to use it.", - "required": false - }, - { - "name": "", - "description": " [allowed\\_ip\\_ranges](#input\\_allowed\\_ip\\_ranges)", - "type": "List of IP ranges (CIDR) allowed to access the ACR", - "required": false - }, - { - "name": "", - "description": " [anonymous\\_pull\\_enabled](#input\\_anonymous\\_pull\\_enabled)", - "type": "Enable anonymous pull access (allows unauthenticated pulls)", - "required": false - }, - { - "name": "", - "description": " [data\\_endpoint\\_enabled](#input\\_data\\_endpoint\\_enabled)", - "type": "Enable dedicated data endpoints (Premium SKU only)", - "required": false - }, - { - "name": "", - "description": " [existing\\_vnet\\_resource\\_group\\_name](#input\\_existing\\_vnet\\_resource\\_group\\_name)", - "type": "Resource group name of the existing VNet. Only used when vnet\\_name is provided. Defaults to the ACR resource group if not specified.", - "required": false - }, - { - "name": "", - "description": " [hub\\_resource\\_group\\_name](#input\\_hub\\_resource\\_group\\_name)", - "type": "Resource group name of the hub virtual network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_subscription\\_id](#input\\_hub\\_subscription\\_id)", - "type": "Subscription ID of the hub network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet\\_name](#input\\_hub\\_vnet\\_name)", - "type": "Name of the hub virtual network to peer with. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [network\\_rule\\_bypass\\_option](#input\\_network\\_rule\\_bypass\\_option)", - "type": "Whether to allow trusted Azure services to bypass network rules (AzureServices or None)", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#input\\_private\\_dns\\_zone\\_id)", - "type": "Private DNS Zone ID for private endpoint. Use 'System' for Azure-managed zone, or provide custom zone ID. Only used when private\\_endpoint\\_enabled is true.", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_enabled](#input\\_private\\_endpoint\\_enabled)", - "type": "Enable private endpoint for ACR (Premium SKU required)", - "required": false - }, - { - "name": "", - "description": " [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled)", - "type": "Enable public network access to the ACR", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group to create for the ACR", - "required": false - }, - { - "name": "", - "description": " [retention\\_days](#input\\_retention\\_days)", - "type": "Number of days to retain untagged manifests (Premium SKU only, 0 to disable)", - "required": false - }, - { - "name": "", - "description": " [sku](#input\\_sku)", - "type": "SKU tier for the ACR (Basic, Standard, Premium). Premium required for private endpoints.", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "Address prefix for the private endpoint subnet (only used if subnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "Name of the subnet for private endpoint. If not provided, a new subnet will be created.", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [trust\\_policy\\_enabled](#input\\_trust\\_policy\\_enabled)", - "type": "Enable content trust policy (Premium SKU only)", - "required": false - }, - { - "name": "", - "description": " [use\\_remote\\_gateways](#input\\_use\\_remote\\_gateways)", - "type": "Use remote gateways from hub VNet. Set to true only if hub has a VPN/ExpressRoute gateway configured.", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "Address space for the VNet (only used if vnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network for private endpoint. If not provided, a new VNet will be created.", - "required": false - }, - { - "name": "", - "description": " [zone\\_redundancy\\_enabled](#input\\_zone\\_redundancy\\_enabled)", - "type": "Enable zone redundancy for the ACR (Premium SKU only, available in select regions)", - "required": false - }, - { - "name": "", - "description": " [acr\\_id](#output\\_acr\\_id)", - "type": "The ID of the Azure Container Registry", - "required": false - }, - { - "name": "", - "description": " [acr\\_login\\_server](#output\\_acr\\_login\\_server)", - "type": "The login server URL for the Azure Container Registry", - "required": false - }, - { - "name": "", - "description": " [acr\\_name](#output\\_acr\\_name)", - "type": "The name of the Azure Container Registry", - "required": false - }, - { - "name": "", - "description": " [admin\\_password](#output\\_admin\\_password)", - "type": "Admin password for the Azure Container Registry (only available when admin\\_enabled is true)", - "required": false - }, - { - "name": "", - "description": " [admin\\_username](#output\\_admin\\_username)", - "type": "Admin username for the Azure Container Registry (only available when admin\\_enabled is true)", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#output\\_private\\_dns\\_zone\\_id)", - "type": "ID of the private DNS zone (when System-managed)", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_ip](#output\\_private\\_endpoint\\_ip)", - "type": "Private IP address of the ACR private endpoint", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the ACR", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "ID of the subnet used for private endpoint", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "ID of the virtual network used for private endpoint", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [acr\\_name](#input\\_acr\\_name)", - "type": "Name of the Azure Container Registry (must be globally unique, alphanumeric only)", - "required": false - }, - { - "name": "", - "description": " [admin\\_enabled](#input\\_admin\\_enabled)", - "type": "Enable admin user for basic authentication (not recommended for production)", - "required": false - }, - { - "name": "", - "description": " [aks\\_managed\\_identity\\_principal\\_id](#input\\_aks\\_managed\\_identity\\_principal\\_id)", - "type": "Principal ID of the AKS managed identity to grant AcrPull access. If provided, AcrPull role will be assigned automatically.", - "required": false - }, - { - "name": "", - "description": " [allow\\_gateway\\_transit\\_from\\_hub](#input\\_allow\\_gateway\\_transit\\_from\\_hub)", - "type": "Allow gateway transit from hub to spoke. Set to true if hub has a gateway and you want spoke to use it.", - "required": false - }, - { - "name": "", - "description": " [allowed\\_ip\\_ranges](#input\\_allowed\\_ip\\_ranges)", - "type": "List of IP ranges (CIDR) allowed to access the ACR", - "required": false - }, - { - "name": "", - "description": " [anonymous\\_pull\\_enabled](#input\\_anonymous\\_pull\\_enabled)", - "type": "Enable anonymous pull access (allows unauthenticated pulls)", - "required": false - }, - { - "name": "", - "description": " [data\\_endpoint\\_enabled](#input\\_data\\_endpoint\\_enabled)", - "type": "Enable dedicated data endpoints (Premium SKU only)", - "required": false - }, - { - "name": "", - "description": " [existing\\_vnet\\_resource\\_group\\_name](#input\\_existing\\_vnet\\_resource\\_group\\_name)", - "type": "Resource group name of the existing VNet. Only used when vnet\\_name is provided. Defaults to the ACR resource group if not specified.", - "required": false - }, - { - "name": "", - "description": " [hub\\_resource\\_group\\_name](#input\\_hub\\_resource\\_group\\_name)", - "type": "Resource group name of the hub virtual network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_subscription\\_id](#input\\_hub\\_subscription\\_id)", - "type": "Subscription ID of the hub network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet\\_name](#input\\_hub\\_vnet\\_name)", - "type": "Name of the hub virtual network to peer with. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [network\\_rule\\_bypass\\_option](#input\\_network\\_rule\\_bypass\\_option)", - "type": "Whether to allow trusted Azure services to bypass network rules (AzureServices or None)", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#input\\_private\\_dns\\_zone\\_id)", - "type": "Private DNS Zone ID for private endpoint. Use 'System' for Azure-managed zone, or provide custom zone ID. Only used when private\\_endpoint\\_enabled is true.", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_enabled](#input\\_private\\_endpoint\\_enabled)", - "type": "Enable private endpoint for ACR (Premium SKU required)", - "required": false - }, - { - "name": "", - "description": " [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled)", - "type": "Enable public network access to the ACR", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group to create for the ACR", - "required": false - }, - { - "name": "", - "description": " [retention\\_days](#input\\_retention\\_days)", - "type": "Number of days to retain untagged manifests (Premium SKU only, 0 to disable)", - "required": false - }, - { - "name": "", - "description": " [sku](#input\\_sku)", - "type": "SKU tier for the ACR (Basic, Standard, Premium). Premium required for private endpoints.", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "Address prefix for the private endpoint subnet (only used if subnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "Name of the subnet for private endpoint. If not provided, a new subnet will be created.", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [trust\\_policy\\_enabled](#input\\_trust\\_policy\\_enabled)", - "type": "Enable content trust policy (Premium SKU only)", - "required": false - }, - { - "name": "", - "description": " [use\\_remote\\_gateways](#input\\_use\\_remote\\_gateways)", - "type": "Use remote gateways from hub VNet. Set to true only if hub has a VPN/ExpressRoute gateway configured.", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "Address space for the VNet (only used if vnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network for private endpoint. If not provided, a new VNet will be created.", - "required": false - }, - { - "name": "", - "description": " [zone\\_redundancy\\_enabled](#input\\_zone\\_redundancy\\_enabled)", - "type": "Enable zone redundancy for the ACR (Premium SKU only, available in select regions)", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [acr\\_id](#output\\_acr\\_id)", - "type": "The ID of the Azure Container Registry", - "required": false - }, - { - "name": "", - "description": " [acr\\_login\\_server](#output\\_acr\\_login\\_server)", - "type": "The login server URL for the Azure Container Registry", - "required": false - }, - { - "name": "", - "description": " [acr\\_name](#output\\_acr\\_name)", - "type": "The name of the Azure Container Registry", - "required": false - }, - { - "name": "", - "description": " [admin\\_password](#output\\_admin\\_password)", - "type": "Admin password for the Azure Container Registry (only available when admin\\_enabled is true)", - "required": false - }, - { - "name": "", - "description": " [admin\\_username](#output\\_admin\\_username)", - "type": "Admin username for the Azure Container Registry (only available when admin\\_enabled is true)", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#output\\_private\\_dns\\_zone\\_id)", - "type": "ID of the private DNS zone (when System-managed)", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_ip](#output\\_private\\_endpoint\\_ip)", - "type": "Private IP address of the ACR private endpoint", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the ACR", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "ID of the subnet used for private endpoint", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "ID of the virtual network used for private endpoint", - "required": false - } - ] - }, - { - "id": "azure-github-actions-terraform-setup", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-github-actions-terraform-setup.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/github-actions-terraform-setup/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/github-actions-terraform-setup/backplane", - "name": "Azure GitHub Actions Terraform Setup", - "supportedPlatforms": [ - "azure" - ], - "description": "Deploy directly to Azure using GitHub Actions and Terraform brought to you by meshStack\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [deploy\\_role\\_definition\\_id](#input\\_deploy\\_role\\_definition\\_id)", - "type": "Role definition ID to assign to the GitHub Actions App Service Managed Identity. This is used to deploy resources via Terraform.", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_name](#input\\_repo\\_name)", - "type": "Name of the repository to connect.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repository\\_html\\_url](#output\\_repository\\_html\\_url)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [deploy\\_role\\_definition\\_id](#input\\_deploy\\_role\\_definition\\_id)", - "type": "Role definition ID to assign to the GitHub Actions App Service Managed Identity. This is used to deploy resources via Terraform.", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_name](#input\\_repo\\_name)", - "type": "Name of the repository to connect.", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "n/a", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [repository\\_html\\_url](#output\\_repository\\_html\\_url)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "azure-github-actions-terraform-setup-buildingblock", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-github-actions-terraform-setup-buildingblock.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/github-actions-terraform-setup/buildingblock/pre_role_assignment", - "backplaneUrl": null, - "name": "Role Assignments for GitHub Actions Terraform Setup", - "supportedPlatforms": [ - "azure" - ], - "description": "Helper building block used to assign the necessary Azure roles\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [deploy\\_role\\_definition\\_id](#input\\_deploy\\_role\\_definition\\_id)", - "type": "Role definition ID to assign to the GitHub Actions App Service Managed Identity. This is used to deploy resources via Terraform.", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [deploy\\_role\\_definition\\_id](#input\\_deploy\\_role\\_definition\\_id)", - "type": "Role definition ID to assign to the GitHub Actions App Service Managed Identity. This is used to deploy resources via Terraform.", - "required": false - } - ], - "outputs": [] - }, - { - "id": "azure-key-vault", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-key-vault.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/key-vault/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/key-vault/backplane", - "name": "Azure Key Vault", - "supportedPlatforms": [ - "azure" - ], - "description": "Provides an Azure Key Vault for secure storage and management of secrets, keys, and certificates with RBAC authorization, optional private endpoint support, and hub connectivity.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [allow\\_gateway\\_transit\\_from\\_hub](#input\\_allow\\_gateway\\_transit\\_from\\_hub)", - "type": "Allow gateway transit from hub to spoke. Set to true if hub has a gateway and you want spoke to use it.", - "required": false - }, - { - "name": "", - "description": " [existing\\_vnet\\_resource\\_group\\_name](#input\\_existing\\_vnet\\_resource\\_group\\_name)", - "type": "Resource group name of the existing VNet. Only used when vnet\\_name is provided. Defaults to the Key Vault resource group if not specified.", - "required": false - }, - { - "name": "", - "description": " [hub\\_resource\\_group\\_name](#input\\_hub\\_resource\\_group\\_name)", - "type": "Resource group name of the hub virtual network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_subscription\\_id](#input\\_hub\\_subscription\\_id)", - "type": "Subscription ID of the hub network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet\\_name](#input\\_hub\\_vnet\\_name)", - "type": "Name of the hub virtual network to peer with. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "The name of the key vault.", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_resource\\_group\\_name](#input\\_key\\_vault\\_resource\\_group\\_name)", - "type": "The name of the resource group containing the key vault.", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The location/region where the key vault is created.", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#input\\_private\\_dns\\_zone\\_id)", - "type": "Private DNS Zone ID for private endpoint. Use 'System' for Azure-managed zone, or provide custom zone ID. Only used when private\\_endpoint\\_enabled is true.", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_enabled](#input\\_private\\_endpoint\\_enabled)", - "type": "Enable private endpoint for Key Vault", - "required": false - }, - { - "name": "", - "description": " [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "Address prefix for the private endpoint subnet (only used if subnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "Name of the subnet for private endpoint. If not provided, a new subnet will be created.", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [use\\_remote\\_gateways](#input\\_use\\_remote\\_gateways)", - "type": "Use remote gateways from hub VNet. Set to true only if hub has a VPN/ExpressRoute gateway configured.", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "Address space for the VNet (only used if vnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network for private endpoint. If not provided, a new VNet will be created.", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_id](#output\\_key\\_vault\\_id)", - "type": "The ID of the Azure Key Vault", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#output\\_key\\_vault\\_name)", - "type": "The name of the Azure Key Vault", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_resource\\_group](#output\\_key\\_vault\\_resource\\_group)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_uri](#output\\_key\\_vault\\_uri)", - "type": "The URI of the Azure Key Vault", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#output\\_private\\_dns\\_zone\\_id)", - "type": "ID of the private DNS zone (when System-managed)", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_ip](#output\\_private\\_endpoint\\_ip)", - "type": "Private IP address of the Key Vault private endpoint", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "ID of the subnet used for private endpoint", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "ID of the virtual network used for private endpoint", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [allow\\_gateway\\_transit\\_from\\_hub](#input\\_allow\\_gateway\\_transit\\_from\\_hub)", - "type": "Allow gateway transit from hub to spoke. Set to true if hub has a gateway and you want spoke to use it.", - "required": false - }, - { - "name": "", - "description": " [existing\\_vnet\\_resource\\_group\\_name](#input\\_existing\\_vnet\\_resource\\_group\\_name)", - "type": "Resource group name of the existing VNet. Only used when vnet\\_name is provided. Defaults to the Key Vault resource group if not specified.", - "required": false - }, - { - "name": "", - "description": " [hub\\_resource\\_group\\_name](#input\\_hub\\_resource\\_group\\_name)", - "type": "Resource group name of the hub virtual network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_subscription\\_id](#input\\_hub\\_subscription\\_id)", - "type": "Subscription ID of the hub network. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet\\_name](#input\\_hub\\_vnet\\_name)", - "type": "Name of the hub virtual network to peer with. Required when private\\_endpoint\\_enabled is true and connecting to a hub.", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "The name of the key vault.", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_resource\\_group\\_name](#input\\_key\\_vault\\_resource\\_group\\_name)", - "type": "The name of the resource group containing the key vault.", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The location/region where the key vault is created.", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#input\\_private\\_dns\\_zone\\_id)", - "type": "Private DNS Zone ID for private endpoint. Use 'System' for Azure-managed zone, or provide custom zone ID. Only used when private\\_endpoint\\_enabled is true.", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_enabled](#input\\_private\\_endpoint\\_enabled)", - "type": "Enable private endpoint for Key Vault", - "required": false - }, - { - "name": "", - "description": " [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [subnet\\_address\\_prefix](#input\\_subnet\\_address\\_prefix)", - "type": "Address prefix for the private endpoint subnet (only used if subnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "Name of the subnet for private endpoint. If not provided, a new subnet will be created.", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [use\\_remote\\_gateways](#input\\_use\\_remote\\_gateways)", - "type": "Use remote gateways from hub VNet. Set to true only if hub has a VPN/ExpressRoute gateway configured.", - "required": false - }, - { - "name": "", - "description": " [vnet\\_address\\_space](#input\\_vnet\\_address\\_space)", - "type": "Address space for the VNet (only used if vnet\\_name is not provided)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "Name of the virtual network for private endpoint. If not provided, a new VNet will be created.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [key\\_vault\\_id](#output\\_key\\_vault\\_id)", - "type": "The ID of the Azure Key Vault", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#output\\_key\\_vault\\_name)", - "type": "The name of the Azure Key Vault", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_resource\\_group](#output\\_key\\_vault\\_resource\\_group)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_uri](#output\\_key\\_vault\\_uri)", - "type": "The URI of the Azure Key Vault", - "required": false - }, - { - "name": "", - "description": " [private\\_dns\\_zone\\_id](#output\\_private\\_dns\\_zone\\_id)", - "type": "ID of the private DNS zone (when System-managed)", - "required": false - }, - { - "name": "", - "description": " [private\\_endpoint\\_ip](#output\\_private\\_endpoint\\_ip)", - "type": "Private IP address of the Key Vault private endpoint", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "ID of the subnet used for private endpoint", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "ID of the virtual network used for private endpoint", - "required": false - } - ] - }, - { - "id": "azure-postgresql", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-postgresql.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/postgresql/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/postgresql/backplane", - "name": "Azure PostgreSQL Deployment", - "supportedPlatforms": [ - "azure" - ], - "description": "Provides a managed Azure PostgreSQL database with scalability, security, and high availability.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [administrator\\_login](#input\\_administrator\\_login)", - "type": "Administrator username for PostgreSQL", - "required": false - }, - { - "name": "", - "description": " [auto\\_grow\\_enabled](#input\\_auto\\_grow\\_enabled)", - "type": "Enable auto-grow for storage", - "required": false - }, - { - "name": "", - "description": " [backup\\_retention\\_days](#input\\_backup\\_retention\\_days)", - "type": "Backup retention in days", - "required": false - }, - { - "name": "", - "description": " [geo\\_redundant\\_backup\\_enabled](#input\\_geo\\_redundant\\_backup\\_enabled)", - "type": "Enable geo-redundant backups", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_server\\_name](#input\\_postgresql\\_server\\_name)", - "type": "Name of the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_version](#input\\_postgresql\\_version)", - "type": "PostgreSQL version", - "required": false - }, - { - "name": "", - "description": " [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled)", - "type": "Enable public network access", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the Azure resource group", - "required": false - }, - { - "name": "", - "description": " [sku\\_name](#input\\_sku\\_name)", - "type": "The SKU name for the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [ssl\\_enforcement\\_enabled](#input\\_ssl\\_enforcement\\_enabled)", - "type": "Enforce SSL connection", - "required": false - }, - { - "name": "", - "description": " [ssl\\_minimal\\_tls\\_version\\_enforced](#input\\_ssl\\_minimal\\_tls\\_version\\_enforced)", - "type": "Minimum TLS version", - "required": false - }, - { - "name": "", - "description": " [storage\\_mb](#input\\_storage\\_mb)", - "type": "Storage size in MB", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#input\\_subscription\\_id)", - "type": "the Azure subscription id", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_admin\\_username](#output\\_postgresql\\_admin\\_username)", - "type": "The administrator username for PostgreSQL", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_fqdn](#output\\_postgresql\\_fqdn)", - "type": "The fully qualified domain name of the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_server\\_name](#output\\_postgresql\\_server\\_name)", - "type": "The name of the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_version](#output\\_postgresql\\_version)", - "type": "The PostgreSQL version", - "required": false - }, - { - "name": "", - "description": " [psql\\_admin\\_password](#output\\_psql\\_admin\\_password)", - "type": "The administrator password for PostgreSQL", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "The name of the resource group in which the PostgreSQL database is created", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [administrator\\_login](#input\\_administrator\\_login)", - "type": "Administrator username for PostgreSQL", - "required": false - }, - { - "name": "", - "description": " [auto\\_grow\\_enabled](#input\\_auto\\_grow\\_enabled)", - "type": "Enable auto-grow for storage", - "required": false - }, - { - "name": "", - "description": " [backup\\_retention\\_days](#input\\_backup\\_retention\\_days)", - "type": "Backup retention in days", - "required": false - }, - { - "name": "", - "description": " [geo\\_redundant\\_backup\\_enabled](#input\\_geo\\_redundant\\_backup\\_enabled)", - "type": "Enable geo-redundant backups", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "Azure region", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_server\\_name](#input\\_postgresql\\_server\\_name)", - "type": "Name of the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_version](#input\\_postgresql\\_version)", - "type": "PostgreSQL version", - "required": false - }, - { - "name": "", - "description": " [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled)", - "type": "Enable public network access", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the Azure resource group", - "required": false - }, - { - "name": "", - "description": " [sku\\_name](#input\\_sku\\_name)", - "type": "The SKU name for the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [ssl\\_enforcement\\_enabled](#input\\_ssl\\_enforcement\\_enabled)", - "type": "Enforce SSL connection", - "required": false - }, - { - "name": "", - "description": " [ssl\\_minimal\\_tls\\_version\\_enforced](#input\\_ssl\\_minimal\\_tls\\_version\\_enforced)", - "type": "Minimum TLS version", - "required": false - }, - { - "name": "", - "description": " [storage\\_mb](#input\\_storage\\_mb)", - "type": "Storage size in MB", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#input\\_subscription\\_id)", - "type": "the Azure subscription id", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [postgresql\\_admin\\_username](#output\\_postgresql\\_admin\\_username)", - "type": "The administrator username for PostgreSQL", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_fqdn](#output\\_postgresql\\_fqdn)", - "type": "The fully qualified domain name of the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_server\\_name](#output\\_postgresql\\_server\\_name)", - "type": "The name of the PostgreSQL server", - "required": false - }, - { - "name": "", - "description": " [postgresql\\_version](#output\\_postgresql\\_version)", - "type": "The PostgreSQL version", - "required": false - }, - { - "name": "", - "description": " [psql\\_admin\\_password](#output\\_psql\\_admin\\_password)", - "type": "The administrator password for PostgreSQL", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "The name of the resource group in which the PostgreSQL database is created", - "required": false - } - ] - }, - { - "id": "azure-service-principal", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-service-principal.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/service-principal/buildingblock", - "backplaneUrl": null, - "name": "Azure Service Principal", - "supportedPlatforms": [ - "azure" - ], - "description": "Creates an Entra ID application registration and service principal with role assignment for automated access to Azure resources", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [azure\\_role](#input\\_azure\\_role)", - "type": "Azure RBAC role to assign to the service principal on the subscription", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_id](#input\\_azure\\_subscription\\_id)", - "type": "Azure Subscription ID where role assignments will be created", - "required": false - }, - { - "name": "", - "description": " [create\\_client\\_secret](#input\\_create\\_client\\_secret)", - "type": "Whether to create a client secret for the service principal (set to false for workload identity federation)", - "required": false - }, - { - "name": "", - "description": " [description](#input\\_description)", - "type": "Description for the Entra ID application", - "required": false - }, - { - "name": "", - "description": " [display\\_name](#input\\_display\\_name)", - "type": "Display name for the Entra ID application and service principal", - "required": false - }, - { - "name": "", - "description": " [owners](#input\\_owners)", - "type": "List of object IDs to set as owners of the application (defaults to current user)", - "required": false - }, - { - "name": "", - "description": " [secret\\_rotation\\_days](#input\\_secret\\_rotation\\_days)", - "type": "Number of days before the service principal secret expires (only used if create\\_client\\_secret is true)", - "required": false - }, - { - "name": "", - "description": " [application\\_id](#output\\_application\\_id)", - "type": "Application (client) ID of the Entra ID application", - "required": false - }, - { - "name": "", - "description": " [application\\_object\\_id](#output\\_application\\_object\\_id)", - "type": "Object ID of the Entra ID application", - "required": false - }, - { - "name": "", - "description": " [authentication\\_method](#output\\_authentication\\_method)", - "type": "Authentication method for the service principal", - "required": false - }, - { - "name": "", - "description": " [azure\\_role](#output\\_azure\\_role)", - "type": "Azure role assigned to the service principal", - "required": false - }, - { - "name": "", - "description": " [client\\_secret](#output\\_client\\_secret)", - "type": "Client secret for the service principal (\"null\" if create\\_client\\_secret is false)", - "required": false - }, - { - "name": "", - "description": " [secret\\_expiration\\_date](#output\\_secret\\_expiration\\_date)", - "type": "Date when the service principal secret will expire (\"null\" if create\\_client\\_secret is false)", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_id](#output\\_service\\_principal\\_id)", - "type": "Client ID of the service principal (same as application\\_id)", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_object\\_id](#output\\_service\\_principal\\_object\\_id)", - "type": "Object ID of the service principal", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#output\\_subscription\\_id)", - "type": "Azure Subscription ID where role assignment was created", - "required": false - }, - { - "name": "", - "description": " [tenant\\_id](#output\\_tenant\\_id)", - "type": "Entra ID Tenant ID", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [azure\\_role](#input\\_azure\\_role)", - "type": "Azure RBAC role to assign to the service principal on the subscription", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_id](#input\\_azure\\_subscription\\_id)", - "type": "Azure Subscription ID where role assignments will be created", - "required": false - }, - { - "name": "", - "description": " [create\\_client\\_secret](#input\\_create\\_client\\_secret)", - "type": "Whether to create a client secret for the service principal (set to false for workload identity federation)", - "required": false - }, - { - "name": "", - "description": " [description](#input\\_description)", - "type": "Description for the Entra ID application", - "required": false - }, - { - "name": "", - "description": " [display\\_name](#input\\_display\\_name)", - "type": "Display name for the Entra ID application and service principal", - "required": false - }, - { - "name": "", - "description": " [owners](#input\\_owners)", - "type": "List of object IDs to set as owners of the application (defaults to current user)", - "required": false - }, - { - "name": "", - "description": " [secret\\_rotation\\_days](#input\\_secret\\_rotation\\_days)", - "type": "Number of days before the service principal secret expires (only used if create\\_client\\_secret is true)", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [application\\_id](#output\\_application\\_id)", - "type": "Application (client) ID of the Entra ID application", - "required": false - }, - { - "name": "", - "description": " [application\\_object\\_id](#output\\_application\\_object\\_id)", - "type": "Object ID of the Entra ID application", - "required": false - }, - { - "name": "", - "description": " [authentication\\_method](#output\\_authentication\\_method)", - "type": "Authentication method for the service principal", - "required": false - }, - { - "name": "", - "description": " [azure\\_role](#output\\_azure\\_role)", - "type": "Azure role assigned to the service principal", - "required": false - }, - { - "name": "", - "description": " [client\\_secret](#output\\_client\\_secret)", - "type": "Client secret for the service principal (\"null\" if create\\_client\\_secret is false)", - "required": false - }, - { - "name": "", - "description": " [secret\\_expiration\\_date](#output\\_secret\\_expiration\\_date)", - "type": "Date when the service principal secret will expire (\"null\" if create\\_client\\_secret is false)", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_id](#output\\_service\\_principal\\_id)", - "type": "Client ID of the service principal (same as application\\_id)", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_object\\_id](#output\\_service\\_principal\\_object\\_id)", - "type": "Object ID of the service principal", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#output\\_subscription\\_id)", - "type": "Azure Subscription ID where role assignment was created", - "required": false - }, - { - "name": "", - "description": " [tenant\\_id](#output\\_tenant\\_id)", - "type": "Entra ID Tenant ID", - "required": false - } - ] - }, - { - "id": "azure-spoke-network", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-spoke-network.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/spoke-network/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/spoke-network/backplane", - "name": "Spoke VNet", - "supportedPlatforms": [ - "azure" - ], - "description": "Provides VNet for your Azure subscription that's connected on a central network hub.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [address\\_space](#input\\_address\\_space)", - "type": "Address space of the virtual network in CIDR notation", - "required": false - }, - { - "name": "", - "description": " [azure\\_delay\\_seconds](#input\\_azure\\_delay\\_seconds)", - "type": "Number of additional seconds to wait between Azure API operations to mitigate eventual consistency issues in order to increase automation reliabilty.", - "required": false - }, - { - "name": "", - "description": " [hub\\_rg](#input\\_hub\\_rg)", - "type": "value", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet](#input\\_hub\\_vnet)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "name of the virtual spoke network. This name is used as the basis to generate resource names for vnets and peerings.", - "required": false - }, - { - "name": "", - "description": " [spoke\\_owner\\_principal\\_id](#input\\_spoke\\_owner\\_principal\\_id)", - "type": "Principal id that will become owner of the spokes. Defaults to the client\\_id of the spoke azurerm provider.", - "required": false - }, - { - "name": "", - "description": " [spoke\\_rg\\_name](#input\\_spoke\\_rg\\_name)", - "type": "name of the resource group to deploy for hosting the spoke vnet", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#input\\_subscription\\_id)", - "type": "The ID of the subscription that you want to deploy the spoke to", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the virtual network created by this module.", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [address\\_space](#input\\_address\\_space)", - "type": "Address space of the virtual network in CIDR notation", - "required": false - }, - { - "name": "", - "description": " [azure\\_delay\\_seconds](#input\\_azure\\_delay\\_seconds)", - "type": "Number of additional seconds to wait between Azure API operations to mitigate eventual consistency issues in order to increase automation reliabilty.", - "required": false - }, - { - "name": "", - "description": " [hub\\_rg](#input\\_hub\\_rg)", - "type": "value", - "required": false - }, - { - "name": "", - "description": " [hub\\_vnet](#input\\_hub\\_vnet)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "name of the virtual spoke network. This name is used as the basis to generate resource names for vnets and peerings.", - "required": false - }, - { - "name": "", - "description": " [spoke\\_owner\\_principal\\_id](#input\\_spoke\\_owner\\_principal\\_id)", - "type": "Principal id that will become owner of the spokes. Defaults to the client\\_id of the spoke azurerm provider.", - "required": false - }, - { - "name": "", - "description": " [spoke\\_rg\\_name](#input\\_spoke\\_rg\\_name)", - "type": "name of the resource group to deploy for hosting the spoke vnet", - "required": false - }, - { - "name": "", - "description": " [subscription\\_id](#input\\_subscription\\_id)", - "type": "The ID of the subscription that you want to deploy the spoke to", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the virtual network created by this module.", - "required": false - } - ] - }, - { - "id": "azure-storage-account", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-storage-account.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/storage-account/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/storage-account/backplane", - "name": "Azure Storage Account", - "supportedPlatforms": [ - "azure" - ], - "description": "Provides an Azure Storage Account as a highly scalable, durable, and secure container that groups together a set of Azure Storage services.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The location/region where the storage account is created.", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_name](#input\\_storage\\_account\\_name)", - "type": "The name of the storage account. Must be unique across entire Azure Region, not just within a Subscription.", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_resource\\_group\\_name](#input\\_storage\\_account\\_resource\\_group\\_name)", - "type": "The name of the resource group containing the storage account.", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_id](#output\\_storage\\_account\\_id)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_name](#output\\_storage\\_account\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_resource\\_group](#output\\_storage\\_account\\_resource\\_group)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The location/region where the storage account is created.", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_name](#input\\_storage\\_account\\_name)", - "type": "The name of the storage account. Must be unique across entire Azure Region, not just within a Subscription.", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_resource\\_group\\_name](#input\\_storage\\_account\\_resource\\_group\\_name)", - "type": "The name of the resource group containing the storage account.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [storage\\_account\\_id](#output\\_storage\\_account\\_id)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_name](#output\\_storage\\_account\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [storage\\_account\\_resource\\_group](#output\\_storage\\_account\\_resource\\_group)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "azure-vmss", - "platformType": "azure", - "logo": "assets/building-block-logos/azure-vmss.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azure/vmss/buildingblock", - "backplaneUrl": null, - "name": "Azure Virtual Machine Scale Set", - "supportedPlatforms": [ - "azure" - ], - "description": "Creates an Azure Virtual Machine Scale Set (VMSS) with comprehensive configuration options for scalable, highly available compute infrastructure.\n", - "category": "compute", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [azurerm](#requirement\\_azurerm)", - "type": "4.18.0", - "required": false - }, - { - "name": "", - "description": " [random](#requirement\\_random)", - "type": "3.6.3", - "required": false - }, - { - "name": "", - "description": " [admin\\_password](#input\\_admin\\_password)", - "type": "The admin password for Windows VM instances (required for Windows)", - "required": false - }, - { - "name": "", - "description": " [admin\\_username](#input\\_admin\\_username)", - "type": "The admin username for the VM instances", - "required": false - }, - { - "name": "", - "description": " [backend\\_port](#input\\_backend\\_port)", - "type": "Backend port for load balancer rule", - "required": false - }, - { - "name": "", - "description": " [custom\\_data](#input\\_custom\\_data)", - "type": "Custom data script to run on VM initialization (cloud-init for Linux, PowerShell for Windows)", - "required": false - }, - { - "name": "", - "description": " [enable\\_autoscaling](#input\\_enable\\_autoscaling)", - "type": "Enable autoscaling based on CPU metrics", - "required": false - }, - { - "name": "", - "description": " [enable\\_boot\\_diagnostics](#input\\_enable\\_boot\\_diagnostics)", - "type": "Enable boot diagnostics for VM instances", - "required": false - }, - { - "name": "", - "description": " [enable\\_load\\_balancer](#input\\_enable\\_load\\_balancer)", - "type": "Enable Azure Load Balancer for the scale set", - "required": false - }, - { - "name": "", - "description": " [enable\\_public\\_ip](#input\\_enable\\_public\\_ip)", - "type": "Enable public IP for the load balancer", - "required": false - }, - { - "name": "", - "description": " [enable\\_rdp\\_access](#input\\_enable\\_rdp\\_access)", - "type": "Enable RDP access (port 3389) through NSG for Windows VMs", - "required": false - }, - { - "name": "", - "description": " [enable\\_spot\\_instances](#input\\_enable\\_spot\\_instances)", - "type": "Enable spot instances for significant cost savings (VMs can be evicted)", - "required": false - }, - { - "name": "", - "description": " [enable\\_ssh\\_access](#input\\_enable\\_ssh\\_access)", - "type": "Enable SSH access (port 22) through NSG for Linux VMs", - "required": false - }, - { - "name": "", - "description": " [frontend\\_port](#input\\_frontend\\_port)", - "type": "Frontend port for load balancer rule", - "required": false - }, - { - "name": "", - "description": " [health\\_probe\\_port](#input\\_health\\_probe\\_port)", - "type": "Port for health probe - required when upgrade\\_mode is Automatic or Rolling", - "required": false - }, - { - "name": "", - "description": " [health\\_probe\\_protocol](#input\\_health\\_probe\\_protocol)", - "type": "Protocol for health probe (Http, Https, Tcp) - required when upgrade\\_mode is Automatic or Rolling", - "required": false - }, - { - "name": "", - "description": " [health\\_probe\\_request\\_path](#input\\_health\\_probe\\_request\\_path)", - "type": "Request path for HTTP/HTTPS health probe - required for Http/Https protocol", - "required": false - }, - { - "name": "", - "description": " [image\\_offer](#input\\_image\\_offer)", - "type": "The offer of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_publisher](#input\\_image\\_publisher)", - "type": "The publisher of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_sku](#input\\_image\\_sku)", - "type": "The SKU of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_version](#input\\_image\\_version)", - "type": "The version of the image", - "required": false - }, - { - "name": "", - "description": " [instances](#input\\_instances)", - "type": "The initial number of instances in the scale set", - "required": false - }, - { - "name": "", - "description": " [load\\_balancer\\_sku](#input\\_load\\_balancer\\_sku)", - "type": "SKU of the Load Balancer (Basic or Standard)", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [max\\_instances](#input\\_max\\_instances)", - "type": "Maximum number of instances when autoscaling is enabled", - "required": false - }, - { - "name": "", - "description": " [min\\_instances](#input\\_min\\_instances)", - "type": "Minimum number of instances when autoscaling is enabled", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb)", - "type": "The size of the OS disk in GB", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_storage\\_type](#input\\_os\\_disk\\_storage\\_type)", - "type": "The storage account type for the OS disk", - "required": false - }, - { - "name": "", - "description": " [os\\_type](#input\\_os\\_type)", - "type": "The operating system type (Linux or Windows)", - "required": false - }, - { - "name": "", - "description": " [overprovision](#input\\_overprovision)", - "type": "Overprovision VMs to improve deployment success rate", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "The name of the resource group where resources will be created", - "required": false - }, - { - "name": "", - "description": " [scale\\_in\\_cpu\\_threshold](#input\\_scale\\_in\\_cpu\\_threshold)", - "type": "CPU percentage threshold to trigger scale in", - "required": false - }, - { - "name": "", - "description": " [scale\\_out\\_cpu\\_threshold](#input\\_scale\\_out\\_cpu\\_threshold)", - "type": "CPU percentage threshold to trigger scale out", - "required": false - }, - { - "name": "", - "description": " [single\\_placement\\_group](#input\\_single\\_placement\\_group)", - "type": "Limit scale set to single placement group (max 100 instances)", - "required": false - }, - { - "name": "", - "description": " [sku](#input\\_sku)", - "type": "The SKU of the Virtual Machine Scale Set (instance size)", - "required": false - }, - { - "name": "", - "description": " [spot\\_eviction\\_policy](#input\\_spot\\_eviction\\_policy)", - "type": "Eviction policy for spot instances (Deallocate or Delete)", - "required": false - }, - { - "name": "", - "description": " [spot\\_max\\_bid\\_price](#input\\_spot\\_max\\_bid\\_price)", - "type": "Maximum price per hour for spot instances. -1 means pay up to on-demand price", - "required": false - }, - { - "name": "", - "description": " [ssh\\_public\\_key](#input\\_ssh\\_public\\_key)", - "type": "SSH public key for Linux VM authentication (required for Linux)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "The name of the existing subnet where VMSS will be deployed", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [upgrade\\_mode](#input\\_upgrade\\_mode)", - "type": "Upgrade policy mode for the scale set (Automatic, Manual, Rolling)", - "required": false - }, - { - "name": "", - "description": " [vmss\\_name](#input\\_vmss\\_name)", - "type": "The name of the Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "The name of the existing virtual network (spoke VNet)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_resource\\_group\\_name](#input\\_vnet\\_resource\\_group\\_name)", - "type": "The name of the resource group containing the virtual network", - "required": false - }, - { - "name": "", - "description": " [zones](#input\\_zones)", - "type": "Availability zones to spread instances across (e.g., [1, 2, 3])", - "required": false - }, - { - "name": "", - "description": " [autoscaling\\_enabled](#output\\_autoscaling\\_enabled)", - "type": "Whether autoscaling is enabled", - "required": false - }, - { - "name": "", - "description": " [current\\_instances](#output\\_current\\_instances)", - "type": "The configured number of instances", - "required": false - }, - { - "name": "", - "description": " [instance\\_size](#output\\_instance\\_size)", - "type": "The SKU/size of VM instances", - "required": false - }, - { - "name": "", - "description": " [load\\_balancer\\_frontend\\_ip](#output\\_load\\_balancer\\_frontend\\_ip)", - "type": "The frontend IP address of the load balancer (public or private)", - "required": false - }, - { - "name": "", - "description": " [load\\_balancer\\_id](#output\\_load\\_balancer\\_id)", - "type": "The ID of the load balancer (if enabled)", - "required": false - }, - { - "name": "", - "description": " [location](#output\\_location)", - "type": "The Azure region where resources are deployed", - "required": false - }, - { - "name": "", - "description": " [public\\_ip\\_address](#output\\_public\\_ip\\_address)", - "type": "The public IP address of the load balancer (if enabled)", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "The name of the resource group", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "The ID of the subnet", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Markdown summary output of the building block", - "required": false - }, - { - "name": "", - "description": " [vmss\\_id](#output\\_vmss\\_id)", - "type": "The ID of the Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vmss\\_identity\\_principal\\_id](#output\\_vmss\\_identity\\_principal\\_id)", - "type": "The Principal ID of the system-assigned managed identity", - "required": false - }, - { - "name": "", - "description": " [vmss\\_name](#output\\_vmss\\_name)", - "type": "The name of the Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the virtual network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#output\\_vnet\\_name)", - "type": "The name of the virtual network", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [admin\\_password](#input\\_admin\\_password)", - "type": "The admin password for Windows VM instances (required for Windows)", - "required": false - }, - { - "name": "", - "description": " [admin\\_username](#input\\_admin\\_username)", - "type": "The admin username for the VM instances", - "required": false - }, - { - "name": "", - "description": " [backend\\_port](#input\\_backend\\_port)", - "type": "Backend port for load balancer rule", - "required": false - }, - { - "name": "", - "description": " [custom\\_data](#input\\_custom\\_data)", - "type": "Custom data script to run on VM initialization (cloud-init for Linux, PowerShell for Windows)", - "required": false - }, - { - "name": "", - "description": " [enable\\_autoscaling](#input\\_enable\\_autoscaling)", - "type": "Enable autoscaling based on CPU metrics", - "required": false - }, - { - "name": "", - "description": " [enable\\_boot\\_diagnostics](#input\\_enable\\_boot\\_diagnostics)", - "type": "Enable boot diagnostics for VM instances", - "required": false - }, - { - "name": "", - "description": " [enable\\_load\\_balancer](#input\\_enable\\_load\\_balancer)", - "type": "Enable Azure Load Balancer for the scale set", - "required": false - }, - { - "name": "", - "description": " [enable\\_public\\_ip](#input\\_enable\\_public\\_ip)", - "type": "Enable public IP for the load balancer", - "required": false - }, - { - "name": "", - "description": " [enable\\_rdp\\_access](#input\\_enable\\_rdp\\_access)", - "type": "Enable RDP access (port 3389) through NSG for Windows VMs", - "required": false - }, - { - "name": "", - "description": " [enable\\_spot\\_instances](#input\\_enable\\_spot\\_instances)", - "type": "Enable spot instances for significant cost savings (VMs can be evicted)", - "required": false - }, - { - "name": "", - "description": " [enable\\_ssh\\_access](#input\\_enable\\_ssh\\_access)", - "type": "Enable SSH access (port 22) through NSG for Linux VMs", - "required": false - }, - { - "name": "", - "description": " [frontend\\_port](#input\\_frontend\\_port)", - "type": "Frontend port for load balancer rule", - "required": false - }, - { - "name": "", - "description": " [health\\_probe\\_port](#input\\_health\\_probe\\_port)", - "type": "Port for health probe - required when upgrade\\_mode is Automatic or Rolling", - "required": false - }, - { - "name": "", - "description": " [health\\_probe\\_protocol](#input\\_health\\_probe\\_protocol)", - "type": "Protocol for health probe (Http, Https, Tcp) - required when upgrade\\_mode is Automatic or Rolling", - "required": false - }, - { - "name": "", - "description": " [health\\_probe\\_request\\_path](#input\\_health\\_probe\\_request\\_path)", - "type": "Request path for HTTP/HTTPS health probe - required for Http/Https protocol", - "required": false - }, - { - "name": "", - "description": " [image\\_offer](#input\\_image\\_offer)", - "type": "The offer of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_publisher](#input\\_image\\_publisher)", - "type": "The publisher of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_sku](#input\\_image\\_sku)", - "type": "The SKU of the image", - "required": false - }, - { - "name": "", - "description": " [image\\_version](#input\\_image\\_version)", - "type": "The version of the image", - "required": false - }, - { - "name": "", - "description": " [instances](#input\\_instances)", - "type": "The initial number of instances in the scale set", - "required": false - }, - { - "name": "", - "description": " [load\\_balancer\\_sku](#input\\_load\\_balancer\\_sku)", - "type": "SKU of the Load Balancer (Basic or Standard)", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The Azure region where resources will be deployed", - "required": false - }, - { - "name": "", - "description": " [max\\_instances](#input\\_max\\_instances)", - "type": "Maximum number of instances when autoscaling is enabled", - "required": false - }, - { - "name": "", - "description": " [min\\_instances](#input\\_min\\_instances)", - "type": "Minimum number of instances when autoscaling is enabled", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_size\\_gb](#input\\_os\\_disk\\_size\\_gb)", - "type": "The size of the OS disk in GB", - "required": false - }, - { - "name": "", - "description": " [os\\_disk\\_storage\\_type](#input\\_os\\_disk\\_storage\\_type)", - "type": "The storage account type for the OS disk", - "required": false - }, - { - "name": "", - "description": " [os\\_type](#input\\_os\\_type)", - "type": "The operating system type (Linux or Windows)", - "required": false - }, - { - "name": "", - "description": " [overprovision](#input\\_overprovision)", - "type": "Overprovision VMs to improve deployment success rate", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "The name of the resource group where resources will be created", - "required": false - }, - { - "name": "", - "description": " [scale\\_in\\_cpu\\_threshold](#input\\_scale\\_in\\_cpu\\_threshold)", - "type": "CPU percentage threshold to trigger scale in", - "required": false - }, - { - "name": "", - "description": " [scale\\_out\\_cpu\\_threshold](#input\\_scale\\_out\\_cpu\\_threshold)", - "type": "CPU percentage threshold to trigger scale out", - "required": false - }, - { - "name": "", - "description": " [single\\_placement\\_group](#input\\_single\\_placement\\_group)", - "type": "Limit scale set to single placement group (max 100 instances)", - "required": false - }, - { - "name": "", - "description": " [sku](#input\\_sku)", - "type": "The SKU of the Virtual Machine Scale Set (instance size)", - "required": false - }, - { - "name": "", - "description": " [spot\\_eviction\\_policy](#input\\_spot\\_eviction\\_policy)", - "type": "Eviction policy for spot instances (Deallocate or Delete)", - "required": false - }, - { - "name": "", - "description": " [spot\\_max\\_bid\\_price](#input\\_spot\\_max\\_bid\\_price)", - "type": "Maximum price per hour for spot instances. -1 means pay up to on-demand price", - "required": false - }, - { - "name": "", - "description": " [ssh\\_public\\_key](#input\\_ssh\\_public\\_key)", - "type": "SSH public key for Linux VM authentication (required for Linux)", - "required": false - }, - { - "name": "", - "description": " [subnet\\_name](#input\\_subnet\\_name)", - "type": "The name of the existing subnet where VMSS will be deployed", - "required": false - }, - { - "name": "", - "description": " [tags](#input\\_tags)", - "type": "Tags to apply to all resources", - "required": false - }, - { - "name": "", - "description": " [upgrade\\_mode](#input\\_upgrade\\_mode)", - "type": "Upgrade policy mode for the scale set (Automatic, Manual, Rolling)", - "required": false - }, - { - "name": "", - "description": " [vmss\\_name](#input\\_vmss\\_name)", - "type": "The name of the Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#input\\_vnet\\_name)", - "type": "The name of the existing virtual network (spoke VNet)", - "required": false - }, - { - "name": "", - "description": " [vnet\\_resource\\_group\\_name](#input\\_vnet\\_resource\\_group\\_name)", - "type": "The name of the resource group containing the virtual network", - "required": false - }, - { - "name": "", - "description": " [zones](#input\\_zones)", - "type": "Availability zones to spread instances across (e.g., [1, 2, 3])", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [autoscaling\\_enabled](#output\\_autoscaling\\_enabled)", - "type": "Whether autoscaling is enabled", - "required": false - }, - { - "name": "", - "description": " [current\\_instances](#output\\_current\\_instances)", - "type": "The configured number of instances", - "required": false - }, - { - "name": "", - "description": " [instance\\_size](#output\\_instance\\_size)", - "type": "The SKU/size of VM instances", - "required": false - }, - { - "name": "", - "description": " [load\\_balancer\\_frontend\\_ip](#output\\_load\\_balancer\\_frontend\\_ip)", - "type": "The frontend IP address of the load balancer (public or private)", - "required": false - }, - { - "name": "", - "description": " [load\\_balancer\\_id](#output\\_load\\_balancer\\_id)", - "type": "The ID of the load balancer (if enabled)", - "required": false - }, - { - "name": "", - "description": " [location](#output\\_location)", - "type": "The Azure region where resources are deployed", - "required": false - }, - { - "name": "", - "description": " [public\\_ip\\_address](#output\\_public\\_ip\\_address)", - "type": "The public IP address of the load balancer (if enabled)", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "The name of the resource group", - "required": false - }, - { - "name": "", - "description": " [subnet\\_id](#output\\_subnet\\_id)", - "type": "The ID of the subnet", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Markdown summary output of the building block", - "required": false - }, - { - "name": "", - "description": " [vmss\\_id](#output\\_vmss\\_id)", - "type": "The ID of the Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vmss\\_identity\\_principal\\_id](#output\\_vmss\\_identity\\_principal\\_id)", - "type": "The Principal ID of the system-assigned managed identity", - "required": false - }, - { - "name": "", - "description": " [vmss\\_name](#output\\_vmss\\_name)", - "type": "The name of the Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vnet\\_id](#output\\_vnet\\_id)", - "type": "The ID of the virtual network", - "required": false - }, - { - "name": "", - "description": " [vnet\\_name](#output\\_vnet\\_name)", - "type": "The name of the virtual network", - "required": false - } - ] - }, - { - "id": "azuredevops-agent-pool", - "platformType": "azuredevops", - "logo": "assets/building-block-logos/azuredevops-agent-pool.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/agent-pool/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/agent-pool/backplane", - "name": "Azure DevOps Agent Pool", - "supportedPlatforms": [ - "azuredevops" - ], - "description": "Creates an Azure DevOps agent pool connected to an existing Azure VMSS for elastic scaling of build agents.\n", - "category": "devops", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [agent\\_interactive\\_ui](#input\\_agent\\_interactive\\_ui)", - "type": "Enable agents to run with interactive UI", - "required": false - }, - { - "name": "", - "description": " [agent\\_pool\\_name](#input\\_agent\\_pool\\_name)", - "type": "Name of the Azure DevOps agent pool", - "required": false - }, - { - "name": "", - "description": " [auto\\_provision](#input\\_auto\\_provision)", - "type": "Automatically provision projects with this agent pool", - "required": false - }, - { - "name": "", - "description": " [auto\\_update](#input\\_auto\\_update)", - "type": "Automatically update agents in this pool", - "required": false - }, - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [desired\\_idle](#input\\_desired\\_idle)", - "type": "Number of agents to keep idle and ready to run jobs", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [max\\_capacity](#input\\_max\\_capacity)", - "type": "Maximum number of virtual machines in the scale set", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the Azure DevOps PAT Token stored in the KeyVault", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps project ID to authorize the agent pool (optional)", - "required": false - }, - { - "name": "", - "description": " [recycle\\_after\\_each\\_use](#input\\_recycle\\_after\\_each\\_use)", - "type": "Tear down the virtual machine after each use", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Resource group name containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [service\\_endpoint\\_id](#input\\_service\\_endpoint\\_id)", - "type": "ID of the Azure service connection for the elastic pool", - "required": false - }, - { - "name": "", - "description": " [service\\_endpoint\\_scope](#input\\_service\\_endpoint\\_scope)", - "type": "Project ID where the service endpoint is defined", - "required": false - }, - { - "name": "", - "description": " [time\\_to\\_live\\_minutes](#input\\_time\\_to\\_live\\_minutes)", - "type": "Time in minutes to keep idle agents before removing them", - "required": false - }, - { - "name": "", - "description": " [vmss\\_name](#input\\_vmss\\_name)", - "type": "Name of the existing Azure Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vmss\\_resource\\_group\\_name](#input\\_vmss\\_resource\\_group\\_name)", - "type": "Resource group name containing the VMSS", - "required": false - }, - { - "name": "", - "description": " [agent\\_pool\\_id](#output\\_agent\\_pool\\_id)", - "type": "ID of the created Azure DevOps agent pool", - "required": false - }, - { - "name": "", - "description": " [agent\\_pool\\_name](#output\\_agent\\_pool\\_name)", - "type": "Name of the created Azure DevOps agent pool", - "required": false - }, - { - "name": "", - "description": " [agent\\_queue\\_id](#output\\_agent\\_queue\\_id)", - "type": "ID of the agent queue in the project", - "required": false - }, - { - "name": "", - "description": " [desired\\_idle](#output\\_desired\\_idle)", - "type": "Number of desired idle agents", - "required": false - }, - { - "name": "", - "description": " [elastic\\_pool\\_id](#output\\_elastic\\_pool\\_id)", - "type": "ID of the elastic pool configuration", - "required": false - }, - { - "name": "", - "description": " [max\\_capacity](#output\\_max\\_capacity)", - "type": "Maximum capacity of the elastic pool", - "required": false - }, - { - "name": "", - "description": " [vmss\\_id](#output\\_vmss\\_id)", - "type": "Azure Resource ID of the VMSS", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [agent\\_interactive\\_ui](#input\\_agent\\_interactive\\_ui)", - "type": "Enable agents to run with interactive UI", - "required": false - }, - { - "name": "", - "description": " [agent\\_pool\\_name](#input\\_agent\\_pool\\_name)", - "type": "Name of the Azure DevOps agent pool", - "required": false - }, - { - "name": "", - "description": " [auto\\_provision](#input\\_auto\\_provision)", - "type": "Automatically provision projects with this agent pool", - "required": false - }, - { - "name": "", - "description": " [auto\\_update](#input\\_auto\\_update)", - "type": "Automatically update agents in this pool", - "required": false - }, - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [desired\\_idle](#input\\_desired\\_idle)", - "type": "Number of agents to keep idle and ready to run jobs", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [max\\_capacity](#input\\_max\\_capacity)", - "type": "Maximum number of virtual machines in the scale set", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the Azure DevOps PAT Token stored in the KeyVault", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps project ID to authorize the agent pool (optional)", - "required": false - }, - { - "name": "", - "description": " [recycle\\_after\\_each\\_use](#input\\_recycle\\_after\\_each\\_use)", - "type": "Tear down the virtual machine after each use", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Resource group name containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [service\\_endpoint\\_id](#input\\_service\\_endpoint\\_id)", - "type": "ID of the Azure service connection for the elastic pool", - "required": false - }, - { - "name": "", - "description": " [service\\_endpoint\\_scope](#input\\_service\\_endpoint\\_scope)", - "type": "Project ID where the service endpoint is defined", - "required": false - }, - { - "name": "", - "description": " [time\\_to\\_live\\_minutes](#input\\_time\\_to\\_live\\_minutes)", - "type": "Time in minutes to keep idle agents before removing them", - "required": false - }, - { - "name": "", - "description": " [vmss\\_name](#input\\_vmss\\_name)", - "type": "Name of the existing Azure Virtual Machine Scale Set", - "required": false - }, - { - "name": "", - "description": " [vmss\\_resource\\_group\\_name](#input\\_vmss\\_resource\\_group\\_name)", - "type": "Resource group name containing the VMSS", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [agent\\_pool\\_id](#output\\_agent\\_pool\\_id)", - "type": "ID of the created Azure DevOps agent pool", - "required": false - }, - { - "name": "", - "description": " [agent\\_pool\\_name](#output\\_agent\\_pool\\_name)", - "type": "Name of the created Azure DevOps agent pool", - "required": false - }, - { - "name": "", - "description": " [agent\\_queue\\_id](#output\\_agent\\_queue\\_id)", - "type": "ID of the agent queue in the project", - "required": false - }, - { - "name": "", - "description": " [desired\\_idle](#output\\_desired\\_idle)", - "type": "Number of desired idle agents", - "required": false - }, - { - "name": "", - "description": " [elastic\\_pool\\_id](#output\\_elastic\\_pool\\_id)", - "type": "ID of the elastic pool configuration", - "required": false - }, - { - "name": "", - "description": " [max\\_capacity](#output\\_max\\_capacity)", - "type": "Maximum capacity of the elastic pool", - "required": false - }, - { - "name": "", - "description": " [vmss\\_id](#output\\_vmss\\_id)", - "type": "Azure Resource ID of the VMSS", - "required": false - } - ] - }, - { - "id": "azuredevops-pipeline", - "platformType": "azuredevops", - "logo": "assets/building-block-logos/azuredevops-pipeline.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/pipeline/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/pipeline/backplane", - "name": "Azure DevOps Pipeline", - "supportedPlatforms": [ - "azuredevops" - ], - "description": "Provides a CI/CD pipeline in Azure DevOps linked to a repository with YAML-based configuration", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [branch\\_name](#input\\_branch\\_name)", - "type": "Default branch for the pipeline", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the secret in Key Vault that contains the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_name](#input\\_pipeline\\_name)", - "type": "Name of the pipeline to create", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_variables](#input\\_pipeline\\_variables)", - "type": "List of pipeline variables to create", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps Project ID where the pipeline will be created", - "required": false - }, - { - "name": "", - "description": " [repository\\_id](#input\\_repository\\_id)", - "type": "Repository ID or name where the pipeline YAML file is located", - "required": false - }, - { - "name": "", - "description": " [repository\\_type](#input\\_repository\\_type)", - "type": "Type of repository. Options: TfsGit, GitHub, GitHubEnterprise, Bitbucket", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [variable\\_group\\_ids](#input\\_variable\\_group\\_ids)", - "type": "List of variable group IDs to link to this pipeline", - "required": false - }, - { - "name": "", - "description": " [yaml\\_path](#input\\_yaml\\_path)", - "type": "Path to the YAML pipeline definition file in the repository", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_id](#output\\_pipeline\\_id)", - "type": "ID of the created pipeline", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_name](#output\\_pipeline\\_name)", - "type": "Name of the created pipeline", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_revision](#output\\_pipeline\\_revision)", - "type": "Revision number of the pipeline", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_url](#output\\_pipeline\\_url)", - "type": "Deep link URL to the pipeline in Azure DevOps", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#output\\_project\\_id)", - "type": "Project ID where the pipeline was created", - "required": false - }, - { - "name": "", - "description": " [repository\\_id](#output\\_repository\\_id)", - "type": "Repository ID linked to the pipeline", - "required": false - }, - { - "name": "", - "description": " [yaml\\_path](#output\\_yaml\\_path)", - "type": "Path to the YAML pipeline definition", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [branch\\_name](#input\\_branch\\_name)", - "type": "Default branch for the pipeline", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the secret in Key Vault that contains the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_name](#input\\_pipeline\\_name)", - "type": "Name of the pipeline to create", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_variables](#input\\_pipeline\\_variables)", - "type": "List of pipeline variables to create", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps Project ID where the pipeline will be created", - "required": false - }, - { - "name": "", - "description": " [repository\\_id](#input\\_repository\\_id)", - "type": "Repository ID or name where the pipeline YAML file is located", - "required": false - }, - { - "name": "", - "description": " [repository\\_type](#input\\_repository\\_type)", - "type": "Type of repository. Options: TfsGit, GitHub, GitHubEnterprise, Bitbucket", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [variable\\_group\\_ids](#input\\_variable\\_group\\_ids)", - "type": "List of variable group IDs to link to this pipeline", - "required": false - }, - { - "name": "", - "description": " [yaml\\_path](#input\\_yaml\\_path)", - "type": "Path to the YAML pipeline definition file in the repository", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [pipeline\\_id](#output\\_pipeline\\_id)", - "type": "ID of the created pipeline", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_name](#output\\_pipeline\\_name)", - "type": "Name of the created pipeline", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_revision](#output\\_pipeline\\_revision)", - "type": "Revision number of the pipeline", - "required": false - }, - { - "name": "", - "description": " [pipeline\\_url](#output\\_pipeline\\_url)", - "type": "Deep link URL to the pipeline in Azure DevOps", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#output\\_project\\_id)", - "type": "Project ID where the pipeline was created", - "required": false - }, - { - "name": "", - "description": " [repository\\_id](#output\\_repository\\_id)", - "type": "Repository ID linked to the pipeline", - "required": false - }, - { - "name": "", - "description": " [yaml\\_path](#output\\_yaml\\_path)", - "type": "Path to the YAML pipeline definition", - "required": false - } - ] - }, - { - "id": "azuredevops-project", - "platformType": "azuredevops", - "logo": "assets/building-block-logos/azuredevops-project.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/project/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/project/backplane", - "name": "Azure DevOps Project", - "supportedPlatforms": [ - "azuredevops" - ], - "description": "Creates and manages Azure DevOps projects with user entitlements, stakeholder licenses, and role-based group memberships.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [project\\_description](#input\\_project\\_description)", - "type": "Description of the Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_features](#input\\_project\\_features)", - "type": "Project features to enable/disable", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#input\\_project\\_name)", - "type": "Name of the Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_visibility](#input\\_project\\_visibility)", - "type": "Visibility of the project (private or public)", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Resource group name containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [version\\_control](#input\\_version\\_control)", - "type": "Version control system for the project", - "required": false - }, - { - "name": "", - "description": " [work\\_item\\_template](#input\\_work\\_item\\_template)", - "type": "Work item process template", - "required": false - }, - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#output\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL", - "required": false - }, - { - "name": "", - "description": " [group\\_memberships](#output\\_group\\_memberships)", - "type": "Information about group memberships", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#output\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#output\\_pat\\_secret\\_name)", - "type": "Name of the Azure DevOps PAT secret in Key Vault", - "required": false - }, - { - "name": "", - "description": " [project\\_features](#output\\_project\\_features)", - "type": "Enabled/disabled project features", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#output\\_project\\_id)", - "type": "ID of the created Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#output\\_project\\_name)", - "type": "Name of the created Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_url](#output\\_project\\_url)", - "type": "URL of the created Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_visibility](#output\\_project\\_visibility)", - "type": "Visibility of the project", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "Resource group name containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [user\\_assignments](#output\\_user\\_assignments)", - "type": "Map of users and their assigned roles", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [project\\_description](#input\\_project\\_description)", - "type": "Description of the Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_features](#input\\_project\\_features)", - "type": "Project features to enable/disable", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#input\\_project\\_name)", - "type": "Name of the Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_visibility](#input\\_project\\_visibility)", - "type": "Visibility of the project (private or public)", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Resource group name containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [version\\_control](#input\\_version\\_control)", - "type": "Version control system for the project", - "required": false - }, - { - "name": "", - "description": " [work\\_item\\_template](#input\\_work\\_item\\_template)", - "type": "Work item process template", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#output\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL", - "required": false - }, - { - "name": "", - "description": " [group\\_memberships](#output\\_group\\_memberships)", - "type": "Information about group memberships", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#output\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#output\\_pat\\_secret\\_name)", - "type": "Name of the Azure DevOps PAT secret in Key Vault", - "required": false - }, - { - "name": "", - "description": " [project\\_features](#output\\_project\\_features)", - "type": "Enabled/disabled project features", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#output\\_project\\_id)", - "type": "ID of the created Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#output\\_project\\_name)", - "type": "Name of the created Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_url](#output\\_project\\_url)", - "type": "URL of the created Azure DevOps project", - "required": false - }, - { - "name": "", - "description": " [project\\_visibility](#output\\_project\\_visibility)", - "type": "Visibility of the project", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#output\\_resource\\_group\\_name)", - "type": "Resource group name containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [user\\_assignments](#output\\_user\\_assignments)", - "type": "Map of users and their assigned roles", - "required": false - } - ] - }, - { - "id": "azuredevops-repository", - "platformType": "azuredevops", - "logo": "assets/building-block-logos/azuredevops-repository.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/repository/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/repository/backplane", - "name": "Azure DevOps Git Repository", - "supportedPlatforms": [ - "azuredevops" - ], - "description": "Provides a Git repository in Azure DevOps with optional branch protection policies", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [enable\\_branch\\_policies](#input\\_enable\\_branch\\_policies)", - "type": "Enable branch protection policies on the default branch", - "required": false - }, - { - "name": "", - "description": " [init\\_type](#input\\_init\\_type)", - "type": "Type of repository initialization. Options: Clean, Import, Uninitialized", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [minimum\\_reviewers](#input\\_minimum\\_reviewers)", - "type": "Minimum number of reviewers required for pull requests", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the secret in Key Vault that contains the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps Project ID where the repository will be created", - "required": false - }, - { - "name": "", - "description": " [repository\\_name](#input\\_repository\\_name)", - "type": "Name of the Git repository to create", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [branch\\_policies\\_enabled](#output\\_branch\\_policies\\_enabled)", - "type": "Whether branch policies are enabled", - "required": false - }, - { - "name": "", - "description": " [default\\_branch](#output\\_default\\_branch)", - "type": "Default branch of the repository", - "required": false - }, - { - "name": "", - "description": " [repository\\_id](#output\\_repository\\_id)", - "type": "ID of the created repository", - "required": false - }, - { - "name": "", - "description": " [repository\\_name](#output\\_repository\\_name)", - "type": "Name of the created repository", - "required": false - }, - { - "name": "", - "description": " [repository\\_url](#output\\_repository\\_url)", - "type": "URL of the created repository", - "required": false - }, - { - "name": "", - "description": " [ssh\\_url](#output\\_ssh\\_url)", - "type": "SSH URL of the repository", - "required": false - }, - { - "name": "", - "description": " [web\\_url](#output\\_web\\_url)", - "type": "Web URL of the repository", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [enable\\_branch\\_policies](#input\\_enable\\_branch\\_policies)", - "type": "Enable branch protection policies on the default branch", - "required": false - }, - { - "name": "", - "description": " [init\\_type](#input\\_init\\_type)", - "type": "Type of repository initialization. Options: Clean, Import, Uninitialized", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [minimum\\_reviewers](#input\\_minimum\\_reviewers)", - "type": "Minimum number of reviewers required for pull requests", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the secret in Key Vault that contains the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps Project ID where the repository will be created", - "required": false - }, - { - "name": "", - "description": " [repository\\_name](#input\\_repository\\_name)", - "type": "Name of the Git repository to create", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the Key Vault", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [branch\\_policies\\_enabled](#output\\_branch\\_policies\\_enabled)", - "type": "Whether branch policies are enabled", - "required": false - }, - { - "name": "", - "description": " [default\\_branch](#output\\_default\\_branch)", - "type": "Default branch of the repository", - "required": false - }, - { - "name": "", - "description": " [repository\\_id](#output\\_repository\\_id)", - "type": "ID of the created repository", - "required": false - }, - { - "name": "", - "description": " [repository\\_name](#output\\_repository\\_name)", - "type": "Name of the created repository", - "required": false - }, - { - "name": "", - "description": " [repository\\_url](#output\\_repository\\_url)", - "type": "URL of the created repository", - "required": false - }, - { - "name": "", - "description": " [ssh\\_url](#output\\_ssh\\_url)", - "type": "SSH URL of the repository", - "required": false - }, - { - "name": "", - "description": " [web\\_url](#output\\_web\\_url)", - "type": "Web URL of the repository", - "required": false - } - ] - }, - { - "id": "azuredevops-service-connection-subscription", - "platformType": "azuredevops", - "logo": "assets/building-block-logos/azuredevops-service-connection-subscription.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/service-connection-subscription/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/azuredevops/service-connection-subscription/backplane", - "name": "Azure DevOps Service Connection (Subscription)", - "supportedPlatforms": [ - "azuredevops" - ], - "description": "Provides an Azure subscription service connection in Azure DevOps for pipeline integration with Azure subscriptions", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [application\\_object\\_id](#input\\_application\\_object\\_id)", - "type": "Azure AD Application Object ID (not client ID) - use azuread\\_application.*.object\\_id", - "required": false - }, - { - "name": "", - "description": " [authorize\\_all\\_pipelines](#input\\_authorize\\_all\\_pipelines)", - "type": "Automatically authorize all pipelines to use this service connection", - "required": false - }, - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_id](#input\\_azure\\_subscription\\_id)", - "type": "Azure Subscription ID to connect to", - "required": false - }, - { - "name": "", - "description": " [azure\\_tenant\\_id](#input\\_azure\\_tenant\\_id)", - "type": "Azure AD Tenant ID", - "required": false - }, - { - "name": "", - "description": " [description](#input\\_description)", - "type": "Description for the service connection", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the secret in Key Vault that contains the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps Project ID where the service connection will be created", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [service\\_connection\\_name](#input\\_service\\_connection\\_name)", - "type": "Name of the service connection to create", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_id](#input\\_service\\_principal\\_id)", - "type": "Client ID of the existing Azure AD service principal", - "required": false - }, - { - "name": "", - "description": " [authentication\\_method](#output\\_authentication\\_method)", - "type": "Authentication method used", - "required": false - }, - { - "name": "", - "description": " [authorized\\_all\\_pipelines](#output\\_authorized\\_all\\_pipelines)", - "type": "Whether all pipelines are authorized to use this connection", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_id](#output\\_azure\\_subscription\\_id)", - "type": "Azure Subscription ID connected", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_name](#output\\_azure\\_subscription\\_name)", - "type": "Azure Subscription name connected", - "required": false - }, - { - "name": "", - "description": " [service\\_connection\\_id](#output\\_service\\_connection\\_id)", - "type": "ID of the created service connection", - "required": false - }, - { - "name": "", - "description": " [service\\_connection\\_name](#output\\_service\\_connection\\_name)", - "type": "Name of the created service connection", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_id](#output\\_service\\_principal\\_id)", - "type": "Client ID of the service principal", - "required": false - }, - { - "name": "", - "description": " [workload\\_identity\\_federation\\_issuer](#output\\_workload\\_identity\\_federation\\_issuer)", - "type": "Issuer URL for workload identity federation", - "required": false - }, - { - "name": "", - "description": " [workload\\_identity\\_federation\\_subject](#output\\_workload\\_identity\\_federation\\_subject)", - "type": "Subject identifier for workload identity federation", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [application\\_object\\_id](#input\\_application\\_object\\_id)", - "type": "Azure AD Application Object ID (not client ID) - use azuread\\_application.*.object\\_id", - "required": false - }, - { - "name": "", - "description": " [authorize\\_all\\_pipelines](#input\\_authorize\\_all\\_pipelines)", - "type": "Automatically authorize all pipelines to use this service connection", - "required": false - }, - { - "name": "", - "description": " [azure\\_devops\\_organization\\_url](#input\\_azure\\_devops\\_organization\\_url)", - "type": "Azure DevOps organization URL (e.g., https://dev.azure.com/myorg)", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_id](#input\\_azure\\_subscription\\_id)", - "type": "Azure Subscription ID to connect to", - "required": false - }, - { - "name": "", - "description": " [azure\\_tenant\\_id](#input\\_azure\\_tenant\\_id)", - "type": "Azure AD Tenant ID", - "required": false - }, - { - "name": "", - "description": " [description](#input\\_description)", - "type": "Description for the service connection", - "required": false - }, - { - "name": "", - "description": " [key\\_vault\\_name](#input\\_key\\_vault\\_name)", - "type": "Name of the Key Vault containing the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [pat\\_secret\\_name](#input\\_pat\\_secret\\_name)", - "type": "Name of the secret in Key Vault that contains the Azure DevOps PAT", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Azure DevOps Project ID where the service connection will be created", - "required": false - }, - { - "name": "", - "description": " [resource\\_group\\_name](#input\\_resource\\_group\\_name)", - "type": "Name of the resource group containing the Key Vault", - "required": false - }, - { - "name": "", - "description": " [service\\_connection\\_name](#input\\_service\\_connection\\_name)", - "type": "Name of the service connection to create", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_id](#input\\_service\\_principal\\_id)", - "type": "Client ID of the existing Azure AD service principal", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [authentication\\_method](#output\\_authentication\\_method)", - "type": "Authentication method used", - "required": false - }, - { - "name": "", - "description": " [authorized\\_all\\_pipelines](#output\\_authorized\\_all\\_pipelines)", - "type": "Whether all pipelines are authorized to use this connection", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_id](#output\\_azure\\_subscription\\_id)", - "type": "Azure Subscription ID connected", - "required": false - }, - { - "name": "", - "description": " [azure\\_subscription\\_name](#output\\_azure\\_subscription\\_name)", - "type": "Azure Subscription name connected", - "required": false - }, - { - "name": "", - "description": " [service\\_connection\\_id](#output\\_service\\_connection\\_id)", - "type": "ID of the created service connection", - "required": false - }, - { - "name": "", - "description": " [service\\_connection\\_name](#output\\_service\\_connection\\_name)", - "type": "Name of the created service connection", - "required": false - }, - { - "name": "", - "description": " [service\\_principal\\_id](#output\\_service\\_principal\\_id)", - "type": "Client ID of the service principal", - "required": false - }, - { - "name": "", - "description": " [workload\\_identity\\_federation\\_issuer](#output\\_workload\\_identity\\_federation\\_issuer)", - "type": "Issuer URL for workload identity federation", - "required": false - }, - { - "name": "", - "description": " [workload\\_identity\\_federation\\_subject](#output\\_workload\\_identity\\_federation\\_subject)", - "type": "Subject identifier for workload identity federation", - "required": false - } - ] - }, - { - "id": "gcp-budget-alert", - "platformType": "gcp", - "logo": "assets/building-block-logos/gcp-budget-alert.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/gcp/budget-alert/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/gcp/budget-alert/backplane", - "name": "GCP Project Budget Alert", - "supportedPlatforms": [ - "gcp" - ], - "description": "Sets up budget alerts for a GCP project to monitor spending and prevent cost overruns.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [alert\\_thresholds\\_yaml](#input\\_alert\\_thresholds\\_yaml)", - "type": "YAML string defining alert thresholds as a list of objects having fields 'percent' and 'basis'", - "required": false - }, - { - "name": "", - "description": " [backplane\\_project\\_id](#input\\_backplane\\_project\\_id)", - "type": "The project ID where the backplane resources will be created", - "required": false - }, - { - "name": "", - "description": " [billing\\_account\\_id](#input\\_billing\\_account\\_id)", - "type": "The ID of the billing account to which the budget will be applied", - "required": false - }, - { - "name": "", - "description": " [budget\\_currency](#input\\_budget\\_currency)", - "type": "The currency for the budget amount, e.g., EUR", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#input\\_budget\\_name)", - "type": "Display name for the budget", - "required": false - }, - { - "name": "", - "description": " [contact\\_email](#input\\_contact\\_email)", - "type": "email address to receive budget alerts", - "required": false - }, - { - "name": "", - "description": " [monthly\\_budget\\_amount](#input\\_monthly\\_budget\\_amount)", - "type": "The budget amount in the project's billing currency", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "The GCP project ID where the budget will be created", - "required": false - }, - { - "name": "", - "description": " [budget\\_id](#output\\_budget\\_id)", - "type": "The ID of the created budget", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [alert\\_thresholds\\_yaml](#input\\_alert\\_thresholds\\_yaml)", - "type": "YAML string defining alert thresholds as a list of objects having fields 'percent' and 'basis'", - "required": false - }, - { - "name": "", - "description": " [backplane\\_project\\_id](#input\\_backplane\\_project\\_id)", - "type": "The project ID where the backplane resources will be created", - "required": false - }, - { - "name": "", - "description": " [billing\\_account\\_id](#input\\_billing\\_account\\_id)", - "type": "The ID of the billing account to which the budget will be applied", - "required": false - }, - { - "name": "", - "description": " [budget\\_currency](#input\\_budget\\_currency)", - "type": "The currency for the budget amount, e.g., EUR", - "required": false - }, - { - "name": "", - "description": " [budget\\_name](#input\\_budget\\_name)", - "type": "Display name for the budget", - "required": false - }, - { - "name": "", - "description": " [contact\\_email](#input\\_contact\\_email)", - "type": "email address to receive budget alerts", - "required": false - }, - { - "name": "", - "description": " [monthly\\_budget\\_amount](#input\\_monthly\\_budget\\_amount)", - "type": "The budget amount in the project's billing currency", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "The GCP project ID where the budget will be created", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [budget\\_id](#output\\_budget\\_id)", - "type": "The ID of the created budget", - "required": false - } - ] - }, - { - "id": "gcp-storage-bucket", - "platformType": "gcp", - "logo": "assets/building-block-logos/gcp-storage-bucket.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/gcp/storage-bucket/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/gcp/storage-bucket/backplane", - "name": "GCP Storage Bucket", - "supportedPlatforms": [ - "gcp" - ], - "description": "Provides a GCP Cloud Storage bucket for object storage with access controls and lifecycle policies.", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [bucket\\_name](#input\\_bucket\\_name)", - "type": "The name of the storage bucket", - "required": false - }, - { - "name": "", - "description": " [labels](#input\\_labels)", - "type": "List of labels to apply to the resource", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The GCP location/region", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "The GCP project ID", - "required": false - }, - { - "name": "", - "description": " [bucket\\_name](#output\\_bucket\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_self\\_link](#output\\_bucket\\_self\\_link)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_url](#output\\_bucket\\_url)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Markdown summary output of the building block", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [bucket\\_name](#input\\_bucket\\_name)", - "type": "The name of the storage bucket", - "required": false - }, - { - "name": "", - "description": " [labels](#input\\_labels)", - "type": "List of labels to apply to the resource", - "required": false - }, - { - "name": "", - "description": " [location](#input\\_location)", - "type": "The GCP location/region", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "The GCP project ID", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [bucket\\_name](#output\\_bucket\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_self\\_link](#output\\_bucket\\_self\\_link)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [bucket\\_url](#output\\_bucket\\_url)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [summary](#output\\_summary)", - "type": "Markdown summary output of the building block", - "required": false - } - ] - }, - { - "id": "github-repository", - "platformType": "github", - "logo": "assets/building-block-logos/github-repository.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/github/repository/buildingblock", - "backplaneUrl": null, - "name": "GitHub Repository Creation", - "supportedPlatforms": [ - "github" - ], - "description": "Automates GitHub repository setup with predefined configurations and access control.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [archive\\_repo\\_on\\_destroy](#input\\_archive\\_repo\\_on\\_destroy)", - "type": "Whether to archive github repository when destroying the terraform resource, or delete it. Defaults to true (archive).", - "required": false - }, - { - "name": "", - "description": " [repo\\_description](#input\\_repo\\_description)", - "type": "Description of the GitHub repository", - "required": false - }, - { - "name": "", - "description": " [repo\\_name](#input\\_repo\\_name)", - "type": "Name of the GitHub repository", - "required": false - }, - { - "name": "", - "description": " [repo\\_owner](#input\\_repo\\_owner)", - "type": "Username of the GitHub user who will be set as the owner/admin of the repository. If not set, no collaborator will be added.", - "required": false - }, - { - "name": "", - "description": " [repo\\_visibility](#input\\_repo\\_visibility)", - "type": "Visibility of the GitHub repository", - "required": false - }, - { - "name": "", - "description": " [template\\_owner](#input\\_template\\_owner)", - "type": "Owner of the template repository", - "required": false - }, - { - "name": "", - "description": " [template\\_repo](#input\\_template\\_repo)", - "type": "Name of the template repository", - "required": false - }, - { - "name": "", - "description": " [use\\_template](#input\\_use\\_template)", - "type": "Flag to indicate whether to create a repo based on a Template Repository", - "required": false - }, - { - "name": "", - "description": " [repo\\_full\\_name](#output\\_repo\\_full\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_git\\_clone\\_url](#output\\_repo\\_git\\_clone\\_url)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_html\\_url](#output\\_repo\\_html\\_url)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_name](#output\\_repo\\_name)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [archive\\_repo\\_on\\_destroy](#input\\_archive\\_repo\\_on\\_destroy)", - "type": "Whether to archive github repository when destroying the terraform resource, or delete it. Defaults to true (archive).", - "required": false - }, - { - "name": "", - "description": " [repo\\_description](#input\\_repo\\_description)", - "type": "Description of the GitHub repository", - "required": false - }, - { - "name": "", - "description": " [repo\\_name](#input\\_repo\\_name)", - "type": "Name of the GitHub repository", - "required": false - }, - { - "name": "", - "description": " [repo\\_owner](#input\\_repo\\_owner)", - "type": "Username of the GitHub user who will be set as the owner/admin of the repository. If not set, no collaborator will be added.", - "required": false - }, - { - "name": "", - "description": " [repo\\_visibility](#input\\_repo\\_visibility)", - "type": "Visibility of the GitHub repository", - "required": false - }, - { - "name": "", - "description": " [template\\_owner](#input\\_template\\_owner)", - "type": "Owner of the template repository", - "required": false - }, - { - "name": "", - "description": " [template\\_repo](#input\\_template\\_repo)", - "type": "Name of the template repository", - "required": false - }, - { - "name": "", - "description": " [use\\_template](#input\\_use\\_template)", - "type": "Flag to indicate whether to create a repo based on a Template Repository", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [repo\\_full\\_name](#output\\_repo\\_full\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_git\\_clone\\_url](#output\\_repo\\_git\\_clone\\_url)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_html\\_url](#output\\_repo\\_html\\_url)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [repo\\_name](#output\\_repo\\_name)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "ionos-dcd", - "platformType": "ionos", - "logo": "assets/building-block-logos/ionos-dcd.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/ionos/dcd/buildingblock", - "backplaneUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/ionos/dcd/backplane", - "name": "IONOS DCD (Data Center Designer)", - "supportedPlatforms": [ - "ionos" - ], - "description": "Creates and manages IONOS Data Center Designer environments with user onboarding, role-based access control, and datacenter provisioning.", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [datacenter\\_description](#input\\_datacenter\\_description)", - "type": "Description of the datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_location](#input\\_datacenter\\_location)", - "type": "Location for the IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_name](#input\\_datacenter\\_name)", - "type": "Name of the IONOS DCD datacenter", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_id](#output\\_datacenter\\_id)", - "type": "ID of the created IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_location](#output\\_datacenter\\_location)", - "type": "Location of the created IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_name](#output\\_datacenter\\_name)", - "type": "Name of the created IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [dcd\\_url](#output\\_dcd\\_url)", - "type": "Direct URL to access the IONOS DCD datacenter", - "required": false - }, - { - "name": "", - "description": " [group\\_memberships](#output\\_group\\_memberships)", - "type": "Information about group memberships", - "required": false - }, - { - "name": "", - "description": " [user\\_assignments](#output\\_user\\_assignments)", - "type": "Map of users and their assigned roles", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [datacenter\\_description](#input\\_datacenter\\_description)", - "type": "Description of the datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_location](#input\\_datacenter\\_location)", - "type": "Location for the IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_name](#input\\_datacenter\\_name)", - "type": "Name of the IONOS DCD datacenter", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [terraform](#requirement\\_terraform)", - "type": ">= 1.0", - "required": false - }, - { - "name": "", - "description": " [ionoscloud](#requirement\\_ionoscloud)", - "type": "~> 6.4.0", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_description](#input\\_datacenter\\_description)", - "type": "Description of the datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_location](#input\\_datacenter\\_location)", - "type": "Location for the IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_name](#input\\_datacenter\\_name)", - "type": "Name of the IONOS DCD datacenter", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_id](#output\\_datacenter\\_id)", - "type": "ID of the created IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_location](#output\\_datacenter\\_location)", - "type": "Location of the created IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [datacenter\\_name](#output\\_datacenter\\_name)", - "type": "Name of the created IONOS datacenter", - "required": false - }, - { - "name": "", - "description": " [dcd\\_url](#output\\_dcd\\_url)", - "type": "Direct URL to access the IONOS DCD datacenter", - "required": false - }, - { - "name": "", - "description": " [group\\_memberships](#output\\_group\\_memberships)", - "type": "Information about group memberships", - "required": false - }, - { - "name": "", - "description": " [user\\_assignments](#output\\_user\\_assignments)", - "type": "Map of users and their assigned roles", - "required": false - } - ] - }, - { - "id": "ionos-user-management", - "platformType": "ionos", - "logo": "assets/building-block-logos/ionos-user-management.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/ionos/user-management/buildingblock", - "backplaneUrl": null, - "name": "IONOS User Management", - "supportedPlatforms": [ - "ionos" - ], - "description": "Creates and manages IONOS Cloud users with role-based access. This is a foundational module that should be deployed before DCD environments.", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [default\\_user\\_password](#input\\_default\\_user\\_password)", - "type": "Default password for created users", - "required": false - }, - { - "name": "", - "description": " [force\\_sec\\_auth](#input\\_force\\_sec\\_auth)", - "type": "Force two-factor authentication for users", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [all\\_users](#output\\_all\\_users)", - "type": "All users (existing and newly created)", - "required": false - }, - { - "name": "", - "description": " [created\\_users](#output\\_created\\_users)", - "type": "Users that were newly created", - "required": false - }, - { - "name": "", - "description": " [existing\\_users](#output\\_existing\\_users)", - "type": "Users that already existed in IONOS", - "required": false - }, - { - "name": "", - "description": " [user\\_summary](#output\\_user\\_summary)", - "type": "Summary of user management", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [default\\_user\\_password](#input\\_default\\_user\\_password)", - "type": "Default password for created users", - "required": false - }, - { - "name": "", - "description": " [force\\_sec\\_auth](#input\\_force\\_sec\\_auth)", - "type": "Force two-factor authentication for users", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [terraform](#requirement\\_terraform)", - "type": ">= 1.0", - "required": false - }, - { - "name": "", - "description": " [ionoscloud](#requirement\\_ionoscloud)", - "type": "~> 6.4.0", - "required": false - }, - { - "name": "", - "description": " [default\\_user\\_password](#input\\_default\\_user\\_password)", - "type": "Default password for created users", - "required": false - }, - { - "name": "", - "description": " [force\\_sec\\_auth](#input\\_force\\_sec\\_auth)", - "type": "Force two-factor authentication for users", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [all\\_users](#output\\_all\\_users)", - "type": "All users (existing and newly created)", - "required": false - }, - { - "name": "", - "description": " [created\\_users](#output\\_created\\_users)", - "type": "Users that were newly created", - "required": false - }, - { - "name": "", - "description": " [existing\\_users](#output\\_existing\\_users)", - "type": "Users that already existed in IONOS", - "required": false - }, - { - "name": "", - "description": " [user\\_summary](#output\\_user\\_summary)", - "type": "Summary of user management", - "required": false - } - ] - }, - { - "id": "kubernetes-service-account", - "platformType": "kubernetes", - "logo": "assets/building-block-logos/kubernetes-service-account.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/kubernetes/service-account/buildingblock", - "backplaneUrl": null, - "name": "Kubernetes Service Account", - "supportedPlatforms": [ - "kubernetes" - ], - "description": "Creates a Kubernetes service account with ClusterRole binding and generates a kubeconfig for authentication", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [cluster\\_ca\\_certificate](#input\\_cluster\\_ca\\_certificate)", - "type": "Cluster CA certificate, base64 encoded", - "required": false - }, - { - "name": "", - "description": " [cluster\\_endpoint](#input\\_cluster\\_endpoint)", - "type": "IP address of the cluster control plane", - "required": false - }, - { - "name": "", - "description": " [cluster\\_name](#input\\_cluster\\_name)", - "type": "Name of the k8s cluster hosting this service account", - "required": false - }, - { - "name": "", - "description": " [cluster\\_role](#input\\_cluster\\_role)", - "type": "ClusterRole to bind the service account with. e.g. admin, edit, view (or any custom cluster role)", - "required": false - }, - { - "name": "", - "description": " [context](#input\\_context)", - "type": "Defines which cluster to interact with. Can be any name", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "Service account name", - "required": false - }, - { - "name": "", - "description": " [namespace](#input\\_namespace)", - "type": "Namespace where the service account will be created. Recommended: Use platform tenant ID as input in meshStack", - "required": false - }, - { - "name": "", - "description": " [token](#input\\_token)", - "type": "Token for the service account executing this module (not this service account)", - "required": false - }, - { - "name": "", - "description": " [instructions](#output\\_instructions)", - "type": "Instructions for using the kubeconfig", - "required": false - }, - { - "name": "", - "description": " [kubeconfig](#output\\_kubeconfig)", - "type": "Kubeconfig file content for authenticating with the Kubernetes cluster", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [cluster\\_ca\\_certificate](#input\\_cluster\\_ca\\_certificate)", - "type": "Cluster CA certificate, base64 encoded", - "required": false - }, - { - "name": "", - "description": " [cluster\\_endpoint](#input\\_cluster\\_endpoint)", - "type": "IP address of the cluster control plane", - "required": false - }, - { - "name": "", - "description": " [cluster\\_name](#input\\_cluster\\_name)", - "type": "Name of the k8s cluster hosting this service account", - "required": false - }, - { - "name": "", - "description": " [cluster\\_role](#input\\_cluster\\_role)", - "type": "ClusterRole to bind the service account with. e.g. admin, edit, view (or any custom cluster role)", - "required": false - }, - { - "name": "", - "description": " [context](#input\\_context)", - "type": "Defines which cluster to interact with. Can be any name", - "required": false - }, - { - "name": "", - "description": " [name](#input\\_name)", - "type": "Service account name", - "required": false - }, - { - "name": "", - "description": " [namespace](#input\\_namespace)", - "type": "Namespace where the service account will be created. Recommended: Use platform tenant ID as input in meshStack", - "required": false - }, - { - "name": "", - "description": " [token](#input\\_token)", - "type": "Token for the service account executing this module (not this service account)", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [instructions](#output\\_instructions)", - "type": "Instructions for using the kubeconfig", - "required": false - }, - { - "name": "", - "description": " [kubeconfig](#output\\_kubeconfig)", - "type": "Kubeconfig file content for authenticating with the Kubernetes cluster", - "required": false - } - ] - }, - { - "id": "oci-application-compartment", - "platformType": "oci", - "logo": "assets/building-block-logos/oci-application-compartment.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/oci/application-compartment/buildingblock", - "backplaneUrl": null, - "name": "OCI Application Compartment", - "supportedPlatforms": [ - "oci" - ], - "description": "Creates an application compartment with IAM groups and policies for team-based access control.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [foundation](#input\\_foundation)", - "type": "Foundation name prefix", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Project identifier (e.g., application name)", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "OCI region identifier (e.g., eu-frankfurt-1, us-ashburn-1)", - "required": false - }, - { - "name": "", - "description": " [tag\\_relations](#input\\_tag\\_relations)", - "type": "YAML configuration for tag-based compartment mapping", - "required": false - }, - { - "name": "", - "description": " [tenancy\\_ocid](#input\\_tenancy\\_ocid)", - "type": "OCID of the OCI tenancy", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [workspace\\_id](#input\\_workspace\\_id)", - "type": "Workspace identifier (e.g., team name or business unit)", - "required": false - }, - { - "name": "", - "description": " [admin\\_group\\_id](#output\\_admin\\_group\\_id)", - "type": "OCID of the admins group", - "required": false - }, - { - "name": "", - "description": " [admin\\_group\\_name](#output\\_admin\\_group\\_name)", - "type": "Name of the admins group", - "required": false - }, - { - "name": "", - "description": " [compartment\\_id](#output\\_compartment\\_id)", - "type": "OCID of the created application compartment", - "required": false - }, - { - "name": "", - "description": " [compartment\\_name](#output\\_compartment\\_name)", - "type": "Name of the created application compartment", - "required": false - }, - { - "name": "", - "description": " [console\\_url](#output\\_console\\_url)", - "type": "OCI Console URL for direct access to the compartment", - "required": false - }, - { - "name": "", - "description": " [policy\\_id](#output\\_policy\\_id)", - "type": "OCID of the access policy", - "required": false - }, - { - "name": "", - "description": " [reader\\_group\\_id](#output\\_reader\\_group\\_id)", - "type": "OCID of the readers group", - "required": false - }, - { - "name": "", - "description": " [reader\\_group\\_name](#output\\_reader\\_group\\_name)", - "type": "Name of the readers group", - "required": false - }, - { - "name": "", - "description": " [user\\_group\\_id](#output\\_user\\_group\\_id)", - "type": "OCID of the users group", - "required": false - }, - { - "name": "", - "description": " [user\\_group\\_name](#output\\_user\\_group\\_name)", - "type": "Name of the users group", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [foundation](#input\\_foundation)", - "type": "Foundation name prefix", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#input\\_project\\_id)", - "type": "Project identifier (e.g., application name)", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "OCI region identifier (e.g., eu-frankfurt-1, us-ashburn-1)", - "required": false - }, - { - "name": "", - "description": " [tag\\_relations](#input\\_tag\\_relations)", - "type": "YAML configuration for tag-based compartment mapping", - "required": false - }, - { - "name": "", - "description": " [tenancy\\_ocid](#input\\_tenancy\\_ocid)", - "type": "OCID of the OCI tenancy", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [workspace\\_id](#input\\_workspace\\_id)", - "type": "Workspace identifier (e.g., team name or business unit)", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [admin\\_group\\_id](#output\\_admin\\_group\\_id)", - "type": "OCID of the admins group", - "required": false - }, - { - "name": "", - "description": " [admin\\_group\\_name](#output\\_admin\\_group\\_name)", - "type": "Name of the admins group", - "required": false - }, - { - "name": "", - "description": " [compartment\\_id](#output\\_compartment\\_id)", - "type": "OCID of the created application compartment", - "required": false - }, - { - "name": "", - "description": " [compartment\\_name](#output\\_compartment\\_name)", - "type": "Name of the created application compartment", - "required": false - }, - { - "name": "", - "description": " [console\\_url](#output\\_console\\_url)", - "type": "OCI Console URL for direct access to the compartment", - "required": false - }, - { - "name": "", - "description": " [policy\\_id](#output\\_policy\\_id)", - "type": "OCID of the access policy", - "required": false - }, - { - "name": "", - "description": " [reader\\_group\\_id](#output\\_reader\\_group\\_id)", - "type": "OCID of the readers group", - "required": false - }, - { - "name": "", - "description": " [reader\\_group\\_name](#output\\_reader\\_group\\_name)", - "type": "Name of the readers group", - "required": false - }, - { - "name": "", - "description": " [user\\_group\\_id](#output\\_user\\_group\\_id)", - "type": "OCID of the users group", - "required": false - }, - { - "name": "", - "description": " [user\\_group\\_name](#output\\_user\\_group\\_name)", - "type": "Name of the users group", - "required": false - } - ] - }, - { - "id": "sapbtp-subaccounts", - "platformType": "sapbtp", - "logo": "assets/building-block-logos/sapbtp-subaccounts.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/sapbtp/subaccounts/buildingblock", - "backplaneUrl": null, - "name": "SAP BTP subaccount", - "supportedPlatforms": [ - "sapbtp" - ], - "description": "This building block Creates a subaccount in SAP BTP.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [globalaccount](#input\\_globalaccount)", - "type": "The subdomain of the global account in which you want to manage resources.", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "The meshStack project identifier.", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "The region of the subaccount.", - "required": false - }, - { - "name": "", - "description": " [subfolder](#input\\_subfolder)", - "type": "The subfolder to use for the SAP BTP resources. This is used to create a folder structure in the SAP BTP cockpit.", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "Users and their roles provided by meshStack", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "The meshStack workspace identifier.", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_id](#output\\_btp\\_subaccount\\_id)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_login\\_link](#output\\_btp\\_subaccount\\_login\\_link)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_name](#output\\_btp\\_subaccount\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_region](#output\\_btp\\_subaccount\\_region)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [globalaccount](#input\\_globalaccount)", - "type": "The subdomain of the global account in which you want to manage resources.", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "The meshStack project identifier.", - "required": false - }, - { - "name": "", - "description": " [region](#input\\_region)", - "type": "The region of the subaccount.", - "required": false - }, - { - "name": "", - "description": " [subfolder](#input\\_subfolder)", - "type": "The subfolder to use for the SAP BTP resources. This is used to create a folder structure in the SAP BTP cockpit.", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "Users and their roles provided by meshStack", - "required": false - }, - { - "name": "", - "description": " [workspace\\_identifier](#input\\_workspace\\_identifier)", - "type": "The meshStack workspace identifier.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [btp\\_subaccount\\_id](#output\\_btp\\_subaccount\\_id)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_login\\_link](#output\\_btp\\_subaccount\\_login\\_link)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_name](#output\\_btp\\_subaccount\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subaccount\\_region](#output\\_btp\\_subaccount\\_region)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "sapbtp-subdirectory", - "platformType": "sapbtp", - "logo": "assets/building-block-logos/sapbtp-subdirectory.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/sapbtp/subdirectory/buildingblock", - "backplaneUrl": null, - "name": "SAP BTP subdirectory", - "supportedPlatforms": [ - "sapbtp" - ], - "description": "This building block Creates a subdirectory in SAP BTP.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [globalaccount](#input\\_globalaccount)", - "type": "The subdomain of the global account in which you want to manage resources.", - "required": false - }, - { - "name": "", - "description": " [parent\\_id](#input\\_parent\\_id)", - "type": "The ID of the parent resource.", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "The meshStack project identifier.", - "required": false - }, - { - "name": "", - "description": " [subfolder](#input\\_subfolder)", - "type": "The subfolder to use for the SAP BTP resources. This is used to create a folder structure in the SAP BTP cockpit.", - "required": false - }, - { - "name": "", - "description": " [btp\\_subdirectory\\_id](#output\\_btp\\_subdirectory\\_id)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subdirectory\\_name](#output\\_btp\\_subdirectory\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [project\\_folder](#output\\_project\\_folder)", - "type": "n/a", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [globalaccount](#input\\_globalaccount)", - "type": "The subdomain of the global account in which you want to manage resources.", - "required": false - }, - { - "name": "", - "description": " [parent\\_id](#input\\_parent\\_id)", - "type": "The ID of the parent resource.", - "required": false - }, - { - "name": "", - "description": " [project\\_identifier](#input\\_project\\_identifier)", - "type": "The meshStack project identifier.", - "required": false - }, - { - "name": "", - "description": " [subfolder](#input\\_subfolder)", - "type": "The subfolder to use for the SAP BTP resources. This is used to create a folder structure in the SAP BTP cockpit.", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [btp\\_subdirectory\\_id](#output\\_btp\\_subdirectory\\_id)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [btp\\_subdirectory\\_name](#output\\_btp\\_subdirectory\\_name)", - "type": "n/a", - "required": false - }, - { - "name": "", - "description": " [project\\_folder](#output\\_project\\_folder)", - "type": "n/a", - "required": false - } - ] - }, - { - "id": "stackit-project", - "platformType": "stackit", - "logo": "assets/building-block-logos/stackit-project.png", - "buildingBlockUrl": "git@github.com:meshcloud/meshstack-hub/tree/main/modules/stackit/project/buildingblock", - "backplaneUrl": null, - "name": "StackIt Project", - "supportedPlatforms": [ - "stackit" - ], - "description": "Creates a new StackIt project and manages user access permissions with role-based access control.\n", - "howToUse": null, - "resources": [ - { - "name": "", - "description": " [environment](#input\\_environment)", - "type": "The environment type (production, staging, development). If not set, uses parent\\_container\\_id directly.", - "required": false - }, - { - "name": "", - "description": " [labels](#input\\_labels)", - "type": "Labels to apply to the project. Use 'networkArea' to specify the STACKIT Network Area.", - "required": false - }, - { - "name": "", - "description": " [parent\\_container\\_id](#input\\_parent\\_container\\_id)", - "type": "The parent container ID (organization or folder) where the project will be created.", - "required": false - }, - { - "name": "", - "description": " [parent\\_container\\_ids](#input\\_parent\\_container\\_ids)", - "type": "Parent container IDs for different environments. If environment is set, the corresponding container ID will be used.", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#input\\_project\\_name)", - "type": "The name of the StackIt project to create.", - "required": false - }, - { - "name": "", - "description": " [service\\_account\\_email](#input\\_service\\_account\\_email)", - "type": "The email address of the service account that will own this project.", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - }, - { - "name": "", - "description": " [container\\_id](#output\\_container\\_id)", - "type": "The user-friendly container ID of the created StackIt project.", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#output\\_project\\_id)", - "type": "The UUID of the created StackIt project.", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#output\\_project\\_name)", - "type": "The name of the created StackIt project.", - "required": false - }, - { - "name": "", - "description": " [project\\_url](#output\\_project\\_url)", - "type": "The deep link URL to access the project in the StackIt portal.", - "required": false - } - ], - "inputs": [ - { - "name": "", - "description": " [environment](#input\\_environment)", - "type": "The environment type (production, staging, development). If not set, uses parent\\_container\\_id directly.", - "required": false - }, - { - "name": "", - "description": " [labels](#input\\_labels)", - "type": "Labels to apply to the project. Use 'networkArea' to specify the STACKIT Network Area.", - "required": false - }, - { - "name": "", - "description": " [parent\\_container\\_id](#input\\_parent\\_container\\_id)", - "type": "The parent container ID (organization or folder) where the project will be created.", - "required": false - }, - { - "name": "", - "description": " [parent\\_container\\_ids](#input\\_parent\\_container\\_ids)", - "type": "Parent container IDs for different environments. If environment is set, the corresponding container ID will be used.", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#input\\_project\\_name)", - "type": "The name of the StackIt project to create.", - "required": false - }, - { - "name": "", - "description": " [service\\_account\\_email](#input\\_service\\_account\\_email)", - "type": "The email address of the service account that will own this project.", - "required": false - }, - { - "name": "", - "description": " [users](#input\\_users)", - "type": "List of users from authoritative system", - "required": false - } - ], - "outputs": [ - { - "name": "", - "description": " [container\\_id](#output\\_container\\_id)", - "type": "The user-friendly container ID of the created StackIt project.", - "required": false - }, - { - "name": "", - "description": " [project\\_id](#output\\_project\\_id)", - "type": "The UUID of the created StackIt project.", - "required": false - }, - { - "name": "", - "description": " [project\\_name](#output\\_project\\_name)", - "type": "The name of the created StackIt project.", - "required": false - }, - { - "name": "", - "description": " [project\\_url](#output\\_project\\_url)", - "type": "The deep link URL to access the project in the StackIt portal.", - "required": false - } - ] - } - ] -} \ No newline at end of file diff --git a/website/src/app/app.routes.ts b/website/src/app/app.routes.ts index e3cb61e9..7b532423 100644 --- a/website/src/app/app.routes.ts +++ b/website/src/app/app.routes.ts @@ -3,6 +3,7 @@ import { Routes } from '@angular/router'; const loadTemplateGallery = () => import('./features/template-gallery').then(m => m.TemplateGalleryComponent); const loadTemplateDetails = () => import('./features/template-details').then(m => m.TemplateDetailsComponent); const loadPlatformView = () => import('./features/platform-view').then(m => m.PlatformViewComponent); +const loadPlatformIntegration = () => import('./features/platform-integration').then(m => m.PlatformIntegrationComponent); export const routes: Routes = [ { @@ -13,6 +14,10 @@ export const routes: Routes = [ path: 'platforms/:type', loadComponent: loadPlatformView, }, + { + path: 'platforms/:type/integrate', + loadComponent: loadPlatformIntegration + }, { path: 'platforms/:type/definitions/:id', loadComponent: loadTemplateDetails diff --git a/website/src/app/core/template.ts b/website/src/app/core/template.ts index 4f90176a..91d7ace8 100644 --- a/website/src/app/core/template.ts +++ b/website/src/app/core/template.ts @@ -3,11 +3,9 @@ export interface Template { id: string; logo: string; description: string; - platformType: PlatformType; + platformType: string; howToUse: string; buildingBlockUrl: string; backplaneUrl: string | null; - supportedPlatforms: PlatformType[]; + supportedPlatforms: string[]; } - -export type PlatformType = 'aks' | 'aws' | 'azure' | 'azuredevops' | 'cloudfoundry' | 'datadog' | 'gcp' | 'github' | 'ionos' | 'kubernetes' | 'oci' | 'openshift' | 'openstack' | 'ovh' | 'sapbtp' | 'stackit' | 'tencentcloud'; \ No newline at end of file diff --git a/website/src/app/features/platform-integration/index.ts b/website/src/app/features/platform-integration/index.ts new file mode 100644 index 00000000..44a522f9 --- /dev/null +++ b/website/src/app/features/platform-integration/index.ts @@ -0,0 +1 @@ +export * from './platform-integration.component'; diff --git a/website/src/app/features/platform-integration/platform-integration.component.html b/website/src/app/features/platform-integration/platform-integration.component.html new file mode 100644 index 00000000..aaf06f14 --- /dev/null +++ b/website/src/app/features/platform-integration/platform-integration.component.html @@ -0,0 +1,96 @@ +
+ +
+
+ + + +
+
+ + +
+
+
+
+ +
+
+

Integrate {{ platform.name }} into meshStack

+

{{ platform.readme }}

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

+ + Quick Start +

+
+
+
1
+
+
Add the OpenTofu snippet
+
Copy the provided OpenTofu code from the right and add it to your infrastructure codebase.
+
+
+
+
2
+
+
Provider setup and configure variables
+
+ Ensure you enter your API key in the provider block and update the required variables in the locals block as needed for your environment. +
+
+
+
+
3
+
+
Deploy with OpenTofu
+
Run tofu init, tofu plan, and tofu apply to provision the integration.
+
+
+
+
+
+
Success!
+
The platform is now integrated and you can start using it to provision tenants, assign users and collect costs.
+
+
+
+
+
+
+ +
{{ platform?.terraformSnippet }}
+
+
+
+
+
+ + +
+
+ +

Integration Not Found

+

This platform does not have an integration available yet.

+ + Back to Home + +
+
diff --git a/website/src/app/features/platform-integration/platform-integration.component.scss b/website/src/app/features/platform-integration/platform-integration.component.scss new file mode 100644 index 00000000..ac07cbd2 --- /dev/null +++ b/website/src/app/features/platform-integration/platform-integration.component.scss @@ -0,0 +1 @@ +// Platform integration component styles diff --git a/website/src/app/features/platform-integration/platform-integration.component.ts b/website/src/app/features/platform-integration/platform-integration.component.ts new file mode 100644 index 00000000..fc6bbf65 --- /dev/null +++ b/website/src/app/features/platform-integration/platform-integration.component.ts @@ -0,0 +1,78 @@ +import { CommonModule } from '@angular/common'; +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, RouterLink } from '@angular/router'; +import { Observable, switchMap, of, map } from 'rxjs'; + +import { BreadcrumbComponent } from 'app/shared/breadcrumb'; +import { BreadCrumbService } from 'app/shared/breadcrumb/bread-crumb.service'; +import { BreadcrumbItem } from 'app/shared/breadcrumb/breadcrumb'; +import { CardComponent } from 'app/shared/card'; +import { PlatformService, Platform } from 'app/shared/platform'; +import { extractLogoColor } from 'app/shared/util/logo-color.util'; + +const DEFAULT_HEADER_BG_COLOR = 'rgba(203,213,225,0.3)'; + +@Component({ + selector: 'mst-platform-integration', + imports: [CommonModule, CardComponent, BreadcrumbComponent, RouterLink], + templateUrl: './platform-integration.component.html', + styleUrl: './platform-integration.component.scss', + standalone: true +}) +export class PlatformIntegrationComponent implements OnInit { + public platform$!: Observable; + public breadcrumbs$!: Observable; + public copiedTerraform = false; + public headerBgColor$!: Observable; + + constructor( + private route: ActivatedRoute, + private platformService: PlatformService, + private breadcrumbService: BreadCrumbService + ) { } + + public ngOnInit(): void { + this.platform$ = this.route.paramMap.pipe( + switchMap(params => { + const type = params.get('type'); + if (!type) { + throw new Error('Platform type not given in URL'); + } + return this.platformService.getAllPlatforms() + .pipe( + map(platforms => { + const platform = platforms.find(p => p.platformType === type); + if (!platform) { + throw new Error('Platform not found'); + } + return platform; + }) + ); + }) + ); + + this.breadcrumbs$ = this.route.paramMap.pipe( + switchMap(x => this.breadcrumbService.getBreadcrumbs(x)) + ); + + // Reactive header background color + this.headerBgColor$ = this.platform$.pipe( + switchMap(platform => + platform && platform.logo + ? extractLogoColor(platform.logo).pipe( + map(color => { + return color || DEFAULT_HEADER_BG_COLOR; + }) + ) + : of(DEFAULT_HEADER_BG_COLOR) + ) + ); + } + + public copyTerraform(content: string): void { + navigator.clipboard.writeText(content).then(() => { + this.copiedTerraform = true; + setTimeout(() => this.copiedTerraform = false, 2000); + }); + } +} diff --git a/website/src/app/features/platform-view/platform-view.component.html b/website/src/app/features/platform-view/platform-view.component.html index e05905d8..4ea56bc3 100644 --- a/website/src/app/features/platform-view/platform-view.component.html +++ b/website/src/app/features/platform-view/platform-view.component.html @@ -1,46 +1,50 @@
-
- - -
+ +
+
+ -
- + +
+
- -
- -
-
-
- -
-
-

{{ platform.title }}

-

{{ platform.description }}

-
-
- + +
+
+
+
+
- +
+

{{ platform.title }}

+

{{ platform.description }}

+ + + + {{ templates.length }} building block{{ templates.length === 1 ? '' : 's' }} + + +
+ +
+
+
-

{{ platform.title }} Building Block Definitions

-

+

{{ platform.title }} Building Block Definitions

+

Pre-configured Terraform modules for automating common {{ platform.title }} cloud tasks

-

No building block definitions available

+

No building block definitions available

diff --git a/website/src/app/features/platform-view/platform-view.component.ts b/website/src/app/features/platform-view/platform-view.component.ts index fe831569..1b4dfd9b 100644 --- a/website/src/app/features/platform-view/platform-view.component.ts +++ b/website/src/app/features/platform-view/platform-view.component.ts @@ -1,17 +1,16 @@ import { CommonModule } from '@angular/common'; import { Component, OnDestroy, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { Observable, Subscription, forkJoin, map, switchMap } from 'rxjs'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; +import { Observable, Subscription, map, switchMap, of } from 'rxjs'; -import { PlatformType } from 'app/core'; import { BreadcrumbComponent } from 'app/shared/breadcrumb'; import { BreadCrumbService } from 'app/shared/breadcrumb/bread-crumb.service'; import { BreadcrumbItem } from 'app/shared/breadcrumb/breadcrumb'; -import { CardComponent } from 'app/shared/card'; import { DefinitionCard } from 'app/shared/definition-card/definition-card'; import { DefinitionCardComponent } from 'app/shared/definition-card/definition-card.component'; -import { PlatformData, PlatformService } from 'app/shared/platform'; +import { Platform, PlatformService } from 'app/shared/platform'; import { TemplateService } from 'app/shared/template'; +import { extractLogoColor } from 'app/shared/util/logo-color.util'; interface PlatformVM { logo: string | null; @@ -21,7 +20,7 @@ interface PlatformVM { @Component({ selector: 'mst-platform-view', - imports: [CommonModule, DefinitionCardComponent, CardComponent, BreadcrumbComponent], + imports: [CommonModule, DefinitionCardComponent, BreadcrumbComponent, RouterLink], templateUrl: './platform-view.component.html', styleUrl: './platform-view.component.scss', standalone: true @@ -33,22 +32,25 @@ export class PlatformViewComponent implements OnInit, OnDestroy { public templates$!: Observable; + public hasIntegration: boolean = false; + + public currentPlatformType: string = ''; + private paramSubscription!: Subscription; - private platformData$!: Observable; + public logoBackgroundColor$!: Observable; constructor( private router: Router, private route: ActivatedRoute, private templateService: TemplateService, - private platformLogoService: PlatformService, + private platformService: PlatformService, private breadcrumbService: BreadCrumbService ) { } public ngOnInit(): void { this.subscribeToRouteParams(); this.breadcrumbs$ = this.route.paramMap.pipe(switchMap(x => this.breadcrumbService.getBreadcrumbs(x))); - } public ngOnDestroy(): void { @@ -60,16 +62,39 @@ export class PlatformViewComponent implements OnInit, OnDestroy { const type = params.get('type'); if (type) { - const templateObs$ = this.templateService.filterTemplatesByPlatformType(type as PlatformType); - this.platformData$ = this.platformLogoService.getAllPlatformData(); - this.platform$ = this.platformData$.pipe( - map(platformData => ({ - logo: platformData[type]?.logo ?? null, - title: platformData[type]?.name ?? '', - description: platformData[type]?.description ?? '' // Correctly mapped description - })) + this.currentPlatformType = type; + this.platform$ = this.platformService.getAllPlatforms() + .pipe( + map(platforms => { + const templateObs$ = this.templateService.filterTemplatesByPlatformType(type); + this.templates$ = this.getTemplatesWithLogos(templateObs$, platforms, type); + + const platform = platforms.find(p => p.platformType === type); + + if (!platform) { + throw new Error(`Platform ${type} not found`); + } + + this.hasIntegration = !!platform.terraformSnippet; + return { + logo: platform.logo, + title: platform.name, + description: platform.description + }; + }) ); - this.templates$ = this.getTemplatesWithLogos(templateObs$, type); + // Compose logoBackgroundColor$ reactively from platform$ + const DEFAULT_LOGO_BG_COLOR = 'rgba(203,213,225,0.3)'; + this.logoBackgroundColor$ = this.platform$.pipe( + switchMap(platform => + platform.logo + ? extractLogoColor(platform.logo).pipe( + map(color => color || DEFAULT_LOGO_BG_COLOR) + ) + : of(DEFAULT_LOGO_BG_COLOR) + ) + ); + } else { this.router.navigate(['/all']); @@ -77,13 +102,14 @@ export class PlatformViewComponent implements OnInit, OnDestroy { }); } - private getTemplatesWithLogos(templateObs$: Observable, type: string): Observable { - return forkJoin({ - templates: templateObs$, - platforms: this.platformData$ - }) + private getTemplatesWithLogos( + templateObs$: Observable, + platforms: Platform[], + type: string + ): Observable { + return templateObs$ .pipe( - map(({ templates, platforms }) => + map(templates => templates.map(item => ({ cardLogo: item.logo, title: item.name, @@ -91,7 +117,7 @@ export class PlatformViewComponent implements OnInit, OnDestroy { routePath: `/platforms/${type}/definitions/${item.id}`, supportedPlatforms: item.supportedPlatforms.map(platform => ({ platformType: platform, - imageUrl: platforms[item.platformType].logo ?? null + imageUrl: platforms.find(p => p.platformType === item.platformType)?.logo ?? null })) })) ) diff --git a/website/src/app/features/template-details/template-details.component.ts b/website/src/app/features/template-details/template-details.component.ts index bfd050d2..3271e0bf 100644 --- a/website/src/app/features/template-details/template-details.component.ts +++ b/website/src/app/features/template-details/template-details.component.ts @@ -4,7 +4,6 @@ import { ActivatedRoute } from '@angular/router'; import { Dialog } from '@angular/cdk/dialog'; import { Observable, Subscription, map, switchMap } from 'rxjs'; -import { PlatformType } from 'app/core'; import { BreadCrumbService } from 'app/shared/breadcrumb/bread-crumb.service'; import { BreadcrumbItem } from 'app/shared/breadcrumb/breadcrumb'; import { BreadcrumbComponent } from 'app/shared/breadcrumb/breadcrumb.component'; @@ -15,7 +14,7 @@ import { ImportDialogComponent } from './import-dialog/import-dialog.component'; interface TemplateDetailsVm { imageUrl: string | null; name: string; - platformType: PlatformType; + platformType: string; description: string; howToUse: string; source: string; diff --git a/website/src/app/features/template-gallery/platform-cards/platform-cards.component.html b/website/src/app/features/template-gallery/platform-cards/platform-cards.component.html index 335165e9..0d97c8b4 100644 --- a/website/src/app/features/template-gallery/platform-cards/platform-cards.component.html +++ b/website/src/app/features/template-gallery/platform-cards/platform-cards.component.html @@ -32,9 +32,7 @@
- - - + {{ card.buildingBlockCount || 0 }} building block{{ (card.buildingBlockCount || 0) !== 1 ? 's' : '' }} diff --git a/website/src/app/features/template-gallery/template-gallery.component.ts b/website/src/app/features/template-gallery/template-gallery.component.ts index 76c114e1..1acff1df 100644 --- a/website/src/app/features/template-gallery/template-gallery.component.ts +++ b/website/src/app/features/template-gallery/template-gallery.component.ts @@ -7,7 +7,7 @@ import { BreadcrumbComponent } from 'app/shared/breadcrumb'; import { BreadcrumbItem } from 'app/shared/breadcrumb/breadcrumb'; import { DefinitionCard } from 'app/shared/definition-card/definition-card'; import { DefinitionCardComponent } from 'app/shared/definition-card/definition-card.component'; -import { PlatformData, PlatformService } from 'app/shared/platform'; +import { Platform, PlatformService } from 'app/shared/platform'; import { TemplateService } from 'app/shared/template'; import { PlatformCardsComponent } from './platform-cards'; @@ -35,7 +35,7 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { private searchSubscription!: Subscription; - private platformData$!: Observable; + private platforms$!: Observable; constructor( private route: ActivatedRoute, @@ -44,7 +44,7 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { ) {} public ngOnInit(): void { - this.platformData$ = this.platformService.getAllPlatformData(); + this.platforms$ = this.platformService.getAllPlatforms(); this.subscribeToSearchTerm(); } @@ -79,7 +79,7 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { } private getTemplatesWithLogos(templateObs$: Observable): Observable { - return forkJoin({ templates: templateObs$, platforms: this.platformData$ }) + return forkJoin({ templates: templateObs$, platforms: this.platforms$ }) .pipe( map(({ templates, platforms }) => templates.map(template => this.mapToDefinitionCard(template, platforms)) @@ -88,8 +88,8 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { } private getFilteredPlatformCards(searchTerm: string | undefined): Observable { - return combineLatest([this.platformData$, this.templateService.filterTemplatesByPlatformType('all')]).pipe( - map(([logos, templates]) => this.mapLogosToPlatformCards(logos, templates)), + return combineLatest([this.platforms$, this.templateService.filterTemplatesByPlatformType('all')]).pipe( + map(([platforms, templates]) => this.mapLogosToPlatformCards(platforms, templates)), map(cards => this.filterCardsBySearchTerm(cards, searchTerm)) ); } @@ -101,7 +101,7 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { ); } - private mapToDefinitionCard(template: any, platformData: PlatformData): DefinitionCard { + private mapToDefinitionCard(template: any, platforms: Platform[]): DefinitionCard { return { cardLogo: template.logo, title: template.name, @@ -109,7 +109,7 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { routePath: `/definitions/${template.id}`, supportedPlatforms: template.supportedPlatforms.map(platform => ({ platformType: platform, - imageUrl: platformData[platform]?.logo ?? null + imageUrl: platforms.find(p => p.platformType === platform)?.logo ?? null })) }; } @@ -121,12 +121,18 @@ export class TemplateGalleryComponent implements OnInit, OnDestroy { ]; } - private mapLogosToPlatformCards(data: PlatformData, templates: any[]): PlatformCard[] { - return Object.entries(data) - .map(([key, platform]) => { - const buildingBlockCount = templates.filter(t => t.platformType === key).length; - return this.createPlatformCard(platform.name, platform.logo, `/platforms/${key}`, platform.description, buildingBlockCount, platform.category); - }); + private mapLogosToPlatformCards(data: Platform[], templates: any[]): PlatformCard[] { + return data.map(platform => { + const buildingBlockCount = templates.filter(t => t.platformType === platform.platformType).length; + return this.createPlatformCard( + platform.name, + platform.logo, + `/platforms/${platform.platformType}`, + platform.description, + buildingBlockCount, + platform.category + ); + }); } private createPlatformCard(title: string, logoUrl: string, routePath: string, description?: string, buildingBlockCount?: number, category?: 'hyperscaler' | 'european' | 'china' | 'devops' | 'private-cloud'): PlatformCard { diff --git a/website/src/app/shared/breadcrumb/bread-crumb.service.ts b/website/src/app/shared/breadcrumb/bread-crumb.service.ts index b552caf2..9793acf6 100644 --- a/website/src/app/shared/breadcrumb/bread-crumb.service.ts +++ b/website/src/app/shared/breadcrumb/bread-crumb.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { ParamMap } from '@angular/router'; +import { ParamMap, Router } from '@angular/router'; import { Observable,combineLatest, map, of } from 'rxjs'; import { PlatformService } from 'app/shared/platform'; @@ -13,13 +13,15 @@ import { BreadcrumbItem } from './breadcrumb'; export class BreadCrumbService { constructor( private templateService: TemplateService, - private platformService: PlatformService + private platformService: PlatformService, + private router: Router ) {} public getBreadcrumbs(paramMap: ParamMap): Observable { const platformType = paramMap.get('type'); const definitionId = paramMap.get('id'); + const isIntegration = this.router.url.includes('/integrate'); return combineLatest({ platformName: platformType ? this.getPlatformName(platformType) : of(null), @@ -27,7 +29,7 @@ export class BreadCrumbService { }) .pipe( map(({ platformName, templateName }) => - this.buildBreadcrumbs(templateName, platformName, platformType) + this.buildBreadcrumbs(templateName, platformName, platformType, isIntegration) ) ); } @@ -39,14 +41,15 @@ export class BreadCrumbService { } private getPlatformName(type: string): Observable { - return this.platformService.getPlatformData(type) - .pipe(map(platform => platform.name)); + return this.platformService.getAllPlatforms() + .pipe(map(platforms => platforms.find(p => p.platformType === type)?.name || '')); } private buildBreadcrumbs( templateName: string | null, platformName: string | null, - type: string | null + type: string | null, + isIntegration: boolean = false ): BreadcrumbItem[] { const breadcrumbs: BreadcrumbItem[] = [{ label: 'Home', routePath: '/' }]; @@ -54,7 +57,9 @@ export class BreadCrumbService { breadcrumbs.push({ label: platformName, routePath: `/platforms/${type}` }); } - if (templateName) { + if (isIntegration) { + breadcrumbs.push({ label: 'Integration', routePath: '' }); + } else if (templateName) { breadcrumbs.push({ label: templateName, routePath: '' }); } @@ -64,4 +69,4 @@ export class BreadCrumbService { return breadcrumbs; } -} \ No newline at end of file +} diff --git a/website/src/app/shared/card/card.component.html b/website/src/app/shared/card/card.component.html index 1ddb9f67..2c0b40ff 100644 --- a/website/src/app/shared/card/card.component.html +++ b/website/src/app/shared/card/card.component.html @@ -1,10 +1,11 @@
(); - private _logoSourceImage: string | null = ''; + private _logoSourceImage$: Observable = of(null); + + public logoBackgroundColor$: Observable = of(DEFAULT_CARD_BG_COLOR); - constructor(private router: Router) { } + constructor(private router: Router) { + // Set up the reactive logo background color observable + this.logoBackgroundColor$ = this._logoSourceImage$.pipe( + switchMap(logo => + logo + ? extractLogoColor(logo).pipe( + map(color => color || DEFAULT_CARD_BG_COLOR), + map(color => { + this.backgroundColorExtracted.emit(color); + return color; + }) + ) + : of(DEFAULT_CARD_BG_COLOR) + ), + startWith(DEFAULT_CARD_BG_COLOR) + ); + } public navigateToRoutePath(): void { if (this.routePath) { this.router.navigate([this.routePath]); } } - - private extractLogoColor(): void { - if (!this.logoSourceImage) { - return; - } - - if (typeof window !== 'undefined') { - const img = new Image(); - img.src = this.logoSourceImage; - img.onload = () => { - const colorThief = new ColorThief(); - const dominantColor = colorThief.getColor(img); - this.backgroundColorExtracted.emit(`rgba(${dominantColor.join(',')}, 0.1)`); - }; - } - } } diff --git a/website/src/app/shared/definition-card/definition-card.ts b/website/src/app/shared/definition-card/definition-card.ts index e2bfce35..c9bf9f3e 100644 --- a/website/src/app/shared/definition-card/definition-card.ts +++ b/website/src/app/shared/definition-card/definition-card.ts @@ -1,9 +1,7 @@ -import { PlatformType } from 'app/core'; - export interface DefinitionCard { cardLogo: string | null; title: string; description: string | null; routePath: string; - supportedPlatforms: { platformType: PlatformType; imageUrl: string }[]; -} \ No newline at end of file + supportedPlatforms: { platformType: string; imageUrl: string }[]; +} diff --git a/website/src/app/shared/platform/index.ts b/website/src/app/shared/platform/index.ts index 2101e667..bd0afe75 100644 --- a/website/src/app/shared/platform/index.ts +++ b/website/src/app/shared/platform/index.ts @@ -1,2 +1,2 @@ export * from './platform.service'; -export * from './platform-data'; \ No newline at end of file +export * from './platform-data'; diff --git a/website/src/app/shared/platform/platform-data.ts b/website/src/app/shared/platform/platform-data.ts index 0aad4980..4d72823d 100644 --- a/website/src/app/shared/platform/platform-data.ts +++ b/website/src/app/shared/platform/platform-data.ts @@ -1,14 +1,9 @@ -export interface PlatformLogoData { - [key: string]: string; -} - -export interface PlatformData { - [key: string]: Platform; -} - export interface Platform { - name: string; - logo: string; - description?: string; - category?: 'hyperscaler' | 'european' | 'china' | 'devops' | 'private-cloud'; + platformType: string; + name: string; + description: string; + category?: 'hyperscaler' | 'european' | 'china' | 'devops' | 'private-cloud'; + logo: string; + readme: string; + terraformSnippet?: string; } diff --git a/website/src/app/shared/platform/platform.service.ts b/website/src/app/shared/platform/platform.service.ts index 7fe8a3ab..b79b8071 100644 --- a/website/src/app/shared/platform/platform.service.ts +++ b/website/src/app/shared/platform/platform.service.ts @@ -1,92 +1,20 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Observable, map, shareReplay, take } from 'rxjs'; +import { Observable, shareReplay, take } from 'rxjs'; -import { Platform, PlatformData, PlatformLogoData } from './platform-data'; +import { Platform } from './platform-data'; @Injectable({ providedIn: 'root' }) export class PlatformService { - private logoDataCache$: Observable | null = null; - constructor(private http: HttpClient) { } - public getAllPlatformData(): Observable { - if (!this.logoDataCache$) { - this.logoDataCache$ = this.http.get('/assets/platform-logos.json') - .pipe( - take(1), - shareReplay(1), - map((data: PlatformLogoData) => - Object.entries(data) - .reduce((acc, [key, logoUrl]) => { - acc[key] = this.getPlatform(key, logoUrl); - - return acc; - }, {} as PlatformData) - ) - ); - } - - return this.logoDataCache$; - } - - public getPlatformData(platform: string): Observable { - return this.getAllPlatformData() + public getAllPlatforms(): Observable { + return this.http.get('/assets/platform.json') .pipe( - map((data: PlatformData) => { - const platformData = data[platform]; - - if (!platformData) { - throw new Error(`Platform ${platform} not found`); - } - - return platformData; - } - ) + take(1), + shareReplay(1) ); } - - private getPlatform(key: string, logoUrl: string): Platform { - switch (key) { - case 'azure': - return { name: 'Azure', logo: logoUrl, description: 'Cloud services by Microsoft', category: 'hyperscaler' }; - case 'aws': - return { name: 'Amazon Web Services', logo: logoUrl, description: 'Amazon\'s scalable cloud platform', category: 'hyperscaler' }; - case 'gcp': - return { name: 'Google Cloud', logo: logoUrl, description: 'Cloud solutions by Google', category: 'hyperscaler' }; - case 'github': - return { name: 'GitHub', logo: logoUrl, description: 'Version control platform', category: 'devops' }; - case 'aks': - return { name: 'Azure Kubernetes Service', logo: logoUrl, description: 'Managed Kubernetes service on Azure', category: 'hyperscaler' }; - case 'kubernetes': - return { name: 'Kubernetes', logo: logoUrl, description: 'Container orchestration platform', category: 'devops' }; - case 'ionos': - return { name: 'IONOS', logo: logoUrl, description: 'European cloud and hosting provider', category: 'european' }; - case 'stackit': - return { name: 'STACKIT', logo: logoUrl, description: 'Cloud platform by Schwarz IT', category: 'european' }; - case 'datadog': - return { name: 'DataDog', logo: logoUrl, description: 'Monitoring and analytics platform', category: 'devops' }; - case 'cloudfoundry': - return { name: 'Cloud Foundry', logo: logoUrl, description: 'Open-source cloud application platform', category: 'private-cloud' }; - case 'ovh': - return { name: 'OVHcloud', logo: logoUrl, description: 'European cloud service provider', category: 'european' }; - case 'sapbtp': - return { name: 'SAP Business Technology Platform', logo: logoUrl, description: 'SAP\'s platform-as-a-service solution', category: 'european' }; - case 'azuredevops': - return { name: 'Azure DevOps', logo: logoUrl, description: 'DevOps tools and services by Microsoft', category: 'devops' }; - case 'openstack': - return { name: 'OpenStack', logo: logoUrl, description: 'Open-source cloud infrastructure platform', category: 'private-cloud' }; - case 'openshift': - return { name: 'OpenShift', logo: logoUrl }; - case 'oci': - return { name: 'Oracle Cloud Infrastructure', logo: logoUrl }; - case 'tencentcloud': - return { name: 'Tencent Cloud', logo: logoUrl, description: 'Cloud services by Tencent', category: 'china' }; - default: - return { name: key, logo: logoUrl }; - } - } - } diff --git a/website/src/app/shared/template/template.service.ts b/website/src/app/shared/template/template.service.ts index 046cee9b..0d2e1285 100644 --- a/website/src/app/shared/template/template.service.ts +++ b/website/src/app/shared/template/template.service.ts @@ -2,7 +2,7 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable, map, take } from 'rxjs'; -import { PlatformType, Template } from 'app/core'; +import { Template } from 'app/core'; interface GeneratedTemplateData { templates: Template[]; @@ -35,7 +35,7 @@ export class TemplateService { } public filterTemplatesByPlatformType( - platformType: PlatformType | 'all' + platformType: string | 'all' ): Observable { return this.retrieveData() .pipe( diff --git a/website/src/app/shared/util/logo-color.util.ts b/website/src/app/shared/util/logo-color.util.ts new file mode 100644 index 00000000..91262af5 --- /dev/null +++ b/website/src/app/shared/util/logo-color.util.ts @@ -0,0 +1,35 @@ +import ColorThief from 'colorthief'; +import { Observable } from 'rxjs'; + +/** + * Extracts the dominant color from an image URL using ColorThief and returns an rgba string with the given alpha. + * @param imageUrl The image URL + * @param alpha The alpha value for the rgba color (default 0.1) + * @returns Observable The rgba color string or null if extraction fails + */ +export function extractLogoColor(imageUrl: string, alpha = 0.1): Observable { + return new Observable((observer) => { + if (!imageUrl || typeof window === 'undefined') { + observer.next(null); + observer.complete(); + return; + } + const img = new Image(); + img.crossOrigin = 'Anonymous'; + img.src = imageUrl; + img.onload = () => { + try { + const colorThief = new ColorThief(); + const dominantColor = colorThief.getColor(img); + observer.next(`rgba(${dominantColor.join(',')}, ${alpha})`); + } catch { + observer.next(null); + } + observer.complete(); + }; + img.onerror = () => { + observer.next(null); + observer.complete(); + }; + }); +} diff --git a/website/yarn.lock b/website/yarn.lock index 4ecba90c..548a4db8 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== -"@ampproject/remapping@2.3.0", "@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.2.0", "@ampproject/remapping@2.3.0": version "2.3.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== @@ -15,7 +15,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@angular-devkit/architect@0.1902.5", "@angular-devkit/architect@>= 0.1900.0 < 0.2000.0": +"@angular-devkit/architect@>= 0.1900.0 < 0.2000.0", "@angular-devkit/architect@0.1902.5": version "0.1902.5" resolved "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.5.tgz" integrity sha512-GdcTqwCZT0CTagUoTmq799hpnbQeICx53+eHsfs+lyKjkojk1ahC6ZOi4nNLDl/J2DIMFPHIG1ZgHPuhjKItAw== @@ -94,7 +94,7 @@ "@angular-devkit/architect" "0.1902.5" rxjs "7.8.1" -"@angular-devkit/core@19.2.5", "@angular-devkit/core@>= 19.0.0 < 20.0.0": +"@angular-devkit/core@>= 19.0.0 < 20.0.0", "@angular-devkit/core@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.5.tgz" integrity sha512-s5d6ZQmut5QO7pcxssIoDgeVhVEjoQKxWpBeqsSdYxMYjROMR+QnlNcyiSDLI6Wc7QR9mZINOpx8yoj6Nim1Rw== @@ -106,7 +106,7 @@ rxjs "7.8.1" source-map "0.7.4" -"@angular-devkit/schematics@19.2.5", "@angular-devkit/schematics@>= 19.0.0 < 20.0.0": +"@angular-devkit/schematics@>= 19.0.0 < 20.0.0", "@angular-devkit/schematics@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.5.tgz" integrity sha512-gfWnbwDOuKyRZK0biVyiNIhV6kmI1VmHg1LLbJm3QK6jDL0JgXD0NudgL8ILl5Ksd1sJOwQAuzTLM5iPfB3hDA== @@ -145,14 +145,6 @@ aria-query "5.3.2" axobject-query "4.1.0" -"@angular-eslint/eslint-plugin@19.2.1": - version "19.2.1" - resolved "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.2.1.tgz" - integrity sha512-wCjyH5cJb4fBchEnt3L6dQ6syaLHD+xeHCSynD/Lw3K6BcVEnFa+82SfSscgXtYLRPHlkK5CmYYs3AlALhA+/w== - dependencies: - "@angular-eslint/bundled-angular-compiler" "19.2.1" - "@angular-eslint/utils" "19.2.1" - "@angular-eslint/eslint-plugin@^19.3.0": version "19.3.0" resolved "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.3.0.tgz" @@ -161,6 +153,14 @@ "@angular-eslint/bundled-angular-compiler" "19.3.0" "@angular-eslint/utils" "19.3.0" +"@angular-eslint/eslint-plugin@19.2.1": + version "19.2.1" + resolved "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.2.1.tgz" + integrity sha512-wCjyH5cJb4fBchEnt3L6dQ6syaLHD+xeHCSynD/Lw3K6BcVEnFa+82SfSscgXtYLRPHlkK5CmYYs3AlALhA+/w== + dependencies: + "@angular-eslint/bundled-angular-compiler" "19.2.1" + "@angular-eslint/utils" "19.2.1" + "@angular-eslint/schematics@19.2.1": version "19.2.1" resolved "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-19.2.1.tgz" @@ -261,14 +261,14 @@ symbol-observable "4.0.0" yargs "17.7.2" -"@angular/common@19.2.5": +"@angular/common@^19.0.0", "@angular/common@^19.0.0 || ^19.2.0-next.0", "@angular/common@^19.0.0 || ^20.0.0", "@angular/common@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/common/-/common-19.2.5.tgz" integrity sha512-vFCBdas4C5PxP6ts/4TlRddWD3DUmI3aaO0QZdZvqyLHy428t84ruYdsJXKaeD8ie2U4/9F3a1tsklclRG/BBA== dependencies: tslib "^2.3.0" -"@angular/compiler-cli@19.2.5": +"@angular/compiler-cli@^19.0.0 || ^19.2.0-next.0", "@angular/compiler-cli@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.5.tgz" integrity sha512-b2cG41r6lilApXLlvja1Ra2D00dM3BxmQhoElKC1tOnpD6S3/krlH1DOnBB2I55RBn9iv4zdmPz1l8zPUSh7DQ== @@ -282,14 +282,14 @@ tslib "^2.3.0" yargs "^17.2.1" -"@angular/compiler@19.2.5": +"@angular/compiler@^19.0.0 || ^19.2.0-next.0", "@angular/compiler@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.5.tgz" integrity sha512-34J+HubQjwkbZ0AUtU5sa4Zouws9XtP/fKaysMQecoYJTZ3jewzLSRu3aAEZX1Y4gIrcVVKKIxM6oWoXKwYMOA== dependencies: tslib "^2.3.0" -"@angular/core@19.2.5": +"@angular/core@^19.0.0", "@angular/core@^19.0.0 || ^19.2.0-next.0", "@angular/core@^19.0.0 || ^20.0.0", "@angular/core@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/core/-/core-19.2.5.tgz" integrity sha512-NNEz1sEZz1mBpgf6Tz3aJ9b8KjqpTiMYhHfCYA9h9Ipe4D8gUmOsvPHPK2M755OX7p7PmUmzp1XCUHYrZMVHRw== @@ -303,7 +303,7 @@ dependencies: tslib "^2.3.0" -"@angular/localize@19.2.5": +"@angular/localize@^19.0.0 || ^19.2.0-next.0", "@angular/localize@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/localize/-/localize-19.2.5.tgz" integrity sha512-oAc19bubk6Z/2Vv6OkV0MsjdgC8cUaUwBmwdc6blFVe1NCX1KjdaqDyC2EQAO3nWfcdV4uvOOuu8myxB64bamw== @@ -320,14 +320,14 @@ dependencies: tslib "^2.3.0" -"@angular/platform-browser@19.2.5": +"@angular/platform-browser@^19.0.0", "@angular/platform-browser@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.5.tgz" integrity sha512-Lshy++X16cvl6OPvfzMySpsqEaCPKEJmDjz7q7oSt96oxlh6LvOeOUVLjsNyrNaIt9NadpWoqjlu/I9RTPJkpw== dependencies: tslib "^2.3.0" -"@angular/platform-server@19.2.5": +"@angular/platform-server@^19.0.0 || ^19.2.0-next.0", "@angular/platform-server@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/platform-server/-/platform-server-19.2.5.tgz" integrity sha512-F23ph7vPobssJ5oil2qkPwRTKw7KaNqAORu3Y7pUAAn+K+KMO8v/wzGMcOdln/BjTSCR/FjOnZv8k8lpju/9iw== @@ -335,20 +335,28 @@ tslib "^2.3.0" xhr2 "^0.2.0" -"@angular/router@19.2.5": +"@angular/router@^19.0.0 || ^19.2.0-next.0", "@angular/router@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/router/-/router-19.2.5.tgz" integrity sha512-9pSfmdNXLjaOKj0kd4UxBC7sFdCFOnRGbftp397G3KWqsLsGSKmNFzqhXNeA5QHkaVxnpmpm8HzXU+zYV5JwSg== dependencies: tslib "^2.3.0" -"@angular/ssr@19.2.5": +"@angular/ssr@^19.2.5", "@angular/ssr@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@angular/ssr/-/ssr-19.2.5.tgz" integrity sha512-dZOOvL+AqglWNm2QrCVNtrPMcYqeIv9K4z1U2CXubo6JpJcO1X3LAfuSuaS1VbFUQqLQf77YRYyHZX3ApWSDEA== dependencies: tslib "^2.3.0" +"@antfu/install-pkg@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz" + integrity sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ== + dependencies: + package-manager-detector "^1.3.0" + tinyexec "^1.0.1" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" @@ -363,7 +371,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== -"@babel/core@7.26.10", "@babel/core@^7.12.3", "@babel/core@^7.23.9": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.23.9", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@7.26.10": version "7.26.10" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz" integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== @@ -405,17 +413,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@7.26.10": - version "7.26.10" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz" - integrity sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang== - dependencies: - "@babel/parser" "^7.26.10" - "@babel/types" "^7.26.10" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - "@babel/generator@^7.26.10", "@babel/generator@^7.26.9", "@babel/generator@^7.27.0": version "7.27.0" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz" @@ -427,7 +424,18 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@7.25.9", "@babel/helper-annotate-as-pure@^7.25.9": +"@babel/generator@7.26.10": + version "7.26.10" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz" + integrity sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang== + dependencies: + "@babel/parser" "^7.26.10" + "@babel/types" "^7.26.10" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.25.9", "@babel/helper-annotate-as-pure@7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz" integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== @@ -638,7 +646,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@7.26.0", "@babel/plugin-syntax-import-attributes@^7.26.0": +"@babel/plugin-syntax-import-attributes@^7.26.0", "@babel/plugin-syntax-import-attributes@7.26.0": version "7.26.0" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz" integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== @@ -660,7 +668,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@7.26.8", "@babel/plugin-transform-async-generator-functions@^7.26.8": +"@babel/plugin-transform-async-generator-functions@^7.26.8", "@babel/plugin-transform-async-generator-functions@7.26.8": version "7.26.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz" integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== @@ -669,7 +677,7 @@ "@babel/helper-remap-async-to-generator" "^7.25.9" "@babel/traverse" "^7.26.8" -"@babel/plugin-transform-async-to-generator@7.25.9", "@babel/plugin-transform-async-to-generator@^7.25.9": +"@babel/plugin-transform-async-to-generator@^7.25.9", "@babel/plugin-transform-async-to-generator@7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz" integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== @@ -1136,13 +1144,6 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@7.26.10": - version "7.26.10" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz" - integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/runtime@^7.8.4": version "7.27.0" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz" @@ -1150,6 +1151,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@7.26.10": + version "7.26.10" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz" + integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0": version "7.27.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz" @@ -1180,6 +1188,43 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@braintree/sanitize-url@^7.1.1": + version "7.1.2" + resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz" + integrity sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA== + +"@chevrotain/cst-dts-gen@11.0.3": + version "11.0.3" + resolved "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz" + integrity sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ== + dependencies: + "@chevrotain/gast" "11.0.3" + "@chevrotain/types" "11.0.3" + lodash-es "4.17.21" + +"@chevrotain/gast@11.0.3": + version "11.0.3" + resolved "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz" + integrity sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q== + dependencies: + "@chevrotain/types" "11.0.3" + lodash-es "4.17.21" + +"@chevrotain/regexp-to-ast@11.0.3": + version "11.0.3" + resolved "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz" + integrity sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA== + +"@chevrotain/types@11.0.3": + version "11.0.3" + resolved "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz" + integrity sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ== + +"@chevrotain/utils@11.0.3": + version "11.0.3" + resolved "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz" + integrity sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" @@ -1190,28 +1235,6 @@ resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz" integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== -"@emnapi/core@^1.4.3", "@emnapi/core@^1.7.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" - integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg== - dependencies: - "@emnapi/wasi-threads" "1.1.0" - tslib "^2.4.0" - -"@emnapi/runtime@^1.2.0", "@emnapi/runtime@^1.4.3", "@emnapi/runtime@^1.7.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5" - integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.1.0", "@emnapi/wasi-threads@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf" - integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== - dependencies: - tslib "^2.4.0" - "@es-joy/jsdoccomment@~0.49.0": version "0.49.0" resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz" @@ -1221,46 +1244,6 @@ esquery "^1.6.0" jsdoc-type-pratt-parser "~4.1.0" -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== - -"@esbuild/aix-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" - integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== - -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - -"@esbuild/android-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" - integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== - -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== - -"@esbuild/android-arm@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" - integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== - -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== - -"@esbuild/android-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" - integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== - "@esbuild/darwin-arm64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz" @@ -1271,196 +1254,6 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz" integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== - -"@esbuild/darwin-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" - integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== - -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== - -"@esbuild/freebsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" - integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== - -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== - -"@esbuild/freebsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" - integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== - -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - -"@esbuild/linux-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" - integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== - -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== - -"@esbuild/linux-arm@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" - integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== - -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== - -"@esbuild/linux-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" - integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== - -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== - -"@esbuild/linux-loong64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" - integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== - -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - -"@esbuild/linux-mips64el@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" - integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== - -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== - -"@esbuild/linux-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" - integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== - -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== - -"@esbuild/linux-riscv64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" - integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== - -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== - -"@esbuild/linux-s390x@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" - integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== - -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== - -"@esbuild/linux-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz#f1c796b78fff5ce393658313e8c58613198d9954" - integrity sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA== - -"@esbuild/netbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" - integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== - -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== - -"@esbuild/netbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" - integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== - -"@esbuild/openbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" - integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== - -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== - -"@esbuild/openbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" - integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== - -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== - -"@esbuild/sunos-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" - integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== - -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== - -"@esbuild/win32-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" - integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== - -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== - -"@esbuild/win32-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" - integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== - -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== - -"@esbuild/win32-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" - integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== - "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.5.1" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz" @@ -1532,6 +1325,20 @@ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@iconify/types@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz" + integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== + +"@iconify/utils@^3.0.1": + version "3.1.0" + resolved "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz" + integrity sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw== + dependencies: + "@antfu/install-pkg" "^1.1.0" + "@iconify/types" "^2.0.0" + mlly "^1.8.0" + "@img/sharp-darwin-arm64@0.33.5": version "0.33.5" resolved "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz" @@ -1539,112 +1346,11 @@ optionalDependencies: "@img/sharp-libvips-darwin-arm64" "1.0.4" -"@img/sharp-darwin-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" - integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q== - optionalDependencies: - "@img/sharp-libvips-darwin-x64" "1.0.4" - "@img/sharp-libvips-darwin-arm64@1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz" integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== -"@img/sharp-libvips-darwin-x64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" - integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== - -"@img/sharp-libvips-linux-arm64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" - integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== - -"@img/sharp-libvips-linux-arm@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" - integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== - -"@img/sharp-libvips-linux-s390x@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" - integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== - -"@img/sharp-libvips-linux-x64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" - integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== - -"@img/sharp-libvips-linuxmusl-arm64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" - integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== - -"@img/sharp-libvips-linuxmusl-x64@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" - integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== - -"@img/sharp-linux-arm64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" - integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA== - optionalDependencies: - "@img/sharp-libvips-linux-arm64" "1.0.4" - -"@img/sharp-linux-arm@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" - integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ== - optionalDependencies: - "@img/sharp-libvips-linux-arm" "1.0.5" - -"@img/sharp-linux-s390x@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" - integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q== - optionalDependencies: - "@img/sharp-libvips-linux-s390x" "1.0.4" - -"@img/sharp-linux-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" - integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA== - optionalDependencies: - "@img/sharp-libvips-linux-x64" "1.0.4" - -"@img/sharp-linuxmusl-arm64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" - integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" - -"@img/sharp-linuxmusl-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" - integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64" "1.0.4" - -"@img/sharp-wasm32@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" - integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg== - dependencies: - "@emnapi/runtime" "^1.2.0" - -"@img/sharp-win32-ia32@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" - integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== - -"@img/sharp-win32-x64@0.33.5": - version "0.33.5" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" - integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== - "@inquirer/checkbox@^4.1.2": version "4.1.4" resolved "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.4.tgz" @@ -1656,14 +1362,6 @@ ansi-escapes "^4.3.2" yoctocolors-cjs "^2.1.2" -"@inquirer/confirm@5.1.6": - version "5.1.6" - resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz" - integrity sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw== - dependencies: - "@inquirer/core" "^10.1.7" - "@inquirer/type" "^3.0.4" - "@inquirer/confirm@^5.1.6": version "5.1.8" resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz" @@ -1672,6 +1370,14 @@ "@inquirer/core" "^10.1.9" "@inquirer/type" "^3.0.5" +"@inquirer/confirm@5.1.6": + version "5.1.6" + resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz" + integrity sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw== + dependencies: + "@inquirer/core" "^10.1.7" + "@inquirer/type" "^3.0.4" + "@inquirer/core@^10.1.7", "@inquirer/core@^10.1.9": version "10.1.9" resolved "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz" @@ -1734,7 +1440,7 @@ "@inquirer/type" "^3.0.5" ansi-escapes "^4.3.2" -"@inquirer/prompts@7.3.2": +"@inquirer/prompts@>= 3 < 8", "@inquirer/prompts@7.3.2": version "7.3.2" resolved "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz" integrity sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ== @@ -1901,145 +1607,27 @@ resolved "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.2.6.tgz" integrity sha512-yF/ih9EJJZc72psFQbwnn8mExIWfTnzWJg+N02hnpXtDPETYLmQswIMBn7+V88lfCaFrMozJsUvcEQIkEPU0Gg== -"@lmdb/lmdb-darwin-x64@3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.2.6.tgz#1e2a066f49b454411ed778a589ee57a6051851df" - integrity sha512-5BbCumsFLbCi586Bb1lTWQFkekdQUw8/t8cy++Uq251cl3hbDIGEwD9HAwh8H6IS2F6QA9KdKmO136LmipRNkg== - -"@lmdb/lmdb-linux-arm64@3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.6.tgz#42c4c67dd67da62860f8fb7dd57e9171f407c1d2" - integrity sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg== - -"@lmdb/lmdb-linux-arm@3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.2.6.tgz#a4aabc336dfbb2efdad6c91e39a95bece96fa7bd" - integrity sha512-+6XgLpMb7HBoWxXj+bLbiiB4s0mRRcDPElnRS3LpWRzdYSe+gFk5MT/4RrVNqd2MESUDmb53NUXw1+BP69bjiQ== - -"@lmdb/lmdb-linux-x64@3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.2.6.tgz#83fb669606ebe6275915a06f2ca2e34d2ce1664e" - integrity sha512-nDYT8qN9si5+onHYYaI4DiauDMx24OAiuZAUsEqrDy+ja/3EbpXPX/VAkMV8AEaQhy3xc4dRC+KcYIvOFefJ4Q== - -"@lmdb/lmdb-win32-x64@3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.2.6.tgz#729f2035ddef1975279b3329532f5c1f86c91918" - integrity sha512-XlqVtILonQnG+9fH2N3Aytria7P/1fwDgDhl29rde96uH2sLB8CHORIf2PfuLVzFQJ7Uqp8py9AYwr3ZUCFfWg== - "@lokesh.dhakar/quantize@^1.4.0": version "1.4.0" resolved "https://registry.npmjs.org/@lokesh.dhakar/quantize/-/quantize-1.4.0.tgz" integrity sha512-+//cqVWKis//t0YH62EDtwaFSPG/CDtYNg4CZmzNmG2d5W17Iu3fuDAdpQXCDHUDrrU9q0veze4A7tPZXlR/mg== +"@mermaid-js/parser@^0.6.3": + version "0.6.3" + resolved "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz" + integrity sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA== + dependencies: + langium "3.3.1" + "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz" integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" - integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" - integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" - integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" - integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== - -"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" - integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== - -"@napi-rs/nice-android-arm-eabi@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz#9a0cba12706ff56500df127d6f4caf28ddb94936" - integrity sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w== - -"@napi-rs/nice-android-arm64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz#32fc32e9649bd759d2a39ad745e95766f6759d2f" - integrity sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA== - -"@napi-rs/nice-darwin-arm64@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz" - integrity sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA== - -"@napi-rs/nice-darwin-x64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz#f1b1365a8370c6a6957e90085a9b4873d0e6a957" - integrity sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ== - -"@napi-rs/nice-freebsd-x64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz#4280f081efbe0b46c5165fdaea8b286e55a8f89e" - integrity sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw== - -"@napi-rs/nice-linux-arm-gnueabihf@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz#07aec23a9467ed35eb7602af5e63d42c5d7bd473" - integrity sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q== - -"@napi-rs/nice-linux-arm64-gnu@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz#038a77134cc6df3c48059d5a5e199d6f50fb9a90" - integrity sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA== - -"@napi-rs/nice-linux-arm64-musl@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz#715d0906582ba0cff025109f42e5b84ea68c2bcc" - integrity sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw== - -"@napi-rs/nice-linux-ppc64-gnu@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz#ac1c8f781c67b0559fa7a1cd4ae3ca2299dc3d06" - integrity sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q== - -"@napi-rs/nice-linux-riscv64-gnu@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz#b0a430549acfd3920ffd28ce544e2fe17833d263" - integrity sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig== - -"@napi-rs/nice-linux-s390x-gnu@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz#5b95caf411ad72a965885217db378c4d09733e97" - integrity sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg== - -"@napi-rs/nice-linux-x64-gnu@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz#a98cdef517549f8c17a83f0236a69418a90e77b7" - integrity sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA== - -"@napi-rs/nice-linux-x64-musl@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz#5e26843eafa940138aed437c870cca751c8a8957" - integrity sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ== - -"@napi-rs/nice-win32-arm64-msvc@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz#bd62617d02f04aa30ab1e9081363856715f84cd8" - integrity sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg== - -"@napi-rs/nice-win32-ia32-msvc@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz#b8b7aad552a24836027473d9b9f16edaeabecf18" - integrity sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw== - -"@napi-rs/nice-win32-x64-msvc@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz#37d8718b8f722f49067713e9f1e85540c9a3dd09" - integrity sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg== +"@napi-rs/nice-darwin-arm64@1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz" + integrity sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA== "@napi-rs/nice@^1.0.1": version "1.0.1" @@ -2063,24 +1651,6 @@ "@napi-rs/nice-win32-ia32-msvc" "1.0.1" "@napi-rs/nice-win32-x64-msvc" "1.0.1" -"@napi-rs/wasm-runtime@^0.2.8": - version "0.2.12" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2" - integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== - dependencies: - "@emnapi/core" "^1.4.3" - "@emnapi/runtime" "^1.4.3" - "@tybys/wasm-util" "^0.10.0" - -"@napi-rs/wasm-runtime@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz#c3705ab549d176b8dc5172723d6156c3dc426af2" - integrity sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A== - dependencies: - "@emnapi/core" "^1.7.1" - "@emnapi/runtime" "^1.7.1" - "@tybys/wasm-util" "^0.10.1" - "@ngtools/webpack@19.2.5": version "19.2.5" resolved "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.5.tgz" @@ -2094,7 +1664,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2194,71 +1764,11 @@ proc-log "^5.0.0" which "^5.0.0" -"@parcel/watcher-android-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" - integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== - "@parcel/watcher-darwin-arm64@2.5.1": version "2.5.1" resolved "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz" integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== -"@parcel/watcher-darwin-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" - integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== - -"@parcel/watcher-freebsd-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" - integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== - -"@parcel/watcher-linux-arm-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" - integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== - -"@parcel/watcher-linux-arm-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" - integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== - -"@parcel/watcher-linux-arm64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" - integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== - -"@parcel/watcher-linux-arm64-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" - integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== - -"@parcel/watcher-linux-x64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" - integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== - -"@parcel/watcher-linux-x64-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" - integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== - -"@parcel/watcher-win32-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" - integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== - -"@parcel/watcher-win32-ia32@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" - integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== - -"@parcel/watcher-win32-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" - integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== - "@parcel/watcher@^2.4.1": version "2.5.1" resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz" @@ -2293,36 +1803,6 @@ resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz" integrity sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ== -"@rollup/rollup-android-arm-eabi@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz#731df27dfdb77189547bcef96ada7bf166bbb2fb" - integrity sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw== - -"@rollup/rollup-android-arm-eabi@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz#9bedc746a97fe707154086365f269ced92ff4aa9" - integrity sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ== - -"@rollup/rollup-android-arm-eabi@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz#1d8cc5dd3d8ffe569d8f7f67a45c7909828a0f66" - integrity sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA== - -"@rollup/rollup-android-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz#4bea6db78e1f6927405df7fe0faf2f5095e01343" - integrity sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q== - -"@rollup/rollup-android-arm64@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz#6edc6ffc8af8773e4bc28c72894dd5e846b8ee6c" - integrity sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA== - -"@rollup/rollup-android-arm64@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz#9c136034d3d9ed29d0b138c74dd63c5744507fca" - integrity sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ== - "@rollup/rollup-darwin-arm64@4.34.8": version "4.34.8" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz" @@ -2338,256 +1818,6 @@ resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz" integrity sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q== -"@rollup/rollup-darwin-x64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz#c572c024b57ee8ddd1b0851703ace9eb6cc0dd82" - integrity sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw== - -"@rollup/rollup-darwin-x64@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz#a6a697bb685ca9462a7caeea5f22f6a686acff1f" - integrity sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ== - -"@rollup/rollup-darwin-x64@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz#b26f0f47005c1fa5419a880f323ed509dc8d885c" - integrity sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ== - -"@rollup/rollup-freebsd-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz#cf74f8113b5a83098a5c026c165742277cbfb88b" - integrity sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA== - -"@rollup/rollup-freebsd-arm64@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz#18113e8e133ccb6de4b9dc9d3e09f7acff344cb7" - integrity sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA== - -"@rollup/rollup-freebsd-arm64@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz#2b60c81ac01ff7d1bc8df66aee7808b6690c6d19" - integrity sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ== - -"@rollup/rollup-freebsd-x64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz#39561f3a2f201a4ad6a01425b1ff5928154ecd7c" - integrity sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q== - -"@rollup/rollup-freebsd-x64@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz#5e56ffd4a0d7ccfcbc86867c40b8f0e6a2c0c81e" - integrity sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA== - -"@rollup/rollup-freebsd-x64@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz#4826af30f4d933d82221289068846c9629cc628c" - integrity sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q== - -"@rollup/rollup-linux-arm-gnueabihf@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz#980d6061e373bfdaeb67925c46d2f8f9b3de537f" - integrity sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g== - -"@rollup/rollup-linux-arm-gnueabihf@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz#5addf1a51e1495ae7ff28d26442a88adf629c980" - integrity sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w== - -"@rollup/rollup-linux-arm-gnueabihf@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz#a1f4f963d5dcc9e5575c7acf9911824806436bf7" - integrity sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g== - -"@rollup/rollup-linux-arm-musleabihf@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz#f91a90f30dc00d5a64ac2d9bbedc829cd3cfaa78" - integrity sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA== - -"@rollup/rollup-linux-arm-musleabihf@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz#00cddb9ab51086c5f2cd33cd4738259e24be4e73" - integrity sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag== - -"@rollup/rollup-linux-arm-musleabihf@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz#e924b0a8b7c400089146f6278446e6b398b75a06" - integrity sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw== - -"@rollup/rollup-linux-arm64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz#fac700fa5c38bc13a0d5d34463133093da4c92a0" - integrity sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A== - -"@rollup/rollup-linux-arm64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz#c3b4324496236b6fd9f31fda5701c6d6060b1512" - integrity sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA== - -"@rollup/rollup-linux-arm64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz#cb43303274ec9a716f4440b01ab4e20c23aebe20" - integrity sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ== - -"@rollup/rollup-linux-arm64-musl@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz#f50ecccf8c78841ff6df1706bc4782d7f62bf9c3" - integrity sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q== - -"@rollup/rollup-linux-arm64-musl@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz#b5222180bb1a50e6e9bc8263efd771c1ce770b6f" - integrity sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ== - -"@rollup/rollup-linux-arm64-musl@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz#531c92533ce3d167f2111bfcd2aa1a2041266987" - integrity sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA== - -"@rollup/rollup-linux-loongarch64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz#5869dc0b28242da6553e2b52af41374f4038cd6e" - integrity sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ== - -"@rollup/rollup-linux-loongarch64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz#5660181c1c1efb7b19c7a531d496e685236c5ce7" - integrity sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA== - -"@rollup/rollup-linux-loongarch64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz#53403889755d0c37c92650aad016d5b06c1b061a" - integrity sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz#5cdd9f851ce1bea33d6844a69f9574de335f20b1" - integrity sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz#8273166495d2f5d3fbc556cf42a5a6e24b78bdab" - integrity sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz#f669f162e29094c819c509e99dbeced58fc708f9" - integrity sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ== - -"@rollup/rollup-linux-riscv64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz#ef5dc37f4388f5253f0def43e1440ec012af204d" - integrity sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw== - -"@rollup/rollup-linux-riscv64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz#9677e39288ccc91ebcd707cdd794732d701cd174" - integrity sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw== - -"@rollup/rollup-linux-riscv64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz#4bab37353b11bcda5a74ca11b99dea929657fd5f" - integrity sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ== - -"@rollup/rollup-linux-riscv64-musl@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.37.0.tgz#71cc5ca7be1ed263357618bfe4f8f50c09725a7e" - integrity sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA== - -"@rollup/rollup-linux-riscv64-musl@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz#4d66be1ce3cfd40a7910eb34dddc7cbd4c2dd2a5" - integrity sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA== - -"@rollup/rollup-linux-s390x-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz#7dbc3ccbcbcfb3e65be74538dfb6e8dd16178fde" - integrity sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA== - -"@rollup/rollup-linux-s390x-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz#6b0b7df33eb32b0ee7423898b183acc1b5fee33e" - integrity sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A== - -"@rollup/rollup-linux-s390x-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz#7181c329395ed53340a0c59678ad304a99627f6d" - integrity sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA== - -"@rollup/rollup-linux-x64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz#5783fc0adcab7dc069692056e8ca8d83709855ce" - integrity sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA== - -"@rollup/rollup-linux-x64-gnu@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.37.0.tgz#52c27717d3c4819d13b5ebc2373ddea099d2e71b" - integrity sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ== - -"@rollup/rollup-linux-x64-gnu@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz#00825b3458094d5c27cb4ed66e88bfe9f1e65f90" - integrity sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA== - -"@rollup/rollup-linux-x64-musl@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz#00b6c29b298197a384e3c659910b47943003a678" - integrity sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ== - -"@rollup/rollup-linux-x64-musl@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.37.0.tgz#c134a22d30642345de8b799c816345674bf68019" - integrity sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w== - -"@rollup/rollup-linux-x64-musl@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz#81caac2a31b8754186f3acc142953a178fcd6fba" - integrity sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg== - -"@rollup/rollup-win32-arm64-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz#cbfee01f1fe73791c35191a05397838520ca3cdd" - integrity sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ== - -"@rollup/rollup-win32-arm64-msvc@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz#8063d5f8195dd1845e056d069366fbe06a424d09" - integrity sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg== - -"@rollup/rollup-win32-arm64-msvc@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz#3a3f421f5ce9bd99ed20ce1660cce7cee3e9f199" - integrity sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ== - -"@rollup/rollup-win32-ia32-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz#95cdbdff48fe6c948abcf6a1d500b2bd5ce33f62" - integrity sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w== - -"@rollup/rollup-win32-ia32-msvc@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz#891d90e3b5517f9d290bb416afdfe2ebfb12139e" - integrity sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA== - -"@rollup/rollup-win32-ia32-msvc@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz#a44972d5cdd484dfd9cf3705a884bf0c2b7785a7" - integrity sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ== - -"@rollup/rollup-win32-x64-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz#4cdb2cfae69cdb7b1a3cc58778e820408075e928" - integrity sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g== - -"@rollup/rollup-win32-x64-msvc@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz#a54d7304c3bd45573d8bcd1270de89771f8195fe" - integrity sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA== - -"@rollup/rollup-win32-x64-msvc@4.39.0": - version "4.39.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz#bfe0214e163f70c4fec1c8f7bb8ce266f4c05b7e" - integrity sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug== - "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" @@ -2678,73 +1908,11 @@ source-map-js "^1.2.1" tailwindcss "4.1.18" -"@tailwindcss/oxide-android-arm64@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz#79717f87e90135e5d3d23a3d3aecde4ca5595dd5" - integrity sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q== - "@tailwindcss/oxide-darwin-arm64@4.1.18": version "4.1.18" resolved "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz" integrity sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A== -"@tailwindcss/oxide-darwin-x64@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz#c05991c85aa2af47bf9d1f8172fe9e4636591e79" - integrity sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw== - -"@tailwindcss/oxide-freebsd-x64@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz#3d48e8d79fd08ece0e02af8e72d5059646be34d0" - integrity sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA== - -"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz#982ecd1a65180807ccfde67dc17c6897f2e50aa8" - integrity sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA== - -"@tailwindcss/oxide-linux-arm64-gnu@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz#df49357bc9737b2e9810ea950c1c0647ba6573c3" - integrity sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw== - -"@tailwindcss/oxide-linux-arm64-musl@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz#b266c12822bf87883cf152615f8fffb8519d689c" - integrity sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg== - -"@tailwindcss/oxide-linux-x64-gnu@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz#5c737f13dd9529b25b314e6000ff54e05b3811da" - integrity sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g== - -"@tailwindcss/oxide-linux-x64-musl@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz#3380e17f7be391f1ef924be9f0afe1f304fe3478" - integrity sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ== - -"@tailwindcss/oxide-wasm32-wasi@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz#9464df0e28a499aab1c55e97682be37b3a656c88" - integrity sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA== - dependencies: - "@emnapi/core" "^1.7.1" - "@emnapi/runtime" "^1.7.1" - "@emnapi/wasi-threads" "^1.1.0" - "@napi-rs/wasm-runtime" "^1.1.0" - "@tybys/wasm-util" "^0.10.1" - tslib "^2.4.0" - -"@tailwindcss/oxide-win32-arm64-msvc@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz#bbcdd59c628811f6a0a4d5b09616967d8fb0c4d4" - integrity sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA== - -"@tailwindcss/oxide-win32-x64-msvc@4.1.18": - version "4.1.18" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz#9c628d04623aa4c3536c508289f58d58ba4b3fb1" - integrity sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q== - "@tailwindcss/oxide@4.1.18": version "4.1.18" resolved "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz" @@ -2799,13 +1967,6 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.5" -"@tybys/wasm-util@^0.10.0", "@tybys/wasm-util@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" - integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== - dependencies: - tslib "^2.4.0" - "@types/babel__core@7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" @@ -2876,6 +2037,216 @@ dependencies: "@types/node" "*" +"@types/d3-array@*": + version "3.2.2" + resolved "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== + +"@types/d3-axis@*": + version "3.0.6" + resolved "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz" + integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "3.0.6" + resolved "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz" + integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "3.0.6" + resolved "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz" + integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== + +"@types/d3-color@*": + version "3.1.3" + resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-contour@*": + version "3.0.6" + resolved "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz" + integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-delaunay@*": + version "6.0.4" + resolved "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz" + integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== + +"@types/d3-dispatch@*": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz" + integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== + +"@types/d3-drag@*": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz" + integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz" + integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== + +"@types/d3-ease@*": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-fetch@*": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz" + integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "3.0.10" + resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz" + integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== + +"@types/d3-format@*": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + +"@types/d3-geo@*": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz" + integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "3.1.7" + resolved "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz" + integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== + +"@types/d3-interpolate@*": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-polygon@*": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz" + integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== + +"@types/d3-quadtree@*": + version "3.0.6" + resolved "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz" + integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== + +"@types/d3-random@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz" + integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== + +"@types/d3-scale-chromatic@*": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@*": + version "4.0.9" + resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "3.0.11" + resolved "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz" + integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w== + +"@types/d3-shape@*": + version "3.1.8" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz" + integrity sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "4.0.3" + resolved "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz" + integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== + +"@types/d3-time@*": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/d3-timer@*": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + +"@types/d3-transition@*": + version "3.0.9" + resolved "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz" + integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-zoom@*": + version "3.0.8" + resolved "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz" + integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^7.4.3": + version "7.4.3" + resolved "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz" + integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-zoom" "*" + "@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" @@ -2892,7 +2263,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@1.0.7", "@types/estree@^1.0.6": +"@types/estree@*", "@types/estree@^1.0.6", "@types/estree@1.0.7": version "1.0.7" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz" integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== @@ -2931,7 +2302,7 @@ "@types/express-serve-static-core" "^5.0.0" "@types/serve-static" "*" -"@types/express@^4.17.17", "@types/express@^4.17.21": +"@types/express@^4.17.13", "@types/express@^4.17.17", "@types/express@^4.17.21": version "4.17.21" resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -2941,6 +2312,11 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/geojson@*": + version "7946.0.16" + resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== + "@types/http-errors@*": version "2.0.4" resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" @@ -2985,20 +2361,27 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=10.0.0": +"@types/node@*": version "22.13.13" resolved "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz" integrity sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ== dependencies: undici-types "~6.20.0" -"@types/node@20": +"@types/node@^18.0.0 || ^20.0.0 || >=22.0.0", "@types/node@^18.0.0 || >=20.0.0", "@types/node@>=18", "@types/node@20": version "20.17.27" resolved "https://registry.npmjs.org/@types/node/-/node-20.17.27.tgz" integrity sha512-U58sbKhDrthHlxHRJw7ZLiLDZGmAUOZUbpw0S6nL27sYUdhvgBLCRu/keSd6qcTsfArd1sRFCCBxzWATGr/0UA== dependencies: undici-types "~6.19.2" +"@types/node@>=10.0.0": + version "22.13.13" + resolved "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz" + integrity sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ== + dependencies: + undici-types "~6.20.0" + "@types/qs@*": version "6.9.18" resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz" @@ -3045,6 +2428,11 @@ dependencies: "@types/node" "*" +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + "@types/ws@^8.5.10": version "8.18.0" resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz" @@ -3082,7 +2470,7 @@ natural-compare "^1.4.0" ts-api-utils "^2.0.1" -"@typescript-eslint/parser@7": +"@typescript-eslint/parser@^7.0.0", "@typescript-eslint/parser@7": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz" integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== @@ -3093,7 +2481,7 @@ "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" -"@typescript-eslint/parser@8.29.0": +"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@8.29.0": version "8.29.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz" integrity sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g== @@ -3148,16 +2536,16 @@ debug "^4.3.4" ts-api-utils "^2.0.1" +"@typescript-eslint/types@^7.11.0 || ^8.0.0", "@typescript-eslint/types@^8.0.0", "@typescript-eslint/types@8.28.0": + version "8.28.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz" + integrity sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA== + "@typescript-eslint/types@7.18.0": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz" integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/types@8.28.0", "@typescript-eslint/types@^8.0.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz" - integrity sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA== - "@typescript-eslint/types@8.29.0": version "8.29.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz" @@ -3205,6 +2593,16 @@ semver "^7.6.0" ts-api-utils "^2.0.1" +"@typescript-eslint/utils@^7.11.0 || ^8.0.0", "@typescript-eslint/utils@^8.0.0": + version "8.28.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz" + integrity sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.28.0" + "@typescript-eslint/types" "8.28.0" + "@typescript-eslint/typescript-estree" "8.28.0" + "@typescript-eslint/utils@7.18.0": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz" @@ -3225,16 +2623,6 @@ "@typescript-eslint/types" "8.29.0" "@typescript-eslint/typescript-estree" "8.29.0" -"@typescript-eslint/utils@^8.0.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz" - integrity sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/typescript-estree" "8.28.0" - "@typescript-eslint/visitor-keys@7.18.0": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz" @@ -3269,84 +2657,12 @@ resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.4.1.tgz" integrity sha512-8Tv+Bsd0BjGwfEedIyor4inw8atppRxM5BdUnIt+3mAm/QXUm7Dw74CHnXpfZKXkp07EXJGiA8hStqCINAWhdw== -"@unrs/resolver-binding-darwin-x64@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.4.1.tgz#9b935596b19fe249a4823af84e1949605fe084b8" - integrity sha512-X8c3PhWziEMKAzZz+YAYWfwawi5AEgzy/hmfizAB4C70gMHLKmInJcp1270yYAOs7z07YVFI220pp50z24Jk3A== - -"@unrs/resolver-binding-freebsd-x64@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.4.1.tgz#72bc9ae0299aad59bb07c53776f1f470f4457528" - integrity sha512-UUr/nREy1UdtxXQnmLaaTXFGOcGxPwNIzeJdb3KXai3TKtC1UgNOB9s8KOA4TaxOUBR/qVgL5BvBwmUjD5yuVA== - -"@unrs/resolver-binding-linux-arm-gnueabihf@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.4.1.tgz#82921377ff7e20b28ca26f636b2231fe449d4a53" - integrity sha512-e3pII53dEeS8inkX6A1ad2UXE0nuoWCqik4kOxaDnls0uJUq0ntdj5d9IYd+bv5TDwf9DSge/xPOvCmRYH+Tsw== - -"@unrs/resolver-binding-linux-arm-musleabihf@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.4.1.tgz#9b315738ecd677f9caa93717891016636a2ee820" - integrity sha512-e/AKKd9gR+HNmVyDEPI/PIz2t0DrA3cyonHNhHVjrkxe8pMCiYiqhtn1+h+yIpHUtUlM6Y1FNIdivFa+r7wrEQ== - -"@unrs/resolver-binding-linux-arm64-gnu@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.4.1.tgz#98e1bba4f7c7761fdea4ed5effc0a5ad6954cc79" - integrity sha512-vtIu34luF1jRktlHtiwm2mjuE8oJCsFiFr8hT5+tFQdqFKjPhbJXn83LswKsOhy0GxAEevpXDI4xxEwkjuXIPA== - -"@unrs/resolver-binding-linux-arm64-musl@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.4.1.tgz#62fb410adcf82b6513891639ef74f7e0339bb681" - integrity sha512-H3PaOuGyhFXiyJd+09uPhGl4gocmhyi1BRzvsP8Lv5AQO3p3/ZY7WjV4t2NkBksm9tMjf3YbOVHyPWi2eWsNYw== - -"@unrs/resolver-binding-linux-ppc64-gnu@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.4.1.tgz#0a0d7bc9eb5ff70678f266a8ee80a464ebbec0e3" - integrity sha512-4+GmJcaaFntCi1S01YByqp8wLMjV/FyQyHVGm0vedIhL1Vfx7uHkz/sZmKsidRwokBGuxi92GFmSzqT2O8KcNA== - -"@unrs/resolver-binding-linux-s390x-gnu@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.4.1.tgz#02c9dd02ac1c6192253749cc7fca35b9d7a249bd" - integrity sha512-6RDQVCmtFYTlhy89D5ixTqo9bTQqFhvNN0Ey1wJs5r+01Dq15gPHRXv2jF2bQATtMrOfYwv+R2ZR9ew1N1N3YQ== - -"@unrs/resolver-binding-linux-x64-gnu@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.4.1.tgz#83fa32f5da9a5f3143185b2d0bc2ad95e4a7a102" - integrity sha512-XpU9uzIkD86+19NjCXxlVPISMUrVXsXo5htxtuG+uJ59p5JauSRZsIxQxzzfKzkxEjdvANPM/lS1HFoX6A6QeA== - -"@unrs/resolver-binding-linux-x64-musl@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.4.1.tgz#32405d987943b4fd621f783f33fad700e3ac2d0f" - integrity sha512-3CDjG/spbTKCSHl66QP2ekHSD+H34i7utuDIM5gzoNBcZ1gTO0Op09Wx5cikXnhORRf9+HyDWzm37vU1PLSM1A== - -"@unrs/resolver-binding-wasm32-wasi@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.4.1.tgz#21d18351367e3bfe035636df05153d7f08823568" - integrity sha512-50tYhvbCTnuzMn7vmP8IV2UKF7ITo1oihygEYq9wW2DUb/Y+QMqBHJUSCABRngATjZ4shOK6f2+s0gQX6ElENQ== - dependencies: - "@napi-rs/wasm-runtime" "^0.2.8" - -"@unrs/resolver-binding-win32-arm64-msvc@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.4.1.tgz#563563b9ea7761dd7d20603792b518c4924d6f50" - integrity sha512-KyJiIne/AqV4IW0wyQO34wSMuJwy3VxVQOfIXIPyQ/Up6y/zi2P/WwXb78gHsLiGRUqCA9LOoCX+6dQZde0g1g== - -"@unrs/resolver-binding-win32-ia32-msvc@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.4.1.tgz#c734d9389fe57912b5b3b05aa000d9cb6771ceee" - integrity sha512-y2NUD7pygrBolN2NoXUrwVqBpKPhF8DiSNE5oB5/iFO49r2DpoYqdj5HPb3F42fPBH5qNqj6Zg63+xCEzAD2hw== - -"@unrs/resolver-binding-win32-x64-msvc@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.4.1.tgz#e32c666092bc419fd7c3e28fea7c74292aaa94a3" - integrity sha512-hVXaObGI2lGFmrtT77KSbPQ3I+zk9IU500wobjk0+oX59vg/0VqAzABNtt3YSQYgXTC2a/LYxekLfND/wlt0yQ== - "@vitejs/plugin-basic-ssl@1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.2.0.tgz" integrity sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q== -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": version "1.14.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== @@ -3447,7 +2763,7 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": version "1.14.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== @@ -3507,10 +2823,10 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.14.0, acorn@^8.8.2, acorn@^8.9.0: - version "8.14.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0, acorn@^8.15.0, acorn@^8.8.2, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== adjust-sourcemap-loader@^4.0.0: version "4.0.0" @@ -3525,13 +2841,6 @@ agent-base@^7.1.0, agent-base@^7.1.2: resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz" integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== -ajv-formats@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz" - integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== - dependencies: - ajv "^8.0.0" - ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" @@ -3539,6 +2848,13 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" +ajv-formats@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + ajv-keywords@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" @@ -3546,16 +2862,6 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@8.17.1, ajv@^8.0.0, ajv@^8.9.0: - version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -3566,6 +2872,16 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0, ajv@8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + angular-eslint@19.2.1: version "19.2.1" resolved "https://registry.npmjs.org/angular-eslint/-/angular-eslint-19.2.1.tgz" @@ -3622,7 +2938,17 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: +ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansi-styles@^6.2.1: version "6.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -3741,6 +3067,17 @@ async-function@^1.0.0: resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz" integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== +autoprefixer@^10.4.23: + version "10.4.23" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz" + integrity sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA== + dependencies: + browserslist "^4.28.1" + caniuse-lite "^1.0.30001760" + fraction.js "^5.3.4" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + autoprefixer@10.4.20: version "10.4.20" resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz" @@ -3753,17 +3090,6 @@ autoprefixer@10.4.20: picocolors "^1.0.1" postcss-value-parser "^4.2.0" -autoprefixer@^10.4.23: - version "10.4.23" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz" - integrity sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA== - dependencies: - browserslist "^4.28.1" - caniuse-lite "^1.0.30001760" - fraction.js "^5.3.4" - picocolors "^1.1.1" - postcss-value-parser "^4.2.0" - available-typed-arrays@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" @@ -3818,7 +3144,7 @@ base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64id@2.0.0, base64id@~2.0.0: +base64id@~2.0.0, base64id@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== @@ -3866,7 +3192,7 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -body-parser@1.20.3, body-parser@^1.19.0: +body-parser@^1.19.0, body-parser@1.20.3: version "1.20.3" resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== @@ -3919,7 +3245,7 @@ braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.21.5, browserslist@^4.23.0, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.28.1: +browserslist@^4.21.5, browserslist@^4.23.0, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.28.1, "browserslist@>= 4.21.0": version "4.28.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz" integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== @@ -4035,7 +3361,41 @@ chardet@^0.7.0: resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.5.1, chokidar@^3.6.0: +chevrotain-allstar@~0.3.0: + version "0.3.1" + resolved "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz" + integrity sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw== + dependencies: + lodash-es "^4.17.21" + +chevrotain@^11.0.0, chevrotain@~11.0.3: + version "11.0.3" + resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz" + integrity sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw== + dependencies: + "@chevrotain/cst-dts-gen" "11.0.3" + "@chevrotain/gast" "11.0.3" + "@chevrotain/regexp-to-ast" "11.0.3" + "@chevrotain/types" "11.0.3" + "@chevrotain/utils" "11.0.3" + lodash-es "4.17.21" + +chokidar@^3.5.1: + version "3.6.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -4104,6 +3464,15 @@ cli-width@^4.1.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== +clipboard@^2.0.11: + version "2.0.11" + resolved "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz" + integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -4189,6 +3558,16 @@ commander@^4.0.0: resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@7: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + comment-parser@1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz" @@ -4224,6 +3603,11 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +confbox@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz" + integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== + connect-history-api-fallback@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" @@ -4266,16 +3650,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== - cookie@~0.7.2: version "0.7.2" resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + copy-anything@^2.0.1: version "2.0.6" resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" @@ -4315,6 +3699,20 @@ cors@~2.8.5: object-assign "^4" vary "^1" +cose-base@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz" + integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== + dependencies: + layout-base "^1.0.0" + +cose-base@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz" + integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g== + dependencies: + layout-base "^2.0.0" + cosmiconfig@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" @@ -4381,6 +3779,304 @@ cwise-compiler@^1.0.0: dependencies: uniq "^1.0.0" +cytoscape-cose-bilkent@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz" + integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== + dependencies: + cose-base "^1.0.0" + +cytoscape-fcose@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz" + integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== + dependencies: + cose-base "^2.2.0" + +cytoscape@^3.2.0, cytoscape@^3.29.3: + version "3.33.1" + resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz" + integrity sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ== + +d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: + version "3.2.4" + resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +"d3-array@1 - 2": + version "2.12.1" + resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + dependencies: + internmap "^1.0.0" + +d3-axis@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +"d3-color@1 - 3", d3-color@3: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +d3-contour@4: + version "4.0.2" + resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz" + integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== + dependencies: + d3-array "^3.2.0" + +d3-delaunay@6: + version "6.0.4" + resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" + integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== + dependencies: + delaunator "5" + +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@3: + version "3.1.2" + resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz" + integrity sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg== + +d3-geo@3: + version "3.1.1" + resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz" + integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@3: + version "3.1.2" + resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + +d3-path@1: + version "1.0.9" + resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-sankey@^0.12.3: + version "0.12.3" + resolved "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz" + integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== + dependencies: + d3-array "1 - 2" + d3-shape "^1.2.0" + +d3-scale-chromatic@3: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@4: + version "4.0.2" + resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + +d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-shape@3: + version "3.2.0" + resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +"d3-time-format@2 - 4", d3-time-format@4: + version "4.1.0" + resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== + +"d3-transition@2 - 3", d3-transition@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-zoom@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^7.9.0: + version "7.9.0" + resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" + integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "4" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +dagre-d3-es@7.0.13: + version "7.0.13" + resolved "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz" + integrity sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q== + dependencies: + d3 "^7.9.0" + lodash-es "^4.17.21" + data-view-buffer@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz" @@ -4413,34 +4109,53 @@ date-format@^4.0.14: resolved "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz" integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +dayjs@^1.11.18: + version "1.11.19" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz" + integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.0.0" + ms "^2.1.1" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.6, debug@^4.4.0: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.6, debug@^4.4.0, debug@4: version "4.4.0" resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@~4.3.1: + version "4.3.7" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "^2.1.1" + ms "^2.1.3" + +debug@~4.3.2: + version "4.3.7" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" -debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: +debug@~4.3.4: version "4.3.7" resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: ms "^2.1.3" +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" @@ -4489,16 +4204,28 @@ define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +delaunator@5: + version "5.0.1" + resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz" + integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== + dependencies: + robust-predicates "^3.0.2" + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -4598,6 +4325,13 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +dompurify@^3.2.5: + version "3.3.1" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz" + integrity sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + domutils@^3.0.1, domutils@^3.1.0: version "3.2.2" resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz" @@ -4646,6 +4380,11 @@ emoji-regex@^9.2.2: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +"emoji-toolkit@>= 8.0.0 < 10.0.0": + version "9.0.1" + resolved "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-9.0.1.tgz" + integrity sha512-sMMNqKNLVHXJfIKoPbrRJwtYuysVNC9GlKetr72zE3SSVbHqoeDLWVrxP0uM0AE0qvdl3hbUk+tJhhwXZrDHaw== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" @@ -4850,7 +4589,36 @@ esbuild-wasm@0.25.1: resolved "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.1.tgz" integrity sha512-dZxPeDHcDIQ6ilml/NzYxnPbNkoVsHSFH3JGLSobttc5qYYgExMo8lh2XcB+w+AfiqykVDGK5PWanGB0gWaAWw== -esbuild@0.25.1, esbuild@^0.25.0: +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +esbuild@^0.25.0, esbuild@0.25.1: version "0.25.1" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz" integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== @@ -4881,35 +4649,6 @@ esbuild@0.25.1, esbuild@^0.25.0: "@esbuild/win32-ia32" "0.25.1" "@esbuild/win32-x64" "0.25.1" -esbuild@^0.21.3: - version "0.21.5" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" - escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" @@ -4954,7 +4693,7 @@ eslint-module-utils@^2.12.0: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.31.0: +eslint-plugin-import@*, eslint-plugin-import@^2.31.0: version "2.31.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -5011,14 +4750,6 @@ eslint-plugin-prefer-arrow@1.2.2: resolved "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz" integrity sha512-C8YMhL+r8RMeMdYAw/rQtE6xNdMulj+zGWud/qIGnlmomiPRaLDGLMeskZ3alN6uMBojmooRimtdrXebLN4svQ== -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" @@ -5035,6 +4766,14 @@ eslint-scope@^8.0.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" @@ -5045,7 +4784,7 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^8.57.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0 || ^9.0.0", eslint@^8.56.0, eslint@^8.57.0, "eslint@^8.57.0 || ^9.0.0", eslint@>=2.0.0: version "8.57.1" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== @@ -5222,7 +4961,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@3.3.3, fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: +fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3, fast-glob@3.3.3: version "3.3.3" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -5509,7 +5248,7 @@ get-tsconfig@^4.10.0: dependencies: resolve-pkg-maps "^1.0.0" -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -5523,6 +5262,13 @@ glob-parent@^6.0.1, glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -5540,7 +5286,19 @@ glob@^10.2.2, glob@^10.3.10, glob@^10.3.7: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.1.3, glob@^7.1.7: +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.7: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5596,6 +5354,13 @@ globby@^14.0.0: slash "^5.1.0" unicorn-magic "^0.3.0" +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz" + integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== + dependencies: + delegate "^3.1.2" + gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" @@ -5611,6 +5376,11 @@ graphemer@^1.4.0: resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +hachure-fill@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz" + integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg== + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" @@ -5701,6 +5471,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -5712,16 +5492,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.9" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz" @@ -5735,6 +5505,17 @@ http-proxy-agent@^7.0.0: agent-base "^7.1.0" debug "^4.3.4" +http-proxy-middleware@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + http-proxy-middleware@3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz" @@ -5747,17 +5528,6 @@ http-proxy-middleware@3.0.3: is-plain-object "^5.0.0" micromatch "^4.0.8" -http-proxy-middleware@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz" - integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" @@ -5767,7 +5537,7 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -https-proxy-agent@7.0.6, https-proxy-agent@^7.0.1: +https-proxy-agent@^7.0.1, https-proxy-agent@7.0.6: version "7.0.6" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz" integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== @@ -5780,14 +5550,28 @@ hyperdyperid@^1.2.0: resolved "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz" integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@^0.4.24, iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2, iconv-lite@^0.6.3: +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@0.6: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -5811,16 +5595,21 @@ ignore-walk@^7.0.0: dependencies: minimatch "^9.0.0" -ignore@7.0.3, ignore@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz" - integrity sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA== - ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== +ignore@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz" + integrity sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA== + +ignore@7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz" + integrity sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" @@ -5852,7 +5641,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5862,7 +5651,7 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@5.0.0, ini@^5.0.0: +ini@^5.0.0, ini@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz" integrity sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw== @@ -5876,6 +5665,16 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + iota-array@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz" @@ -5889,16 +5688,16 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.1.0: version "2.2.0" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: version "3.0.5" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz" @@ -6218,17 +6017,6 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - istanbul-lib-instrument@^5.1.0: version "5.2.1" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" @@ -6240,6 +6028,17 @@ istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" @@ -6275,16 +6074,16 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +"jasmine-core@^4.0.0 || ^5.0.0", jasmine-core@~5.6.0: + version "5.6.0" + resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.6.0.tgz" + integrity sha512-niVlkeYVRwKFpmfWg6suo6H9CrNnydfBLEqefM5UjibYS+UoTjZdmvPJSiuyrRLGnFj1eYRhFd/ch+5hSlsFVA== + jasmine-core@^4.1.0: version "4.6.1" resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz" integrity sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ== -jasmine-core@~5.6.0: - version "5.6.0" - resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.6.0.tgz" - integrity sha512-niVlkeYVRwKFpmfWg6suo6H9CrNnydfBLEqefM5UjibYS+UoTjZdmvPJSiuyrRLGnFj1eYRhFd/ch+5hSlsFVA== - jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" @@ -6294,7 +6093,7 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jiti@^1.20.0, jiti@^1.21.7: +jiti@^1.20.0, jiti@^1.21.7, jiti@>=1.21.0: version "1.21.7" resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz" integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== @@ -6419,7 +6218,7 @@ karma-jasmine-html-reporter@~2.1.0: resolved "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz" integrity sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ== -karma-jasmine@~5.1.0: +karma-jasmine@^5.0.0, karma-jasmine@~5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz" integrity sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ== @@ -6433,7 +6232,7 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -karma@~6.4.0: +karma@^6.0.0, karma@^6.3.0, karma@^6.4.0, karma@~6.4.0: version "6.4.4" resolved "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz" integrity sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w== @@ -6463,6 +6262,13 @@ karma@~6.4.0: ua-parser-js "^0.7.30" yargs "^16.1.1" +katex@^0.16.0, katex@^0.16.22: + version "0.16.28" + resolved "https://registry.npmjs.org/katex/-/katex-0.16.28.tgz" + integrity sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg== + dependencies: + commander "^8.3.0" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" @@ -6470,11 +6276,27 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +khroma@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz" + integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== + kind-of@^6.0.2: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +langium@3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz" + integrity sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w== + dependencies: + chevrotain "~11.0.3" + chevrotain-allstar "~0.3.0" + vscode-languageserver "~9.0.1" + vscode-languageserver-textdocument "~1.0.11" + vscode-uri "~3.0.8" + launch-editor@^2.6.1: version "2.10.0" resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz" @@ -6483,12 +6305,22 @@ launch-editor@^2.6.1: picocolors "^1.0.0" shell-quote "^1.8.1" +layout-base@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz" + integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== + +layout-base@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz" + integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg== + less-loader@12.2.0: version "12.2.0" resolved "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz" integrity sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg== -less@4.2.2: +less@*, "less@^3.5.0 || ^4.0.0", less@^4.2.0, less@4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/less/-/less-4.2.2.tgz" integrity sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg== @@ -6520,62 +6352,12 @@ license-webpack-plugin@4.0.2: dependencies: webpack-sources "^3.0.0" -lightningcss-android-arm64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz#6966b7024d39c94994008b548b71ab360eb3a307" - integrity sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A== - lightningcss-darwin-arm64@1.30.2: version "1.30.2" resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz" integrity sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA== -lightningcss-darwin-x64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz#5ce87e9cd7c4f2dcc1b713f5e8ee185c88d9b7cd" - integrity sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ== - -lightningcss-freebsd-x64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz#6ae1d5e773c97961df5cff57b851807ef33692a5" - integrity sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA== - -lightningcss-linux-arm-gnueabihf@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz#62c489610c0424151a6121fa99d77731536cdaeb" - integrity sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA== - -lightningcss-linux-arm64-gnu@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz#2a3661b56fe95a0cafae90be026fe0590d089298" - integrity sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A== - -lightningcss-linux-arm64-musl@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz#d7ddd6b26959245e026bc1ad9eb6aa983aa90e6b" - integrity sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA== - -lightningcss-linux-x64-gnu@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz#5a89814c8e63213a5965c3d166dff83c36152b1a" - integrity sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w== - -lightningcss-linux-x64-musl@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz#808c2e91ce0bf5d0af0e867c6152e5378c049728" - integrity sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA== - -lightningcss-win32-arm64-msvc@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz#ab4a8a8a2e6a82a4531e8bbb6bf0ff161ee6625a" - integrity sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ== - -lightningcss-win32-x64-msvc@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz#f01f382c8e0a27e1c018b0bee316d210eac43b6e" - integrity sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw== - -lightningcss@1.30.2: +lightningcss@^1.21.0, lightningcss@1.30.2: version "1.30.2" resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz" integrity sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ== @@ -6639,11 +6421,6 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz" - integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== - loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" @@ -6653,6 +6430,11 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +loader-utils@3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz" + integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -6667,6 +6449,16 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" +lodash-es@^4.17.21: + version "4.17.23" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz" + integrity sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg== + +lodash-es@4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" @@ -6724,13 +6516,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -magic-string@0.30.17: - version "0.30.17" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - magic-string@^0.30.21: version "0.30.21" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz" @@ -6738,6 +6523,13 @@ magic-string@^0.30.21: dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" +magic-string@0.30.17: + version "0.30.17" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" @@ -6770,6 +6562,16 @@ make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1, make-fetch-happen@^14.0.2, promise-retry "^2.0.1" ssri "^12.0.0" +marked@^15.0.0, marked@^15.0.12: + version "15.0.12" + resolved "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz" + integrity sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA== + +marked@^16.2.1: + version "16.4.2" + resolved "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz" + integrity sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA== + math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" @@ -6805,6 +6607,32 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +"mermaid@>= 10.6.0 < 12.0.0": + version "11.12.2" + resolved "https://registry.npmjs.org/mermaid/-/mermaid-11.12.2.tgz" + integrity sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w== + dependencies: + "@braintree/sanitize-url" "^7.1.1" + "@iconify/utils" "^3.0.1" + "@mermaid-js/parser" "^0.6.3" + "@types/d3" "^7.4.3" + cytoscape "^3.29.3" + cytoscape-cose-bilkent "^4.1.0" + cytoscape-fcose "^2.2.0" + d3 "^7.9.0" + d3-sankey "^0.12.3" + dagre-d3-es "7.0.13" + dayjs "^1.11.18" + dompurify "^3.2.5" + katex "^0.16.22" + khroma "^2.1.0" + lodash-es "^4.17.21" + marked "^16.2.1" + roughjs "^4.6.6" + stylis "^4.3.6" + ts-dedent "^2.2.0" + uuid "^11.1.0" + methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" @@ -6818,16 +6646,16 @@ micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - "mime-db@>= 1.43.0 < 2": version "1.54.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" @@ -6835,7 +6663,7 @@ mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, dependencies: mime-db "1.52.0" -mime@1.6.0, mime@^1.4.1: +mime@^1.4.1, mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -6880,7 +6708,21 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: +minimatch@^9.0.0: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.5: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -6938,16 +6780,16 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2: version "7.1.2" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -6981,21 +6823,31 @@ mkdirp@^3.0.1: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz" integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== +mlly@^1.7.4, mlly@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz" + integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g== + dependencies: + acorn "^8.15.0" + pathe "^2.0.3" + pkg-types "^1.3.1" + ufo "^1.6.1" + mrmime@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz" integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== +ms@^2.1.1, ms@^2.1.3, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - msgpackr-extract@^3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz" @@ -7087,11 +6939,6 @@ needle@^3.1.0: iconv-lite "^0.6.3" sax "^1.2.4" -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - negotiator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz" @@ -7102,11 +6949,29 @@ negotiator@~0.6.4: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz" integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +ngx-markdown@^19.0.0: + version "19.0.0" + resolved "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-19.0.0.tgz" + integrity sha512-/UDTYxK2sbG9LjeuPfqErCg9gbT1O64Rnqvs9qgvK70X//gEVCMStNUi1zYIqw/SLRk19Rk48DZMgPiFRbgb1Q== + dependencies: + tslib "^2.3.0" + optionalDependencies: + clipboard "^2.0.11" + emoji-toolkit ">= 8.0.0 < 10.0.0" + katex "^0.16.0" + mermaid ">= 10.6.0 < 12.0.0" + prismjs "^1.28.0" + node-addon-api@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz" @@ -7186,7 +7051,7 @@ npm-normalize-package-bin@^4.0.0: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz" integrity sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w== -npm-package-arg@12.0.2, npm-package-arg@^12.0.0: +npm-package-arg@^12.0.0, npm-package-arg@12.0.2: version "12.0.2" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz" integrity sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA== @@ -7203,7 +7068,7 @@ npm-packlist@^9.0.0: dependencies: ignore-walk "^7.0.0" -npm-pick-manifest@10.0.0, npm-pick-manifest@^10.0.0: +npm-pick-manifest@^10.0.0, npm-pick-manifest@10.0.0: version "10.0.0" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz" integrity sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ== @@ -7300,7 +7165,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1, on-finished@^2.4.1: +on-finished@^2.4.1, on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -7340,7 +7205,7 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" -open@10.1.0, open@^10.0.3: +open@^10.0.3, open@10.1.0: version "10.1.0" resolved "https://registry.npmjs.org/open/-/open-10.1.0.tgz" integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== @@ -7443,6 +7308,11 @@ package-json-from-dist@^1.0.0: resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== +package-manager-detector@^1.3.0: + version "1.6.0" + resolved "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz" + integrity sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA== + pacote@20.0.0: version "20.0.0" resolved "https://registry.npmjs.org/pacote/-/pacote-20.0.0.tgz" @@ -7524,6 +7394,11 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +path-data-parser@^0.1.0, path-data-parser@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz" + integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -7572,6 +7447,11 @@ path-type@^6.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz" integrity sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ== +pathe@^2.0.1, pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== + peek-readable@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz" @@ -7582,16 +7462,26 @@ picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@4.0.2, picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== +picomatch@^2.0.4: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: +picomatch@^2.2.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +"picomatch@^3 || ^4", picomatch@^4.0.2, picomatch@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -7621,6 +7511,28 @@ pkg-dir@^7.0.0: dependencies: find-up "^6.3.0" +pkg-types@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz" + integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== + dependencies: + confbox "^0.1.8" + mlly "^1.7.4" + pathe "^2.0.1" + +points-on-curve@^0.2.0, points-on-curve@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz" + integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== + +points-on-path@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz" + integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g== + dependencies: + path-data-parser "0.1.0" + points-on-curve "0.2.0" + possible-typed-array-names@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" @@ -7698,14 +7610,6 @@ postcss-nested@^6.2.0: dependencies: postcss-selector-parser "^6.1.1" -postcss-selector-parser@6.0.10: - version "6.0.10" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: version "6.1.2" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" @@ -7722,12 +7626,20 @@ postcss-selector-parser@^7.0.0: cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@6.0.10: + version "6.0.10" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.5.2: +"postcss@^7.0.0 || ^8.0.1", postcss@^8.4.0, postcss@8.5.2: version "8.5.2" resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz" integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== @@ -7736,7 +7648,7 @@ postcss@8.5.2: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.2.14, postcss@^8.4.33, postcss@^8.4.41, postcss@^8.4.43, postcss@^8.4.47, postcss@^8.4.49, postcss@^8.5.6: +postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.33, postcss@^8.4.41, postcss@^8.4.43, postcss@^8.4.47, postcss@^8.4.49, postcss@^8.5.6, postcss@>=8.0.9: version "8.5.6" resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -7764,6 +7676,11 @@ prettier@^3.5.3: resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== +prismjs@^1.28.0: + version "1.30.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz" + integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== + proc-log@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz" @@ -8028,7 +7945,7 @@ resolve-url-loader@5.0.0: postcss "^8.2.14" source-map "0.6.1" -resolve@1.22.10, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.22.4, resolve@^1.22.8: +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.22.4, resolve@^1.22.8, resolve@1.22.10: version "1.22.10" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -8087,33 +8004,10 @@ rimraf@^5.0.5: dependencies: glob "^10.3.7" -rollup@4.34.8: - version "4.34.8" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz" - integrity sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.34.8" - "@rollup/rollup-android-arm64" "4.34.8" - "@rollup/rollup-darwin-arm64" "4.34.8" - "@rollup/rollup-darwin-x64" "4.34.8" - "@rollup/rollup-freebsd-arm64" "4.34.8" - "@rollup/rollup-freebsd-x64" "4.34.8" - "@rollup/rollup-linux-arm-gnueabihf" "4.34.8" - "@rollup/rollup-linux-arm-musleabihf" "4.34.8" - "@rollup/rollup-linux-arm64-gnu" "4.34.8" - "@rollup/rollup-linux-arm64-musl" "4.34.8" - "@rollup/rollup-linux-loongarch64-gnu" "4.34.8" - "@rollup/rollup-linux-powerpc64le-gnu" "4.34.8" - "@rollup/rollup-linux-riscv64-gnu" "4.34.8" - "@rollup/rollup-linux-s390x-gnu" "4.34.8" - "@rollup/rollup-linux-x64-gnu" "4.34.8" - "@rollup/rollup-linux-x64-musl" "4.34.8" - "@rollup/rollup-win32-arm64-msvc" "4.34.8" - "@rollup/rollup-win32-ia32-msvc" "4.34.8" - "@rollup/rollup-win32-x64-msvc" "4.34.8" - fsevents "~2.3.2" +robust-predicates@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" + integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== rollup@^4.20.0: version "4.39.0" @@ -8173,6 +8067,44 @@ rollup@^4.30.1: "@rollup/rollup-win32-x64-msvc" "4.37.0" fsevents "~2.3.2" +rollup@4.34.8: + version "4.34.8" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz" + integrity sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.34.8" + "@rollup/rollup-android-arm64" "4.34.8" + "@rollup/rollup-darwin-arm64" "4.34.8" + "@rollup/rollup-darwin-x64" "4.34.8" + "@rollup/rollup-freebsd-arm64" "4.34.8" + "@rollup/rollup-freebsd-x64" "4.34.8" + "@rollup/rollup-linux-arm-gnueabihf" "4.34.8" + "@rollup/rollup-linux-arm-musleabihf" "4.34.8" + "@rollup/rollup-linux-arm64-gnu" "4.34.8" + "@rollup/rollup-linux-arm64-musl" "4.34.8" + "@rollup/rollup-linux-loongarch64-gnu" "4.34.8" + "@rollup/rollup-linux-powerpc64le-gnu" "4.34.8" + "@rollup/rollup-linux-riscv64-gnu" "4.34.8" + "@rollup/rollup-linux-s390x-gnu" "4.34.8" + "@rollup/rollup-linux-x64-gnu" "4.34.8" + "@rollup/rollup-linux-x64-musl" "4.34.8" + "@rollup/rollup-win32-arm64-msvc" "4.34.8" + "@rollup/rollup-win32-ia32-msvc" "4.34.8" + "@rollup/rollup-win32-x64-msvc" "4.34.8" + fsevents "~2.3.2" + +roughjs@^4.6.6: + version "4.6.6" + resolved "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz" + integrity sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ== + dependencies: + hachure-fill "^0.5.2" + path-data-parser "^0.1.0" + points-on-curve "^0.2.0" + points-on-path "^0.2.1" + run-applescript@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz" @@ -8185,20 +8117,25 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@7.8.1: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" +rw@1: + version "1.3.3" + resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -rxjs@~7.8.0: +"rxjs@^6.5.3 || ^7.4.0", rxjs@~7.8.0: version "7.8.2" resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== dependencies: tslib "^2.1.0" +rxjs@7.8.1: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + safe-array-concat@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz" @@ -8210,7 +8147,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8249,7 +8186,7 @@ sass-loader@16.0.5: dependencies: neo-async "^2.6.2" -sass@1.85.0: +sass@*, sass@^1.3.0, sass@1.85.0: version "1.85.0" resolved "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz" integrity sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww== @@ -8280,6 +8217,11 @@ select-hose@^2.0.0: resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== +select@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz" + integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== + selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" @@ -8288,21 +8230,26 @@ selfsigned@^2.4.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@7.7.1, semver@^7.0.0, semver@^7.1.1, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: - version "7.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== - semver@^5.6.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.0, semver@^6.3.1: +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1, semver@7.7.1: + version "7.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + send@0.19.0: version "0.19.0" resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" @@ -8606,7 +8553,7 @@ socks@^2.8.3: ip-address "^9.0.5" smart-buffer "^4.2.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.1: +source-map-js@^1.0.2, source-map-js@^1.2.1, "source-map-js@>=0.6.2 <2.0.0": version "1.2.1" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -8619,7 +8566,7 @@ source-map-loader@5.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.2" -source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20: +source-map-support@^0.5.5, source-map-support@~0.5.20, source-map-support@0.5.21: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -8627,7 +8574,7 @@ source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -8711,16 +8658,21 @@ stable-hash@^0.0.5: resolved "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz" integrity sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -"statuses@>= 1.4.0 < 2", statuses@~1.5.0: +statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + streamroller@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz" @@ -8730,7 +8682,30 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8789,28 +8764,28 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1, string_decoder@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - safe-buffer "~5.1.0" + ansi-regex "^5.0.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1, strip-ansi@^7.1.0: +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -8822,7 +8797,7 @@ strip-bom@^3.0.0: resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1, strip-json-comments@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -8835,6 +8810,11 @@ strtok3@^6.2.4: "@tokenizer/token" "^0.3.0" peek-readable "^4.1.0" +stylis@^4.3.6: + version "4.3.6" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + sucrase@^3.35.0: version "3.35.1" resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz" @@ -8880,12 +8860,7 @@ synckit@^0.9.1: "@pkgr/core" "^0.1.0" tslib "^2.6.2" -tailwindcss@4.1.18: - version "4.1.18" - resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz" - integrity sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw== - -tailwindcss@^3.4.19: +"tailwindcss@^2.0.0 || ^3.0.0 || ^4.0.0", tailwindcss@^3.4.19, "tailwindcss@>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1", "tailwindcss@>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1": version "3.4.19" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz" integrity sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ== @@ -8913,6 +8888,11 @@ tailwindcss@^3.4.19: resolve "^1.22.8" sucrase "^3.35.0" +tailwindcss@4.1.18: + version "4.1.18" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz" + integrity sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw== + tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" @@ -8953,7 +8933,7 @@ terser-webpack-plugin@^5.3.11: serialize-javascript "^6.0.2" terser "^5.31.1" -terser@5.39.0, terser@^5.31.1: +terser@^5.16.0, terser@^5.31.1, terser@^5.4.0, terser@5.39.0: version "5.39.0" resolved "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz" integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== @@ -8992,6 +8972,16 @@ thunky@^1.0.2: resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +tinyexec@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz" + integrity sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== + tinyglobby@^0.2.11, tinyglobby@^0.2.12: version "0.2.12" resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz" @@ -9052,6 +9042,11 @@ ts-api-utils@^2.0.1: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz" integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== +ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" @@ -9067,7 +9062,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.8.1, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2: +tslib@^2, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.6.2, tslib@2, tslib@2.8.1: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -9165,7 +9160,7 @@ typescript-eslint@^8.0.0: "@typescript-eslint/parser" "8.29.0" "@typescript-eslint/utils" "8.29.0" -typescript@~5.7.2: +typescript@*, typescript@>=4.2.0, typescript@>=4.8.4, "typescript@>=4.8.4 <5.9.0", typescript@>=4.9.5, "typescript@>=5.5 <5.9", typescript@~5.7.2: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz" integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== @@ -9175,6 +9170,11 @@ ua-parser-js@^0.7.30: resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz" integrity sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ== +ufo@^1.6.1: + version "1.6.3" + resolved "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz" + integrity sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q== + unbox-primitive@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz" @@ -9247,7 +9247,7 @@ universalify@^0.1.0: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -9298,6 +9298,11 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" @@ -9321,6 +9326,17 @@ vary@^1, vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +"vite@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", vite@^5.0.0: + version "5.4.17" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.17.tgz" + integrity sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + vite@6.2.3: version "6.2.3" resolved "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz" @@ -9332,23 +9348,47 @@ vite@6.2.3: optionalDependencies: fsevents "~2.3.3" -vite@^5.0.0: - version "5.4.17" - resolved "https://registry.npmjs.org/vite/-/vite-5.4.17.tgz" - integrity sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg== - dependencies: - esbuild "^0.21.3" - postcss "^8.4.43" - rollup "^4.20.0" - optionalDependencies: - fsevents "~2.3.3" - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== -watchpack@2.4.2, watchpack@^2.4.1: +vscode-jsonrpc@8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz" + integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== + +vscode-languageserver-protocol@3.17.5: + version "3.17.5" + resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz" + integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== + dependencies: + vscode-jsonrpc "8.2.0" + vscode-languageserver-types "3.17.5" + +vscode-languageserver-textdocument@~1.0.11: + version "1.0.12" + resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz" + integrity sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA== + +vscode-languageserver-types@3.17.5: + version "3.17.5" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz" + integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== + +vscode-languageserver@~9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz" + integrity sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g== + dependencies: + vscode-languageserver-protocol "3.17.5" + +vscode-uri@~3.0.8: + version "3.0.8" + resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz" + integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== + +watchpack@^2.4.1, watchpack@2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz" integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== @@ -9375,7 +9415,7 @@ weak-lru-cache@^1.2.2: resolved "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz" integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== -webpack-dev-middleware@7.4.2, webpack-dev-middleware@^7.4.2: +webpack-dev-middleware@^7.4.2, webpack-dev-middleware@7.4.2: version "7.4.2" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz" integrity sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA== @@ -9387,7 +9427,7 @@ webpack-dev-middleware@7.4.2, webpack-dev-middleware@^7.4.2: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@5.2.0: +webpack-dev-server@^5.0.2, webpack-dev-server@5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz" integrity sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA== @@ -9441,7 +9481,7 @@ webpack-subresource-integrity@5.1.0: dependencies: typed-assert "^1.0.8" -webpack@5.98.0: +webpack@^5.0.0, webpack@^5.1.0, webpack@^5.12.0, webpack@^5.27.0, webpack@^5.30.0, webpack@^5.54.0, webpack@^5.72.1, webpack@>=5, webpack@5.98.0: version "5.98.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz" integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== @@ -9470,7 +9510,7 @@ webpack@5.98.0: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -9568,7 +9608,7 @@ word-wrap@^1.2.5: resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -9586,6 +9626,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" @@ -9654,19 +9703,6 @@ yargs-parser@^21.1.1: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@17.7.2, yargs@^17.2.1: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yargs@^16.1.1: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -9680,6 +9716,19 @@ yargs@^16.1.1: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.2.1, yargs@17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" diff --git a/yarn.lock b/yarn.lock index 7adec2d6..6327f193 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@types/node@^25.2.0": + version "25.2.0" + resolved "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz" + integrity sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w== + dependencies: + undici-types "~7.16.0" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" @@ -66,3 +73,8 @@ strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==