From 4ebb2ccdf362e6d57af09601fa74e978afbfbb98 Mon Sep 17 00:00:00 2001 From: Jelle den Burger Date: Thu, 5 Feb 2026 16:49:47 +0100 Subject: [PATCH 1/2] feat: platform integration page * also untracked a bunch of generated files * also cleaned up a bunch of stuff and simplified a lot --- .pre-commit-config.yaml | 1 + README.md | 4 + index.ts | 118 +- modules/aks/README.md | 7 + modules/aws/README.md | 7 + modules/azure/README.md | 7 + modules/azuredevops/README.md | 7 + modules/cloudfoundry/README.md | 7 + modules/datadog/README.md | 7 + modules/gcp/README.md | 7 + modules/github/README.md | 7 + modules/ionos/README.md | 7 + modules/kubernetes/README.md | 7 + modules/oci/README.md | 7 + modules/openshift/README.md | 7 + modules/openstack/README.md | 7 + modules/ovh/README.md | 7 + modules/sapbtp/README.md | 7 + modules/stackit/README.md | 7 + modules/tencentcloud/README.md | 7 + package-lock.json | 20 + package.json | 3 + website/.gitignore | 6 + website/package.json | 1 + .../aks-github-connector.png | Bin 37083 -> 0 bytes .../building-block-logos/aks-postgresql.png | Bin 78684 -> 0 bytes .../building-block-logos/aws-s3_bucket.png | Bin 1992 -> 0 bytes .../azure-budget-alert.png | Bin 9883 -> 0 bytes .../building-block-logos/azure-key-vault.png | Bin 24562 -> 0 bytes .../building-block-logos/azure-postgresql.png | Bin 14984 -> 0 bytes .../github-repository.png | Bin 5704 -> 0 bytes website/public/assets/logos/aks.png | Bin 26263 -> 0 bytes website/public/assets/logos/aks.svg | 1 - website/public/assets/logos/aws.png | Bin 48399 -> 0 bytes website/public/assets/logos/aws.svg | 38 - website/public/assets/logos/azure.png | Bin 66275 -> 0 bytes website/public/assets/logos/azure.svg | 25 - website/public/assets/logos/azuredevops.svg | 1 - website/public/assets/logos/cloudfoundry.png | Bin 41867 -> 0 bytes website/public/assets/logos/datadog.png | Bin 89554 -> 0 bytes website/public/assets/logos/gcp.png | Bin 6212 -> 0 bytes website/public/assets/logos/github.png | Bin 8640 -> 0 bytes website/public/assets/logos/ionos.png | Bin 13385 -> 0 bytes website/public/assets/logos/openshift.png | Bin 63665 -> 0 bytes website/public/assets/logos/openstack.png | Bin 12370 -> 0 bytes website/public/assets/logos/ovh.png | Bin 20165 -> 0 bytes website/public/assets/logos/sapbtp.png | Bin 38771 -> 0 bytes website/public/assets/logos/stackit.png | Bin 3594 -> 0 bytes website/public/assets/logos/stackit.svg | 5 - website/public/assets/logos/tencentcloud.png | Bin 19662 -> 0 bytes website/public/assets/platform-logos.json | 19 - website/public/assets/templates.json | 7599 ----------------- website/src/app/app.routes.ts | 5 + website/src/app/core/template.ts | 6 +- .../features/platform-integration/index.ts | 1 + .../platform-integration.component.html | 96 + .../platform-integration.component.scss | 1 + .../platform-integration.component.ts | 78 + .../platform-view.component.html | 66 +- .../platform-view/platform-view.component.ts | 76 +- .../template-details.component.ts | 3 +- .../platform-cards.component.html | 4 +- .../template-gallery.component.ts | 34 +- .../shared/breadcrumb/bread-crumb.service.ts | 21 +- .../src/app/shared/card/card.component.html | 3 +- website/src/app/shared/card/card.component.ts | 52 +- .../shared/definition-card/definition-card.ts | 6 +- website/src/app/shared/platform/index.ts | 2 +- .../src/app/shared/platform/platform-data.ts | 19 +- .../app/shared/platform/platform.service.ts | 84 +- .../app/shared/template/template.service.ts | 4 +- .../src/app/shared/util/logo-color.util.ts | 35 + website/yarn.lock | 2901 +++---- yarn.lock | 12 + 74 files changed, 2109 insertions(+), 9360 deletions(-) create mode 100644 modules/aks/README.md create mode 100644 modules/aws/README.md create mode 100644 modules/azure/README.md create mode 100644 modules/azuredevops/README.md create mode 100644 modules/cloudfoundry/README.md create mode 100644 modules/datadog/README.md create mode 100644 modules/gcp/README.md create mode 100644 modules/github/README.md create mode 100644 modules/ionos/README.md create mode 100644 modules/kubernetes/README.md create mode 100644 modules/oci/README.md create mode 100644 modules/openshift/README.md create mode 100644 modules/openstack/README.md create mode 100644 modules/ovh/README.md create mode 100644 modules/sapbtp/README.md create mode 100644 modules/stackit/README.md create mode 100644 modules/tencentcloud/README.md delete mode 100644 website/public/assets/building-block-logos/aks-github-connector.png delete mode 100644 website/public/assets/building-block-logos/aks-postgresql.png delete mode 100644 website/public/assets/building-block-logos/aws-s3_bucket.png delete mode 100644 website/public/assets/building-block-logos/azure-budget-alert.png delete mode 100644 website/public/assets/building-block-logos/azure-key-vault.png delete mode 100644 website/public/assets/building-block-logos/azure-postgresql.png delete mode 100644 website/public/assets/building-block-logos/github-repository.png delete mode 100644 website/public/assets/logos/aks.png delete mode 100644 website/public/assets/logos/aks.svg delete mode 100644 website/public/assets/logos/aws.png delete mode 100644 website/public/assets/logos/aws.svg delete mode 100644 website/public/assets/logos/azure.png delete mode 100644 website/public/assets/logos/azure.svg delete mode 100644 website/public/assets/logos/azuredevops.svg delete mode 100644 website/public/assets/logos/cloudfoundry.png delete mode 100644 website/public/assets/logos/datadog.png delete mode 100644 website/public/assets/logos/gcp.png delete mode 100644 website/public/assets/logos/github.png delete mode 100644 website/public/assets/logos/ionos.png delete mode 100644 website/public/assets/logos/openshift.png delete mode 100644 website/public/assets/logos/openstack.png delete mode 100644 website/public/assets/logos/ovh.png delete mode 100644 website/public/assets/logos/sapbtp.png delete mode 100644 website/public/assets/logos/stackit.png delete mode 100644 website/public/assets/logos/stackit.svg delete mode 100644 website/public/assets/logos/tencentcloud.png delete mode 100644 website/public/assets/platform-logos.json delete mode 100644 website/public/assets/templates.json create mode 100644 website/src/app/features/platform-integration/index.ts create mode 100644 website/src/app/features/platform-integration/platform-integration.component.html create mode 100644 website/src/app/features/platform-integration/platform-integration.component.scss create mode 100644 website/src/app/features/platform-integration/platform-integration.component.ts create mode 100644 website/src/app/shared/util/logo-color.util.ts diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f9c648c5..3fd3f821 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 + exclude: ^modules/[^/]+/README\.md$ # Ignore README.md files in module directories (platform integrations) - id: terraform_fmt - id: terragrunt_fmt - repo: https://github.com/pre-commit/pre-commit-hooks 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 47f4f62f001fdda5b523b033af751da68a5e00d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37083 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 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 b360079fc7a1a0b3acc1ef1b83124f413737bf47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78684 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 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 e31ad968cd3de5087b9f4553604e3fa93a6ecf5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1992 zcmV;(2RHbMP)e9ae000DZQchC`QovD|+KhZ)X~DhL?B2Gm~;LfjGv$8kifX6hI&g%ESrFlYUzAzm<<*4))xGIC%* zGnQ~YUmoi?pIa~{dR=VBk`5Y7pb*J4C1xbzQ}|I%a+!3^zvSoZHF<$@jG%h>=9u5p zG4cZ6@p4ba=yP+6wKR{(a)_7H6anSFdFpyPN<~;CvkjwsHQJ0p?y*fsuaB%hD(Wy! z4f6!bI#z}_;t4#+3tH0a0csn&Si zu7jq;)GG)X6knpQA@7HtAdsda$cTZ|EYLaN{^}rK00;x4;h?*MK&qIE+xH_z4H0pypbmjStXh_n(YFKpG%KHj|b<{=E01OCOI23f-F9PnbC0Day*^ z2&eCefOJ6G=II`d#b4hrt#w#hWlJj(CUhUWRi#$=e(`A7^&%TG5WF5x!4(5IRaAMf zL1Q)K`U%XnD3F1(73s8itXcuHV!3}4t5!6vcn!fmBgJV9sd`z>1_iqrt66emAXV#n z9s|)8K_)EfYE|4=K43{&+?_lzknaBkf-pVG&cz^I7J6ZS(q;M4jr269#DeIH1R_b@ z#T)}kHjQ^u1B)j%CxE;gPTJ3O4&Okvzb<2XlsUyCzq7=b4Te?w7r%8*hC1#Pfhl^% z(=F1If=@39;{H((K_Y<)1*fYX3F2-~1O!Uc(S2^>o>GK7Ai_~@#41{cJmRqdP$%;u zR?+%!83*|Wb&6-GTST`&BC7^qr1Y9)=9G|AHq%4XB?6Vi?{YJl9^(3~<9<4(7?s$B zo#P-AEGq3uzciGC-dki)xQLZ-0U5l0Y$R}r)rfcbASMXlCx>n&WF(YXB*FuNeg$kJ zz(BIJlpvH@gcAa;S8uZwY<-Ic*(Y8u6dGn96Gp`KEwRWO3T${uToYarZ`-0#}tp&TCFeQyxh(ZQ^sI@YWx^T zs@nY)KzG;_hwGg@SMl1^*7}y@_&lBj1I*@n<~;nEs7;+$QTkOg1-FB2u6J+C=0x)n zyyK)-H<}37djX}Adc_@((4ng=uJ@;UO!q!F6_he}U@9%H_miB@>1NM!S%1+tXi?q& zCP9@h)$HA%t56UDYk^692hyz@jO$rMAwT8JKM*b(*K-&otZ#qbzl#U+gmOI*p_2A;cDE6e>+{=ezaX(s^LIh zndlNANnY_Q{$N@X48$`)B*q3QS(ejPZiXgyN?^_a8MpT2!@f_dRGy*Nt33(47p+n^ zq3iX`c9HXsq&w(RIuASVZ))_AL1Z}B6EzRWdcF5%m9$)x%xJ1!@4pVlEfjFtuEe^oHk8cJ_wG!qj@Yp#c)3w$wbd`^Q2oi`Pf*^B}-b!RdkYM8XkYXf|nFwNV5R;}00toXQZ@m!8X&~AL zF?*6&Sth*N!Qw7Loe+RLVa`$Re~r5bzGxr~5oE7Gh4msZp>|V55Vvo&*GVEshtzsD zi1Rk~n|?Yn$4VarvE*bI$Ictugw?`%ju?pCrL@+mh6(GQVp#jZlj?_l;TN?s8baBUDwK4C0!y86t=vh6Lg^(^qOuA8=@FPTUS<$||Rw-^4Ak z9A>q+l*T}0fNbicy(7S>Aestty0ydLo_r&9gm#!G=A^v0^+BGQAfzr`{VkC000^m? zmLAAd0Fw12C6=gMpW@ZZ!CuV=$rT7mUFVnA$CiL3`)7U(M36yDIS5VDV8=lW31m)o zS_gF|+o^cZSP=y8evfK@$6kjV=^$M(h@$DS>c|Nc$~MbZgOnaFRzyFH!wiEzCEawBX3jx(h_o;qO^rAJ{Kb)IBNNl&nM9`wRHQ4F#5c*#FVypTClMpDl2X z5nM9EWIM2$!@84A)v?EKiY9ENGtcyLGOHaV;EBVQR(p)zEX1XH>K&P zfijt>{ljMD!W4Wq#)3IhoHiW&p3l;;se}<#K25ab19G~o*2j-F$K9MGJJmnq^gDh> a@%RrtY%r<1Ov;V`0000ya 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 e7489ca37439632bf7d633820cd54088eea95f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9883 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 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 be52c23c38c7bea349939c8693ee8dd6ec476924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14984 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

$3Gz2iv%+*5oSNu=wEpTW0dah;Wd?Q24&{Ap>6 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 B^I!k~ 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 94777fd76399ce6a838e90f8b47884eaeabdf164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5704 zcmXX~c|26>|9|GpjNMqH>_b9DG%8Cn*+y>JOSVj1O+pA6Ma(1-WlI=}vC|@@T)n7PDUX3{fmh#O{r^#b=4ges!ms;}c= z8uC##u$Z1oN`kfibrtz?4HEoU8g!OnrQsq* zv+*BY5A+Ix-+XZ0)pZwuQFd8xi6SkflN&N;fYB>hSnu|&#K9YyT zoxy`v2?Wx_xI4Na*aY2_hay}-XMiLkOJcMX&zQ+?$eckZIgRtE*$v;bBN0~e{L!@a zh(ds%abLqqwf^m=oydMgcGJ_A8F~}eh0dJTH z(P{@T9L4txZ2fO{B2g<5zS=8HlWmPTqBxcRxD$4Yu10kvpaYT6 z(+O{;URGI?BT>?^Z!N`z9m5vuO2n%Pbr!m62h6rM=HPBDP>M&p=j)x#=PEy}IvF@KQoM@*f<5rhSkWh2Rv|qLg!}izs zw+<-!5)<5~1Ko~Qq7!g58MWmd<2MYL2k%{YreBZ=lP7?k;mG(a`rT3fL~r8Z-E|M? zep%x)tw)67FOV}f26QsEONy5&U!V?;&0<56Yf4E8ma3b5*5`>t8kGI=b`m;vo*Id= zQ2sduGa+VkpYecJy!J29K>f9*ZJwYiDzR;SR}}m}oSWMy)~1XOh~)K$$lsTg+Kv%2 z5}=3HQF+Z)Wwm~)I5KRH;M|TOM*m=tFE_xA%U-%YoRXlgBHe(G$ARLxs4l=hbOxs}W7O=%-C$=M68wSomOTdD*tuo2?mcv=5nnUE^uLU|Y(< zPefmDLN^T<+(d%v*M51qL~POm1Wv5JUTB%^9Ftli5n|3FM*3=Sv3d>JeaMlgvPY*U z2=wLqkpv;Z;4PtUzAO0oCB4Ye)55~+A>pY(n1D7Zp)(s4*_e>E>PdEviNzy(9 zv-0DI4unuvp0~L8ss{9p^wZx$%wPebH#i;_1rCh6h`3WFwqxp_it`d{teLlf^Zc2! z!YSUziv||1A&J^diavlQb`?FFp^I;VTD}=$yd=S%HC=annDdD8F~t2&jF&hfsS1|z zVMd3*oziDM2rLVF&rG&!|Dqbjy;C&xqr-xT!UcV$R8DXDhQWOB$g&xleH$loHA8W0cy`y-;`TyY4^YIy?3!t0CM_&Z)0o?tZAjyI7)dC*G94 zB4BCx@jOikuyO1voHbj8O@b}aenFQkuP`h`qWAN5rc_F)_eNQWdU}gAtfZ)?yuT{t zw$t)qx1nYIhwh8F$LaSKh8FL_GO6ELGg3VHl=6;!I=s56&+~HRB2R(Au{-E0)n&gY z@78plT=@m-bbjB`o9I5u-@%RB$}?s+_5O+^b8^#-g^0te6U8T4J43wL1j<6^q}8`k zemL2ZEuW%w#xV-}qQOh#uq4fEe!6|vxnbh@3+(m{hym4dOEkW1%E2+}^zGY;TsaUJ zH`TKj9xoXFge0HvMJJHt;?vUpZ%QTly&X7%Of5GU95_emUeDr9enQQlVP9iT&e2MA z%n?D7J_L83NL8D<&3z~=Xzff(-T;X->oum~zB@dw`7d;U)t~|>3mEp@%O2XL&(xOO z10$evYUae1ty1W>`|2Lv-?g)K?&2B)Ze+gnzcYX?GOjB{&ZLONE?5*E>wOlp;mrCr#4s7v-t4&Yb?9mKzEJmt#o{*m5=m+em{Bv<+ihq`c8axE?v{#Awo`N3=c{$L6lSB5Qw~8a%eG~8 zVVjLy)NthE#$P~oO`x1p;NW|jmedKuV>>&KtWcjq+ zb>nFUC9W?zzfeo31BO-MAN>)EZ%}ORqVt2~OK#35HN8>sGQKuP(oz#%d>DIFBRHLU zls?A4#13P}|E_T;i+sSa*xM*Vh{3o0zG!ONKi2&){?mb3Y}n!s`b}NT)_;z{!<71? z?kGyVIPYT>pXx6cHupub@`Y0880)$f@$-KAsk7XVw+H!_(08@RYiYsI3BtLS#D8)V za`0igym3{9ZSTI=5X|vp)@*sS?Qw&*#l_1g%EjE@aq@U+{@aMloVB5yvnhU`sO)>p z##xjgI`hLI&qArKO6&KTe$K?x{@kG+PyrqQwvp@fx!JpEyYh8$yeq^5x=k01|2TPF_KA0Y>Zn?;am3Q1`+C zXOZN{vR|Ae+y+#Cx@@_)bOZW_Sy0^MhN&k^#{zY;4QOZeJSRyF0y);iH>uYbI0_<<>J@t%I(`Por{|^1!PlPJ>tt5531r>8Q@OBDDZ9Tn%W>gr&6nF~(XJ{GYru)Kec&MG;6&-`~x z=Tsf%bn}PR&K6B)@25|k@7D+yPIK3K`*EGYT0Bwm>zV~4&GRIIYcxQvPTC&mq`y`q zeP`P{7b=cdtWX<2di?XUKwVZ8nbr}-B}j~ZaaED$Pi6h}NHu@hnigM-T>b|t7Ka7f z@V991C%?g?A*CjBivz3RtNnj}!M>Nd`_TA0{*f$EK=csiMBHeKw>VA<2ZUH)bde~pX{H|Jr-IT?Gqg=ME&weVmAPzd?hwx>!`Hq z^3h1t{RWFhTA}1zyWf^z00)qu=@RkdZNDd>OU6T5@uz!Gpj1WlyRnx-@lrGoSF$cA!YiIZ0#8&q=gg%rm&~V@{VB) z*qM$gv=eC2b&#~rhLOCQ)0N4}I*K^8gPhV0n63XHvh4m$*6!paI_D%M9Wua1rPh?A zsZdkXN;h(Q$QxGs5~J0lq4u3YiqfJvaJ1->aB4|v9xnw^&H9R%n-O8U9&m^it&ND( z*Kbl7dO!B}Y%`%wl|F61B>VM_&@XcL{wJy^_uYk?V@-G+lbQ~p+gP0L5M-^slfdo6 zB!~qT&M&IlZgLj1#NGWl>+F;IJ$?1||96^$c#oQY-kTFfKx}q%e!M(M&=G+AX*xnh z2T#Z)2+P*06*2Tt>Zpa8m~qvPONdz)ETA>{**-2LI^x5c87RhyrNMDCrL&a_{Y@sDAFy@FBTxT zV}^zNl1UhGWCWKzbL2qX<}p2@Z$$(ojP}SM-qA7tGm$ZDMlcs`NI_zZM0T2;1ytpK z$qew$v3=oXZrq~RS}o(8c=P6H{aVtSXST{SwJb-JbB75AgkTR~SLMR~YTB0;-5E?x zc~hR`)+{i8t{hA3VjV^~-?}K$$It%UdUvh7fia2tI*|!G(l7iv*yUFW^2n4Jx5H&$ zjg52@U7VJV5WXFP&yMn&N4MLk1|BA^yI4LK_aRak$tIN9<)c*+KJKqtCuI3ATPm6 z!!%G}im)SP()Nfs6vCqDVqR7+DfW+aKh@!g2I+M5VknRd3+^yC{hFF-Uy@7HA5ObEkD$L`BSJyw||-U{}#5ERnLFO#u78e#ioj9YD48>?%^k60eQ&?bsUZU+|20 z2zNJIlq;ayPG|khgDgTR^~zzIyl`^mmbE;zpU}szT*auP1+Uz|jjN1v)<%{{ePP1R ugwtRl_FlFSTZtXchNvuqD)*`0HS}{#QNcAd{u#mogG08CHZ@k{EB^;%h)YQT diff --git a/website/public/assets/logos/aks.png b/website/public/assets/logos/aks.png deleted file mode 100644 index 9352d24c41b5ab1b4a042b4b2360acf9a48584c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26263 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 AcmMzZ 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 158abc89650a8a79eaa3652465d6427566b9a20e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48399 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 LCfbcRon!t#yAMj1 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 fd1286274175bf83656bff6a6ea9a9125366a8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66275 zcmY&=2Ut_t^Y%qtzy-k$h=51{S&)uMZ@WOK3Q8}LE>%H5YGMIY5G0{j3q_=ZbZMes z=+cp@Qlu-L0Lgc52>$+GcArOgbMCok&dhmd=AAita#dIT=-+4mh9KxDQsZBJ2!j85 z=m#AQ_+!l390&e5?4Ycp3_(Sa^t(6z0{?y9Mnhi*g8XU(i@-WAcjQS?0*aebEn_l+C+Q&{^ zum9_><82o%IJu5GkIw1)C~dT7kUCWHV4>5;j{|oR919S)~&lUI5?cTYKMR!!$Wd239 z|0RYf`VSTK%TuU;yV9HR05Ok6NX9)rM0s-W6LcQBZLqks=&{%~jFVe$LKpK48|~$R z%^`oftl+6h4j$8w*Zj~ay*tFUv={>6otEA?%7~xBmySRf1b%W&wR=ABGCmMJofgDr zw(9VmGC+wW3eiD`9|oPsf*?UWm((7!oxxY=NTki_((K(~eqRUdl+;eS znRvI~YYoZ_U1?7bLn7(CQp<5;*m53Uf)FXNok!YzeVGncF#OrOb^Q>;qQX{CY3AKg ztB9v||7NuC*-_{OY#;E45T_1N*B2%%5Usu2EED{~8qvsh+0~UkD`xur5nu?F62!uL za`Z=!fDuA^%`oUjy9Vzk%3fiJ_RujXL^+QqCEF`|$^zNswmuL`Xh^OmXuYCrwi22x z27=D!2QIE?x4q}V^H*=Osmc8LmLzZjQhMlRzm%vy9%qWaDTQvHDRx^|eMG�t|76 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 z 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�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 - - - - - - - - - - - - - - - - - - - - - - - - \ 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 620a40990b61a75e10ecd961edc3e6f36824247e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41867 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

n?BXK3?{&!%A(laB3&=vWXyR39H2q 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 YizNTi9Lguy6W~Fjjm$4roOh1;H$9Z~S^xk5 diff --git a/website/public/assets/logos/datadog.png b/website/public/assets/logos/datadog.png deleted file mode 100644 index 5d5589cf8a0c70d8654f5aa68daa23618fbe261d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89554 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

    jbzEk^5 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 PNuaBFPoqrjap?a6Ft)jB diff --git a/website/public/assets/logos/github.png b/website/public/assets/logos/github.png deleted file mode 100644 index 9490ffc6d2e158b266f719d58365905c1c5060cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8640 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 diff --git a/website/public/assets/logos/ionos.png b/website/public/assets/logos/ionos.png deleted file mode 100644 index 8dfae8890378fdeebd87a1d2e81a9da1b73cbf60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13385 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

    XLPX|h^qtiXX0W% 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 [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== From 1a51c4422593a6afb67c425890c79e919de821d3 Mon Sep 17 00:00:00 2001 From: Jelle den Burger Date: Thu, 5 Feb 2026 17:17:38 +0100 Subject: [PATCH 2/2] chore: exclude platform tf files from pre-commit --- .pre-commit-config.yaml | 2 +- .terraform-docs.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3fd3f821..d98a8565 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: terraform_docs args: - --args=--config=.terraform-docs.yml - exclude: ^modules/[^/]+/README\.md$ # Ignore README.md files in module directories (platform integrations) + 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: ""

    4!r{yGsesW4 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 diff --git a/website/public/assets/logos/openshift.png b/website/public/assets/logos/openshift.png deleted file mode 100644 index f2c536cb703fb8d3810dc211813e210cfab78e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63665 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 F{{tvnB@+Mu diff --git a/website/public/assets/logos/openstack.png b/website/public/assets/logos/openstack.png deleted file mode 100644 index 84e96877f95bdb0b08ac174cc035b6180109c05c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12370 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 F{{m2vA`Ack diff --git a/website/public/assets/logos/ovh.png b/website/public/assets/logos/ovh.png deleted file mode 100644 index bebb860630ff84faf6a61f6ab41a209d4ca233aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20165 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 diff --git a/website/public/assets/logos/stackit.png b/website/public/assets/logos/stackit.png deleted file mode 100644 index d4ce3d0b7419dacd928ba42b4454b723535d6bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3594 zcmY*c2|SeR_n#RY-Q;p{a@Yw{r>;w{XEY(&w0-Io^zh_exCPvlh0Y3?uARjK_Jjx zf|-#mK%0P`1``6tMb7TG00C2MO$|USuJjBr`H#O7foNp~QUZ7wND#aqB(S3bJRq8<3DvEAkbA32>MgU1)x9^_yi1q^-n5L3jQx*Ddd-SQ>nl&K5fUY zyu4}{Ai`m0&J++R|JhClk7t!50W@cly%W{R$`a=r8m!{&7wY4$LJtnxu>xt+aR3|a zPxVI7gUKNj937ARp@9SV9Wfe-_@P1#!Xurm&LIp#!~GGbRa8|}kveb$0-+u5N5t70 znfx>dW_aWUDm4s;Mn^_Qszj=*goX#8F<2}Xt*VArQ&R>slqnZOsNQtt5Q^NtApeVF zQ0QU)!bwKjJaA3k2HTNHEg3 zr-SF+`!b|W55~OW_%dof8tFR;C&&Ac4fF`)ae3)SVIb5Y6G^NK^jbKuAP`{97;lTI z-lfvcMOt)K9d!OUAq7vzj7H~)xaJ;eW*Gd^P|hZNN@?$_yA$;&e~_58P`m_9#@ozh8-$l%sqlEotQ>>+ zr95X?>pER5jto`9F}IB``FWCCXD3ecT-0vB=ujaorik5YT!&(+PQk0=HFXas+a6mu zE6i5%e50&6d%9~)VGJdl4Cn;)L6lIZp?tVb<{pptL zu)M9c#+a(B{G6O%W-l16fktLt(FI9>{+Ux ztfvA|{E#pHcwkI_RsCpMwk%OE*Sinq*H5*C-!3BtFz_Vx&RwF_k&{y~I!Dc{6+R&t z8FH8tP0RHn;4ile@x${L&l(2wX>x@#dEVNJg3#9sg&SvMZE3PvYMk1@}^_uUN4<9W!|s@OS*R?|E#M{a#Mxh^Oc&30vBm8)fC zjTIyPZ6&42>`0t4YN@^UIZ*bKFekgSgTGJW54Y2ll1 z?MPSnn_i%fvDgP2&HmP0uy1z?C<{m<2G8+4$m-6{hQH_MHhmn(SzF_)x%(|C404W!6ROH|yW z#pGRoV)azMDRHo}EWFY;%t|*Zdo1fxpi=nw+*kFZGuZR%LG5yzk9t0Y6%D$-F>8Fq ze>kPvo}2aJj#!%e>V#gw*J3OSJfpWYca zUUk>@)Wl&o#xku^PImi zm#3*mD|xE}-a!_r#RiR#yvBL$zDbL#U* zQQ0m{WCYimS9-2C4Tap~`9J(#HoF+sHNpXsF;?l$AAflNOotGKPp$91vKH}>{`;m7 zrDB@n-oHQ*{8m}~H5_$-Gtk-vSN!V)YSRb zKKwX*>8S2Rk9n$k9pnmMvXB6&-_x(M0e^x}e?L!P7+bflAGww);WtzrEaWn6-@!kp z+ItJN896dC76@t;(OUCw!!c_T$LD{?F^k>$a=tAmTv_O+OKA-L*>a3YWchSUjLY5> ze(AAZFR)Z<^0mlLBjCkYGM*LxCT(@xg5W!!of`Q)+dO!s{-0a!3F^XCl()9k57P5m zpLOS~OZi9MUz+NcA>}E?zFMPRlHNN$=e4il?lAwuTy%HxQuOSuB-$J;g4!gEaCeBC z7VpXzw;Uq(jf9L1oqN4)IHJ3J5mdDt7S5i(>mYr>Exis}J!xI!ak4K@`&~M0BXroV_nH(L7aVTC?R43>1CHF~#D5*);^3z#{x|#<=vkPv-jL7rS zT<>M*4i3a)b2RAI#-qRid~;A5D8ukH5qG)fb4h635uMCC1&1s9!gC%u3l`fwKL9PD zD5X86u-|OVDq88j>o2Qe6=J`5H6&EYMYfJmk6i{|+P*0znefi&K9-Hvl4ezPyo`>h z`F4M<@br49TPN_PY0OU_>S=aa*Lu_TDorT*BHUWkXzn?RY|cit#byNNxg5jzO}`w@ z^}8BCH_(#<-bel6Ihm(ZZ~4MfYA%qtMVsiSbwed8%fy@q)XDZY35tTpl?pT&VmPz@ zPI1d^cKC1GOAGGuZ?f5$e1b;lxFn95$1V4A$i^e$WIx*65{OU~9L(l}g(s>9N!aD3 zjGk0X5uv@7Un(S@*>R`dGxPBQXQMOyGxhvW9tOEtnp*6Lc(M`^cZ(8o!~>m_Dv`}k zav=1SkI@;W_@jeM35*?R=|Cs1y?jgfT?L-N{)(}zNST~B%}Gil*W5o8;6e;Vps{I*2PA*=@j{K6WK@{4O&%nlb8Q!?2v8n0#9?ZgOl!OQ)i5M zsGOh&r6CEzVVrK(SXJ5nXUjK^A-(oa)W0;A49Icsa5gn|S>`Q?RYw&Pz^P<*kdvyY zhL@8r2DCoD*J>om90qRiQ1y*4ES)C0-x6Bh(vp9*I3prjl8l;D`ss%xu!f}jLYtukMML2V<4Zmy!G zjESYEz8-U0BdOJVEw6YG1n;nfzGJ0_oB=-_QsODB^+|XbAw=R@dp1!z{fvrZmoB~@ z-#Opv9=l#?yIzBVzQpA~e0nsS5(VzZ|Fx$;UvHo|{US&i*!Y=!7bR6&WT525D^YMs zj}sYPAs(_GV!h6~5So7d`u1J-3^PU4un!+Rf9>2hP_tga$kDcsq81ejb7oVEEfc^s zs_uHH0TuataNZJLYU<;2+8ZLdha;xiSVYi2VMAMJmwE1$m!@~pL6`sOV2XT54YB_; z#tsj8z3piIZS9!@r~`ZBV@Wbb*k;z@Tnf%UQO|E{TeY6Ol_w^KfEdNXM8QZsXcFk> dB - - - - diff --git a/website/public/assets/logos/tencentcloud.png b/website/public/assets/logos/tencentcloud.png deleted file mode 100644 index 50d5d914e4aa347fedbfd5ec083f1975ffa21bb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19662 zcmce8^*^0|*f{6Nqd7Pxry0Z4(M-oQ6Vu%}IdK@9j_DmS9Wy=6nVcRr-Da4aZr|JI z`9A-`!^;nD*LA}!diL>m}5*Gl!+pGRmussC&4 zxlJkHprrkZ26H+roIXYmo6^pN_7$egA-KoHUE4c}^nMy@)Z^#Akl=ex=X-$mNy{RO z9EL5hC^R|nHe;kR`rAtk;%{h{ID^B_{xEZ3j{SR0L~nMmCO&k%kXv9jVvK(n)l)aj z>#|0$w*6v$rA>pzmc@`ok}W>dTV_r1%af;_9#6j-tYlj7f5>4YB#Y^Ns^5~4sut%L z4KH^T-M}+U*BdoPHmJlk91NJj26vtey($q2W2UIVz-5H~)KtI}TC4wCXrMG1+|@0$ zaHRTM`@0?%Q$MKu2Sek{O2}cWaRsl)Dr*F(^jOULn^@2{lRQIT#jgv5{<#$Y>!VBoW za<6bmNOqp)eJ4%MJUB=w{E6cT%FGno3^pC>wwmvcM2?AUj@s=nG*im`pME_Xf+F5q z_c|=4={qZj#lvVlM5PPv+i*vVVNsFyiq};%1)`rXMMj^+wnW~4ePj@?_3l`t8fwQ; z4PEz|c%zO^k4}F`FZstu)qzn?4pT)ge;t20jL`?}E6WSESasA_f)G)3TCW@G;?M*S zNt7SGA5ke*IbS(PVb+jKGpn|oZk}A>M%+ndS%KK0Ea?q#iC8s%wIN!;HCkzxAJ{Kd zz)R`by9$>wR@47L9Y&8T*$dgK*_IB+s)CUel%tHKZCGtM!;B+beY0#v42+zbjHJE= z?V-IVXlLKHA|~rrt>A`@j^-4jT%^M*L8cRe`v1XTGqvG45WW=*5oJ#~J!9b|+a!rq z+(He-*3?^)Xdy_G-U$B`#*W7zWR(d)azj=6-ayo_@8bCN=r5y6rK6N2%cO?9nGea# zrShadS(`laqiUjWO7JuVdG#{pgIE}~p8X6=UNJxxAhMxKzqxvv!5LlfKy{Dz56E9` zCd9Ocq+=hW;vvj#Z809g?qXK{3U+hdx6*aYoVr}uu|wj$NJ50VqpYcp~d{bS*;|1u8og1iq^uBIAegX#`x{@ zm5UoYAqhD!k4e_FZBI;NXq*+zw9-tGnhh`El;!< zjsy?D!XGSYrswRUWdYSPFO8n-bFE?^k3;t%avj~Cv7H}&dzyGZ1-K=ZDtKe1@A2%= z$($OKaYPsICLDuuN0b9NGN}n#VrCiJGpmdEj-_I?5O+*DxF_HH_yH^JxSc$P3jYp?=l8z!+}leVZ5zvlgyb%4-j$C_i{5aa3(4{4Gzcy-mA0{FrO=0GH0MbWK=xcoC1${gMRi z+~eBw*dGouTEbb*5ts(Qb%0NH&!ltgv%a~C=;wfdI7K`)UUfYHfX$6d4kw*FGBK_1bQO2_l~=tZPI z$7mg=2BVWmvXQA(#twBUsj(=S<>+;IyWmIO_$#}asPDq6V9I0kf>SjKz!IbCRy(*y z_oOu<9#6=Pt~0|CHD^g(iA_Hg{TT0`Xeh1@>-&>BoEiVSb+`41Ki7mksGP0)4Sdu@ zIxymKt?5^$Zg0zoXdITYAyMZ@2K`!qMrkLIU47s5A&ebECimHldEIO z-oBE5klCem={;5xCc7q#QN#k4&bQDXwsU2SYc3OmF%oC-3O!brf-y;JfKz>ywL%a2 zz@lJ(U^2aClvjQiaTN0UA`E@OvEn~Q!)!fA@nIUo_Q8z=Y_0v|Jt>M;f>XTmi^BZXEgoFt z>Chx8D>@jeFd97}9-EGsR^m^9s0&VR79i`|Edfm_kUz!6y;NdGX= z;I7waMgIwXA*Eyh^$)`2L;=zOjajv+aaaA`h*>dr8!6t!+Krk7&rq{Zo!I`GtpDTw zw9e)~K594oG-}B|oYa^^iX0=hnf*xpl55UftF0vZLqcnK6r_+~z7|Jx>rZl(Ys5iF zHbCyP{(8cZUJ|3*gZaIc7&$0^v~~2sO3ts!u_s>&MWAq~UC3V^+w`<^;!&-g*WAbl z&iL_9V|as07>tIWtw@qC#PhvaPBeOF7AWQj$6qgjDQ=BRbKebmv+Z4qSbbLiPZ+HD z$7Z0H?C%M_g4XF`Ik+}t7C)94Vs^a8c(;;*rg+q8%=JC8tPmVdW##anJ#b%l3BuMX zD%S~Ch8cj1_vVAgSp;ZSy5zFBeid$xGinO44mVM4&MtrfzF1gLkB7#Vw#t?VJH38{a{u(RizGT$351K6O@Pn>(H3Gt|X$;DSy=<5c(azR5J z74qc-4l3>npha?}IuUh_b?4;&^l%!&H>;TSK);6biA?r7p9%sn4_Zgo$sQaoyWu%`Y z1O_N!*Su4v|Jm_`Zh^!%%ex4V*scqGhZTA_CEuv&OBxd41>fFFusbro|3z)0Xn8r>JhK^rM@B)|}&y#3z{$XGAySH?*CyPib>5xTx9e~G<>)s-0sV4EV zJq7OQqWmnZSksiO<#&A)&nMPw1hkHXEK)%`p5(?p+sE< zr!p{M@j~%`Qn>uvdiZG}&LgGP{x^v>a-=~>L#wApWGNhD`cuN`)CL)3CLD;h4XY4$UFLds%yK~ZlhRGr#o&f(6waYiKnI1c|@ z$KwlzkTwhr-lrAYa7`Xz9WyGeTo3iE8zehDZ&9v(H~8W6q(N&Yh7>4A8%DqeMnV)W z&K_KgIsTx0Y(jqhC#Z8>_H5NL&^YFK$M~-^LfRR6JAu<>rI=R2!i-^i9!+R+_S92S zOr|z52UCWn^T2=v3~4pC&yV>L4BU=Q^a=cQ_LTGZNGF(` zY{P@obm`oWFAhnc!{YB`kp)zCV-Am%B2|8Vf%}59t&Be*WvT3l9Qc%2x0u8SY=Z8s zxQ0IPy@R&vX`$%@jKV1yf;-k5g{W+2DoxHC{1FWC%}{<_b;Eft$*MdbuzA{URO6?;hUg&sb3 zF4ozng`8iaiD`xWn#n;imwLN{WDC-Y!No_+A^}yqv2|wPkm!vaqzAaf|I-wre(Q@i zMzUUakTFvD{WJkTPw_%<$w0ai?2jFIgYOOa7JG1yksHmS+4gDji_wi5PK~|@P7P9y z4IgfGs?!95=$D8`e|wG4fT(i0NwZ83m(<^I_~gDaKO+xVtf!JQ0}V`KA4 zz4((oF_08FGZIR)JuBXcvd@+{R$LE2+OF$-YbQ4Eq&(ByilQjV*`vPH1z{sUgwvPs zhwIUdz0j`!paiC#qCbrquowOm%9rI0XlP5t^D*%i!7c@wqSuGYA8%DnpKSV~2>7V> z2Jp{m1-BpQ@rpl3i^qGDGNj}su)a(7qUpDkm#Djtdk8+3ap;bS{{ze`lXT*<%4gaz zaC6@u`&t&571s+VEKpUydA*cX>G@RQ1J(WRQaEsiL#?~$8lO&9<1nvGZl|X4KNBcL zN9G^vCV&CvcM)8u&dC1GO_?_sX~1y$+%BJmkmfvWZ3oMrfsmn{A*bwvI<&gcNVXhl*G7Q0vS#<9ym0AmR5Y z&N9)A*a}I`fS%AxGVYq>-_9$kD8(}DkcYo&W-Vijw}fc9re;}3Wmh<};9`NEfaz>P zBCnUSoB?s|Qva1efWfqjAxeK+*rIAG_6TCD>67SeG8Ob2M&eS(A9he&CZN^h@mgDGnTN?ZraCGTa)^ zQy4#X@6yj1CzSFyb_=)`(&mMJH(*MB4shKQNAc64m31zxY zss9o|e5oKj3o*CPE7(!mksd35P*RU&JX&-(b^0;(mxeKcZ;Z?N3&kK`Owkq#g0WL5 zAOn2fNKANn`ekCLgQt9!H$DuVi^$!2kxE7CMKz#;A?nq6@HO^jn0spxfc}DaYN_|q zD{teFGRqvmPJ0>h&(Gdzi$1o2O|Y49M6){;wSykN3kPba|L|46vUPLdI%_sCpRi*m z*|rWidW{ zZYUELBT&gmeG+}dmM5eUa-9l~32pQ+1({+LgXulLx|Iy1HncVQjUe+%FBz8Xw& zPJsGm0}1RtDOmsBq|RL*#x(8D2MEcsQi%S;|WQQz*yBy;Ljr&>5bM%0h6Y_ zrRm?%^@*Q4L=*(8|6$#v80A4S@Y>?}(lM&M$g9GepQpW=q+)l-5eHmjMkgkf4B@hi4QG=hUulT>9DE}1u8$ZK-VoJ^v8r;^3* zA>?vlmZlvNG_epF(xILuJQEuMROO%#Zwe9)3%9$jFZLw|_t;;2R*J+wmvwjTZBFs< zX#gc9ZsDg0m~i)Fe6{^DSr~2o!{B3|LkG9;r-U`Yr!DvFzQy)rYADi8q(ocK02dK4 zvs?>Vv%rXw8+e!c$6%-Ww8{I2GT2%_`cC?zv_f6tZB8 z10;F3p0FFlp?UcBkB%HrxH2CrXvfw$;JhHtC<7=+O4H55vCf|04mc}|#1MoN!XuN4 ziS0i|T*Wxvx@}e&LB(f!AT} zpC3t%Sz(}W(0$YeeFA|PraH^JSdwW^p|d-m!DFei)RLst4o5;=lz-sPP}n)ey6}GO z+Q#v=znIMN?tb#BWt_UZif;Wc%cHyVuhKpsj!LO`)OMqdPaw@e^;mg;S~CBcr1E z=Pt%V*YP2~Hl8d`AQUy9f3b17G`#JVH#?HAFw$q9H}~$@M)SrHa<~X_j;;U-((Hd7 zGMdb!af`O?uKtb3Fmlnd})MRaZ*GO@t50NX!J>8#t3oHys)|& zNzczAytz8jcFIxH#C`Oy)YbAiPuDkAyxdJ0EXFMF1SDFYPB6#(mN#_NNH%5OLQI0U zWbT$w=T_!IhvK9B^?#_aW;U~|0pqqCp5Zj{2H8DA#lUrxkKF$J0|BXnJm6E! zLP0W4MkPf3H})jCVc?GjcmbH|9r%hZck~0cFpiXb`@5 zs0UGlIEon13Sgpv*yYUgBT|X=+3!8@F+2{6osH0i$TePSUtEGuwzMjgmR*Y)0S2d+<28+OZIMwrm>|f>@~jy*kY)Y{Rz-CDi5qN-g=VnV>Y!cbby? zy%L%3l`D*G9UtwhHUsw>6Ouz3)8;H}O%t$SL4fkPDcY!ccXJ-hWG%PQMWv5C_kFId z+%IVu&G^QJ9pFQ{#a3E`JdcDv+w{lH`ps+w-S} zy^m|OLR=A#d7!AbcJ5D$hWB-#fB~EBvi(;M^R```-Sl)yg!Q7!Qk3XZEUdpx^npMDRr%4Q zTv~qmWE-=7_Rp(fg>@(g@uxeh_L_Rb;0`(>rdbg}fAj+nA@|4CNuZ=EnwY!iBq38S zM7nwTHhpdT8Hono-GlZY`P#OV;aiB@ZfIgML4UuvAz`VRVJJuorphf}d+J z+k_g{nLca+KSs&xQBbR7DZ6#J-o-!IblyCv(y>GYUm|IshE}PxjmB+u4;#ps6W>rH z6`;NNOI-5lv)M-GUO|)xL{Vn)qENtNb(=+I20)Q{!A4;C~O_$k0xJD6JCEaEYDDaG;e_UtLC+BDPm z#*DR(+T9H(hKR>hrCMW2Yn%8rzR*Yj!`~;^jC3JNvi8HUKiUmOfbaElt?x#xSLpCY z&^$Z-K%Rz2e8F&zCg2CuuKK4@P0OHqeOR)ES9Qxn6VuSDt+6=t7~wT;15TzDgxhJ_ zHgW>ycDn95jFfs*Hx7}l-Qr(JD9~u^CzszH(g}n#(Mv?idrndemRT0MzRm;v5}(|3 zmHU_`#NPo8$jYxU^fHty141b^mben*%0o{Y*o_rZ=2gpT*PYfixM)+hJ_ zH6IO{x16uer-iN7tdrdov)+Z$LL=o+s_=JOw)7R!1HyrS_V$#DU#}#yXDVnNVfY-h z>1y?$FqTs>bP$!~k#gU~Noj@|j7vc*P9OQI#M1n5f`;Vt{SH-F<1NRYx^YD34NW4L zo4_-=7D^aFp&mFaLTq2qw~T3aj(}UvU`;udEvl4OsVK*0>gJYQK9BQ_dv_)q@UZ+~ zU0kN9|IG9~r>5Dt^RJG=Ou{!B7E0cRib(8C!Fz8T5@O$iE}kA35tNfSs)-OKz!{Wl zKo=o+Z^o^0e4T9ms2XSmi_i708yJWuqo--Z{6F8(X@to7Ql#J1Au-orS-Xran1SdM?@Ta(qr^N*O(XQ+5G24XK; zbY9=3loTi*#tweKu+)jg&Rl6NmyX!aEVopW!f`Hs&4ZW;!$^4M6r7p=zDb3C=}^z5N@huE47idQHs>0YAG+UtC?0_Gm@R03W?VwR6x?0S#QoLJ76h zy{(vu8K^8Hj`t9sb#%_*GpV-3nf2ta6S#dbYW1 zPR+-Dt5Pmy#+Sqa`OQ6%?a#Xs^6jSO2N~aSw(;|lTd_qv<~yQLKC{USg3h7VUK9Mp z^* zHwp79yAm_RkdN*jO@yv_5d8dHF6-V(&;H{P1^S`!jNfVIZrib=P157kJL(lu%*RK+ zWQjI4ZKr{EhTBo@$}tLp?WHxoBG*tBnjPz89l1zc+D`|J+R1BO2xw^@V7l;as^eA#angianY@b6>uG zlQ1@y9Y5*dg!9Q(_jX$2c`06_^hoIyi|tGMxUU%rh(`C1*t!-S#Hu&%bg#fh4gMkF zu0P>{K4OkWZc%JsduBm(v>rZKKIkoA7idTyclV87!0V62>{H!PH+h0aup$S3600Yx zj%_$VrM0b|TQwWvdF7AOBdSAz(PNY<^9P>Ey5n~u0TwE?d-Epl!E%g?WR1bnL?bQ= zKf|(R4%UpJ@^wR#w5TKqlV^t~D^lS8`j0=hJQ-DqwquA6B09{_%~_%4kR{fo;psB6acwF7p(7~lS<)1!B@E{z-hA`sv8=Eif>WH?G4?d!zPukRs3 zUqtj8MJ^~#i7-28e~c*eTVe8&Wkek_a+q4aZ~yRX*}Sc>B$OV#6}=tNj@T0rO||0f5UmzyWtQe$3fvjNr{F$KrRk@+6d573DjKvx71;;4b4{k4^QfV>ZKA$|Y z+m1YPb+$W&(c7#nE_-+^Oy%04)pqEn;5q!(@B9pE401zhpue{~AIb%-ol~RinAHgKJJR?@n~f zyE=P?>jYh#lC(#Wloa_hnotxAkSH7T>b!bo-D3yc1A|Bi-@#n>@ z4N_-&@l<}V<&Ueju&rJ$-M8g8!@+VaGR{X_CK+N;3B&0Pz zw0BzV>>z1v8l_2oX%1=qX=bk)UX$onH8njnTkD^4_W}zCRUP_#?&8%K~TFdQ|qh%*k)X z-8y$Xv-5+H*PRWjna{+4Cs_^uAyzviH2lsg2UO_UZXh(I3z?(olo@*-TOJimGirS@ zlUH1d`K2)an98yOs#rHQn*-nYxm>FAi1KK&w3x^$-#?i_3h$?vp4f-4=~jN`s^KOo z-;&2$l*DCoDuD=lOSVdLfYN?7ukhZd9bsCxGaFpg?1-lQYjcX69Z0X&&?UmvKaWIa9y$KgCV<9k0 z1A!2J>OZ6ZeXGRTj^BhCqEU%Bo-C0!r7n3m~Ufg}`b!y20 zS9j`XbNbX08qT@|jykK*$+AuxIU4fh72ol>N0%!Rl#ntfGfZd7VE;AifY+5jNSN|X zO@HM4DhpXZ(SyAR+zG!b!dX2k zdRWq{U;=2{gcom6w`+vmvd5VJOTAAkJvUI1S~=jOxgAhDQbKA*1taFZUiq27%S#VG zro8f|Eh%_TH|xLot8IQm?$8+8=NrKGY{P+cJv1pR+3n<+L%_4|C+ z*7BBg_5w|YVFFl*qe{oWxCM#&;d2wvQRrXc>78=*-8q8y zd3i%*ZEqXzA_jHn_`L#rB`ED+r<99>_g#j>QAYy3AH3HOI5n29^jnaQ@p}G)Iz?x~ zc^IWJ1MlZ+qs@K?&&#z)>n+DzCn27Oj#alvY&T4T_U@#CkN|UrRF`#`Kh~d?+T00j zp{#z73j+(X?9@Nno7vddeS0WfA{oag zy}`lT-YS6+6%0S<6OU@-s16n}Th9C1-z|=oF^6OHP-6hLosj< zzRuD>599;t{b*Fm3=8~ak9EDQUS5amRoIj{8@A{wzd^HotdBn`z~_#bXO6Oo+m ziix`iiB%T*P9tCi@4I_96a;b4hAuNpsN11Iz6Cc;>%dPm8cd%lsm_oqo+b4e%(H?i2x66w9GXOoe!EHCK)jj*}Thuor zza7yVcfn(kc=WH@7Ck7m>tu|6v|LQd2^qD2$XEMh?N3f~gPfd52O{43-cI5NkRQYu z8i|QTJ_KD0U#nfxSN=!V_sCAZ(nB9q5bU;LW=bo21*Ed~MxI2L?3Nc9LUts4jFjc5 zbC|tzD)7Y`gs6bHG%9$hKOaG@0$*3K>P=H_ehF0&q<@o(OfTW+;J~HR_cto}gN-wFV>^cgkdIBO$2Yh88YvvC<*xeBB_7zcK-#3*Tieqo zmo0&GEz$uVRF9gfg~H!zx4zKoSx`|xuLIGo)~Nmayd1(~gz2d8>mKuhq(89UG`Pm6 z`e(X>*A>(Z;=_FCzm!(u&3V4zP#cl}Dh9XLS5F;1R*+KJ^N@dxbZvmKfdvuq)dYex zvop0A5J%7WTtNn{yg^(^T?Yt?Tn3DqPQq$Zthk5Kl8 z=+gFM2xV$aR?G|R8C!qslbDiV0B>rw@k6=k@t~e#3-i+ z9*Q_C%TILEv*bq%GW7qM-6I+2(EOu_C6pR6p`L2HJ?R38`niM>Be|+v%K!58oPIv; ze2c}k`odq)W19zJ2}F%ewpP$haEwfQ zy?a?bM~7k}xp4WT^)mgMUxVxoHpCCI^%=7^jpOr5NlR;!z>xGcPLp_(2NkWM+<_l? zsr8Zj^A^?eOPje*wMzl7?_*PA2*Y13-Ha|5=9zZ_);7>VhFc7tx3~CQAnwx5px$UC z|9C{dM-Rn@o>mG52pK*jvOg;KZ`?7N%dVBVI`Vn#EzF%GK60bq0 zH#hVkW6WnB70OzlOgOm9-5S#k_X0r)b{*pKD_JGV9oV>ZSVEJ(t4_mw@s33d-6jg< zQ)WF^T2KnVATwfgn1kGf*r9hZ?JdEd0sJp!jT%6QhapegYNISKFJyE`r|6tzq<~Xn zhf70PXQV84Ty~%c^Oq+r@l-l-tv9VM21Hj$L-X9Y0T`hEt%`XRKbwjAOK~$$C2P5i zG&>d;xJD-eeRQmy_M|OBemP?1-nYKSu(LETn0rEp$*Ed0SG&Trw0BkNQ(*n7YK>Z{ zkO(B{gvb@5B)y(&9a0pbos^Rb70^M%34U{GMv{(>>ku$o#X5nh$M+YuA}lCNftm;V zD~@&7UD*yPvs1wSAv4DT=G~vGd*YA}VPWB(ra7E9#K`MVpRAdNS1M)M6-UfedX9An zO7J5s>N(px!^~!G&9o(^jBS-;jlJgs)S@3VTGi|`bV z<(2H>?=)-G@cg1N9pkQ!)v=8g!j(Jy0Xw)@+Zp4Kj}@|3(bdW{zkTDC8vmc;il=&NylHX8}2)_o5g-{5PpIC&xA zcOXzj1#=z>=O5vZZW$mvphZ4a`H9H#d)UFYdEW=~61BUFg?2o(3-zXrdkhf`$7$u? zKnR9aD_aNWLZrZ(q9_58xHnN=0!3#T`HAoS-g8MN3U^nHEh1WgSt7)&q>wr>;)G2sr5z!6m2ysZQN=uz2-a^m-D(pV!WEe z42Jqq!6_N8A&leC5@!i^bTBzxV`q=P$kU{0B`wAY^b+e{%*9nVeIT5}x}>9xHf71GVvo>+qw^^PRIZrcvp2Lo1rfmr&2lzr$D+$8(5HiHbMr#8wWjS-~4OUs}hG+^hV{KPhEE}TMXo88RT<`yDdG$In8?4V?L zdWrsL+vveb(ZwNBAU8}F=b^(3hbc081u?xG>zZf2x09!Qs}eh;LvW7~uLW~z-%=|k zW7Bec4RlP6(D9TpYuIGPz#Fun3<{HJ1`jR`m(o?b)RNcjC2K%)vZxd2mgdE4x;B%{ zQL)bpgcfX2&RLK?5e_hRY@&oq1FWcE{c|#*OYkoZKS~q8ETU%xCC9vL<*Xu6@D$%pYEPs7hRq^&IajGBC;I|aV*sbF2=!3l| z%PwJ%1I#8+z$&-irc=7vm@vjThEOh0HB5MEUZ-0iud3@}?%K$TnZ*Z@pBNfMg@Qr4 zIW!Zba`1m2mVsC-KK`a8CA0X<<$Yv`036DvF+UN8yDBI10*>jpezq;0)eK2_Th!H9 z6j}m^pq6Hxeb5=O7Ib+gT8fgZD5zkcLd01q*eQ9Swq?EW80s%Uo_tE8Bj9ZZbTXslPnUKF!n75K$ z9vTwO^|^zwqnq+l#R;u4KW)K>F8klI$XhDwDgdtLVB=o(H30V)Q#0=srpl3V!~sYg z-MNzY5v}|3mVJR2>g*FR>71}SxUYBoIC<2(e|35FKK168j@o3 zg~T?s0N8=k%{lAygW|2VM5dhx$nTCxU+ZeU|LmVlSRn0hk2#3Djt`B>2AqdS?dT2$ zL`wEp1-f356!f#^d}42=fiJn7&ET%%)k1I$4k zJdh~tplFdbiGMr+3~YE94V~)hsDxDLKpB?}M17ci&!e1`>G@F|!#|05z7HholRwRS z!AaYL@r$zb-<${Or=t@uWR%GK^7!dXl?wvfFYIz1@{Ac|U^hFV;#XVC{^W-;#FJJX zjXodcO2r9uft+8Jqd^N;?|@nImV2ak0W*+nTs2Pezmshk>d zaA0`slLLtC=*u?QcQ{BKoEm|!X{az>RGvvgaue?Ejw< zQQZeK6bx*Ezj^sq3x+(&z_cp{X8Qc&W1ufD{T-PfB5mpuNRn+sm@MegPz8dbw5I}{ zyBVA*)|l#(V{KBD8{@@o4zY?eLXvR^1~tnTHj8I~^twIEySOxSa%g`f&%fm{rvIGH zX82Si1mmd=aop!Fc-pg86Rr0GlgmL?=D&mv69g-beoF7}xH}?d9xpLNgrbaT_9$hA(C? z%cs@xLeIfj0!*23`D;z1VW`HlDC5vNs6s*Z86oZ!|Mzle9OpqbYD`cRG~5*Vp2ty=#EzHS&=r-&7k z`?Qsybr6w#rTq{TXX{BX_d4bTP0zp?@W~B_#}#lqoNb*Cn<4|Xo(TgBo!>hrH&_mP z5!?f=!{u~&*&HK6OU63gizq%wK~lfr$la_cZ*VyMxqpx@Q3zVhkX<