From 941ba3cd9aab4a48eaac8ee6d00b25665a238bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Izquierdo?= <61392581+fuzilogik2019@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:52:23 -0300 Subject: [PATCH 01/45] feat: added dynamic last changelog component (#161) --- .../changelog/es/2026-02-23-version-2.6.0.md | 1 - content/docs/en/changelog.mdx | 3 + content/docs/en/cli.mdx | 2 +- content/docs/en/cluster/index.mdx | 3 +- content/docs/en/connect_to_git.mdx | 2 +- content/docs/en/domain/index.mdx | 2 +- content/docs/en/environment/index.mdx | 2 +- content/docs/en/network/index.mdx | 2 +- content/docs/en/project/index.mdx | 1 + content/docs/en/project/workload/job.mdx | 2 - content/docs/en/provider/index.mdx | 1 + content/docs/en/responsability-model.mdx | 3 + content/docs/en/user/index.mdx | 1 + content/docs/es/changelog.mdx | 3 + content/docs/es/cli.mdx | 2 +- content/docs/es/cluster/index.mdx | 3 +- content/docs/es/connect_to_git.mdx | 2 +- content/docs/es/domain/index.mdx | 2 +- content/docs/es/environment/index.mdx | 2 +- content/docs/es/network/index.mdx | 2 +- content/docs/es/project/dependency/faqs.mdx | 2 - content/docs/es/project/index.mdx | 1 + content/docs/es/project/workload/job.mdx | 1 - content/docs/es/provider/index.mdx | 1 + content/docs/es/responsability-model.mdx | 3 + content/docs/es/user/index.mdx | 1 + docs/cluster/index.mdx | 1 + docs/connect_to_git.mdx | 2 +- docs/domain/index.mdx | 2 +- docs/environment/index.mdx | 2 +- docs/network/index.mdx | 2 +- docs/project/index.mdx | 1 + docs/project/vargroup/index.mdx | 65 +- docs/provider/index.mdx | 1 + docs/responsability-model.mdx | 3 + docs/user/index.mdx | 1 + docusaurus.config.js | 9 +- .../current/changelog.mdx | 3 + .../current/cli.mdx | 6 +- .../current/cluster/index.mdx | 1 + .../current/connect_to_git.mdx | 2 +- .../current/domain/index.mdx | 2 +- .../current/environment/index.mdx | 2 +- .../current/network/index.mdx | 2 +- .../current/project/index.mdx | 1 + .../current/project/vargroup/index.mdx | 65 +- .../current/provider/index.mdx | 1 + .../current/responsability-model.mdx | 3 + .../current/user/index.mdx | 1 + package-lock.json | 20642 ++++++++++++++++ package.json | 1 + plugins/changelog-recent.js | 206 + sidebars.js | 65 +- src/components/Homepage/RecentChangelog.jsx | 177 +- .../Homepage/RecentChangelog.module.css | 92 +- yarn.lock | 528 +- 56 files changed, 21522 insertions(+), 417 deletions(-) create mode 100644 package-lock.json create mode 100644 plugins/changelog-recent.js diff --git a/content/changelog/es/2026-02-23-version-2.6.0.md b/content/changelog/es/2026-02-23-version-2.6.0.md index 994d7da09..598eb7e10 100644 --- a/content/changelog/es/2026-02-23-version-2.6.0.md +++ b/content/changelog/es/2026-02-23-version-2.6.0.md @@ -1,6 +1,5 @@ --- title: Version 2.6.0 - authors: [] tags: - release diff --git a/content/docs/en/changelog.mdx b/content/docs/en/changelog.mdx index ce91c83ac..beb0de120 100644 --- a/content/docs/en/changelog.mdx +++ b/content/docs/en/changelog.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 14 +--- # Changelog diff --git a/content/docs/en/cli.mdx b/content/docs/en/cli.mdx index 017fb247d..fab2e60b4 100644 --- a/content/docs/en/cli.mdx +++ b/content/docs/en/cli.mdx @@ -1,7 +1,7 @@ --- title: CLI sidebar_label: Sleakops CLI -sidebar_position: 8 +sidebar_position: 11 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/index.mdx b/content/docs/en/cluster/index.mdx index 68b3bb098..22f677447 100644 --- a/content/docs/en/cluster/index.mdx +++ b/content/docs/en/cluster/index.mdx @@ -1,7 +1,6 @@ --- +sidebar_position: 7 title: Cluster -sidebar_label: '' -sidebar_position: null pagination_next: environment/index --- diff --git a/content/docs/en/connect_to_git.mdx b/content/docs/en/connect_to_git.mdx index cea00d83e..65fb8a872 100644 --- a/content/docs/en/connect_to_git.mdx +++ b/content/docs/en/connect_to_git.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Connect to Git -sidebar_position: 8 +sidebar_position: 9 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/domain/index.mdx b/content/docs/en/domain/index.mdx index 0e399c6e2..9e425a674 100644 --- a/content/docs/en/domain/index.mdx +++ b/content/docs/en/domain/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Domain -sidebar_position: 7 +sidebar_position: 5 --- # Domain Levels & Strategies diff --git a/content/docs/en/environment/index.mdx b/content/docs/en/environment/index.mdx index 386a6ffab..869cd1ad8 100644 --- a/content/docs/en/environment/index.mdx +++ b/content/docs/en/environment/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Environment -sidebar_position: 5 +sidebar_position: 8 pagination_next: project/index --- diff --git a/content/docs/en/network/index.mdx b/content/docs/en/network/index.mdx index 113f86bd3..e60d9ab76 100644 --- a/content/docs/en/network/index.mdx +++ b/content/docs/en/network/index.mdx @@ -2,7 +2,7 @@ id: network-resources title: Network Resources sidebar_label: Network Resources -sidebar_position: 9 +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/index.mdx b/content/docs/en/project/index.mdx index 88ef8b609..9ba389609 100644 --- a/content/docs/en/project/index.mdx +++ b/content/docs/en/project/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 10 sidebar_label: Project pagination_next: project/dependency/index --- diff --git a/content/docs/en/project/workload/job.mdx b/content/docs/en/project/workload/job.mdx index 20c7de916..a2a240d04 100644 --- a/content/docs/en/project/workload/job.mdx +++ b/content/docs/en/project/workload/job.mdx @@ -1,7 +1,5 @@ --- title: Job -sidebar_label: '' -sidebar_position: null --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/provider/index.mdx b/content/docs/en/provider/index.mdx index 782b011b7..bc5b44abd 100644 --- a/content/docs/en/provider/index.mdx +++ b/content/docs/en/provider/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 4 pagination_next: provider/schemas --- diff --git a/content/docs/en/responsability-model.mdx b/content/docs/en/responsability-model.mdx index 8ac7d5cd2..1b6af881b 100644 --- a/content/docs/en/responsability-model.mdx +++ b/content/docs/en/responsability-model.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 13 +--- import { FiExternalLink } from "react-icons/fi"; # Shared Responsibility Model diff --git a/content/docs/en/user/index.mdx b/content/docs/en/user/index.mdx index 2b42aa2c3..6deba2f88 100644 --- a/content/docs/en/user/index.mdx +++ b/content/docs/en/user/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 12 title: User --- diff --git a/content/docs/es/changelog.mdx b/content/docs/es/changelog.mdx index f786d4ed3..cb23e1030 100644 --- a/content/docs/es/changelog.mdx +++ b/content/docs/es/changelog.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 14 +--- # Registro de Cambios diff --git a/content/docs/es/cli.mdx b/content/docs/es/cli.mdx index 369ee68e9..86fb0cfdd 100644 --- a/content/docs/es/cli.mdx +++ b/content/docs/es/cli.mdx @@ -1,7 +1,7 @@ --- title: CLI sidebar_label: CLI de Sleakops -sidebar_position: 8 +sidebar_position: 11 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/index.mdx b/content/docs/es/cluster/index.mdx index 602d61a40..d82651ca8 100644 --- a/content/docs/es/cluster/index.mdx +++ b/content/docs/es/cluster/index.mdx @@ -1,7 +1,6 @@ --- +sidebar_position: 7 title: Cluster -sidebar_label: '' -sidebar_position: null pagination_next: environment/index --- diff --git a/content/docs/es/connect_to_git.mdx b/content/docs/es/connect_to_git.mdx index 7f0520262..2445740c4 100644 --- a/content/docs/es/connect_to_git.mdx +++ b/content/docs/es/connect_to_git.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Conectar a Git -sidebar_position: 8 +sidebar_position: 9 --- diff --git a/content/docs/es/domain/index.mdx b/content/docs/es/domain/index.mdx index d5fc6611f..af0cfba55 100644 --- a/content/docs/es/domain/index.mdx +++ b/content/docs/es/domain/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dominio -sidebar_position: 7 +sidebar_position: 5 --- # Niveles de Dominio y Estrategias diff --git a/content/docs/es/environment/index.mdx b/content/docs/es/environment/index.mdx index d953c3577..413a17b7d 100644 --- a/content/docs/es/environment/index.mdx +++ b/content/docs/es/environment/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Entorno -sidebar_position: 5 +sidebar_position: 8 pagination_next: project/index --- diff --git a/content/docs/es/network/index.mdx b/content/docs/es/network/index.mdx index 86adb6434..53b0836d5 100644 --- a/content/docs/es/network/index.mdx +++ b/content/docs/es/network/index.mdx @@ -2,7 +2,7 @@ id: networking-y-recursos-de-red title: Networking y Recursos de Red sidebar_label: Networking y Recursos de Red -sidebar_position: 9 +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/dependency/faqs.mdx b/content/docs/es/project/dependency/faqs.mdx index 9819ac9a8..e34e1b07b 100644 --- a/content/docs/es/project/dependency/faqs.mdx +++ b/content/docs/es/project/dependency/faqs.mdx @@ -1,7 +1,5 @@ --- title: FAQs -sidebar_label: '' -sidebar_position: null --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/index.mdx b/content/docs/es/project/index.mdx index 584977fe1..d65b5029d 100644 --- a/content/docs/es/project/index.mdx +++ b/content/docs/es/project/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 10 sidebar_label: Projecto pagination_next: project/dependency/index --- diff --git a/content/docs/es/project/workload/job.mdx b/content/docs/es/project/workload/job.mdx index 34df6d7ea..44cab0c96 100644 --- a/content/docs/es/project/workload/job.mdx +++ b/content/docs/es/project/workload/job.mdx @@ -1,6 +1,5 @@ --- title: Job -sidebar_position: null --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/provider/index.mdx b/content/docs/es/provider/index.mdx index 489369835..3a4b541c1 100644 --- a/content/docs/es/provider/index.mdx +++ b/content/docs/es/provider/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 4 pagination_next: provider/schemas --- diff --git a/content/docs/es/responsability-model.mdx b/content/docs/es/responsability-model.mdx index 1e0f821ca..177aa78bd 100644 --- a/content/docs/es/responsability-model.mdx +++ b/content/docs/es/responsability-model.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 13 +--- import { FiExternalLink } from "react-icons/fi"; # Modelo de Responsabilidad Compartida diff --git a/content/docs/es/user/index.mdx b/content/docs/es/user/index.mdx index c84b02950..97599a1a9 100644 --- a/content/docs/es/user/index.mdx +++ b/content/docs/es/user/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 12 title: Usuarios --- diff --git a/docs/cluster/index.mdx b/docs/cluster/index.mdx index e181744f9..22f677447 100644 --- a/docs/cluster/index.mdx +++ b/docs/cluster/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 7 title: Cluster pagination_next: environment/index --- diff --git a/docs/connect_to_git.mdx b/docs/connect_to_git.mdx index cea00d83e..65fb8a872 100644 --- a/docs/connect_to_git.mdx +++ b/docs/connect_to_git.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Connect to Git -sidebar_position: 8 +sidebar_position: 9 --- import Zoom from "react-medium-image-zoom"; diff --git a/docs/domain/index.mdx b/docs/domain/index.mdx index 0e399c6e2..9e425a674 100644 --- a/docs/domain/index.mdx +++ b/docs/domain/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Domain -sidebar_position: 7 +sidebar_position: 5 --- # Domain Levels & Strategies diff --git a/docs/environment/index.mdx b/docs/environment/index.mdx index 386a6ffab..869cd1ad8 100644 --- a/docs/environment/index.mdx +++ b/docs/environment/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Environment -sidebar_position: 5 +sidebar_position: 8 pagination_next: project/index --- diff --git a/docs/network/index.mdx b/docs/network/index.mdx index 113f86bd3..e60d9ab76 100644 --- a/docs/network/index.mdx +++ b/docs/network/index.mdx @@ -2,7 +2,7 @@ id: network-resources title: Network Resources sidebar_label: Network Resources -sidebar_position: 9 +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; diff --git a/docs/project/index.mdx b/docs/project/index.mdx index 88ef8b609..9ba389609 100644 --- a/docs/project/index.mdx +++ b/docs/project/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 10 sidebar_label: Project pagination_next: project/dependency/index --- diff --git a/docs/project/vargroup/index.mdx b/docs/project/vargroup/index.mdx index 1038191a2..262ee5b6f 100644 --- a/docs/project/vargroup/index.mdx +++ b/docs/project/vargroup/index.mdx @@ -1,5 +1,5 @@ --- -title: Varibale Groups +title: Variable Groups --- import Zoom from "react-medium-image-zoom"; @@ -82,6 +82,29 @@ If duplicate keys exist across different var groups: - If two global vargroups have the same key, the most recently created one will be used. +
+ + +### What is the difference between ENV and FILE type Vargroups? + + + +- **ENV**: Variables are injected as environment variables into your workload containers. Each key-value pair becomes an environment variable accessible at runtime. +- **FILE**: Variables are mounted as files inside your workload containers. Each key-value pair creates one file at the configured mount path. The Vargroup name becomes a subdirectory, each key becomes a filename, and each value becomes the file content. + +
+ +
+ + +### How does Replicate To work? + + + +The **Replicate To** option allows you to select additional project environments where the Vargroup's Kubernetes Secret will also be created. This makes the variables available across multiple namespaces without having to recreate the Vargroup manually in each environment. + +
+ ## Create a VarGroup ### 1. Navigate to create Vargroup section @@ -105,6 +128,7 @@ Complete the following attributes to create a new vargroup: | **Workload** | A microservice or component within the project. If selected, the vargroup is limited to it; otherwise, by selecting global it'll be accessible into the namespace. | | **Name** | A unique identifier for the var group, used to differentiate it within the project. Should be descriptive of the group's purpose. | | **Deploy** | Enable this option if you want SleakOps to automatically publish and deploy your workloads into the project. | +| **Replicate To** | Optional. Select additional project environments where this Vargroup's Kubernetes Secret will also be created, making its variables available across multiple namespaces. | :::info If you choose to add the argument using the text option: Each argument should be added on a new line, separated by an equal sign (`=`), with no extra spaces. @@ -122,3 +146,42 @@ ARGUMENT_ONE = VALUE Submit to create and Deploy your vargroup. + +### 3. Select a Type and configure your variables + +The **Type** field defines how the Vargroup is consumed by your workloads. Select the type that fits your use case: + +#### ENV — Key-Value Environment Variables + +Select **ENV** to inject variables as environment variables into your workload containers. Add key-value pairs using the form, or toggle **Textmode** to enter them as `KEY=VALUE` lines. + + +vargroup-env + + +#### FILE — Mounted Configuration Files + +Select **FILE** to mount variables as files inside your workload containers. When using this type, you must also provide a **Mount Path** — the directory where the files will be mounted. + +Each key-value pair creates one file following this structure: + +- The **Mount Path** is the base directory (e.g., `/nginx/`). +- The **Vargroup name** becomes a subdirectory inside it (e.g., `my-config`). +- Each **Key** becomes a filename (e.g., `nginx.conf`). +- Each **Value** becomes the file content. + +:::info +**Example:** with Mount Path `/nginx/`, Vargroup name `my-config`, and a key `nginx.conf`, the file will be mounted at `/nginx/my-config/nginx.conf` with the value as its content. +::: + + +vargroup-file + diff --git a/docs/provider/index.mdx b/docs/provider/index.mdx index 782b011b7..bc5b44abd 100644 --- a/docs/provider/index.mdx +++ b/docs/provider/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 4 pagination_next: provider/schemas --- diff --git a/docs/responsability-model.mdx b/docs/responsability-model.mdx index 8ac7d5cd2..1b6af881b 100644 --- a/docs/responsability-model.mdx +++ b/docs/responsability-model.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 13 +--- import { FiExternalLink } from "react-icons/fi"; # Shared Responsibility Model diff --git a/docs/user/index.mdx b/docs/user/index.mdx index 2b42aa2c3..6deba2f88 100644 --- a/docs/user/index.mdx +++ b/docs/user/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 12 title: User --- diff --git a/docusaurus.config.js b/docusaurus.config.js index 3fd6ae3ac..a3838feb0 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -128,12 +128,19 @@ const config = { blogSidebarTitle: "Recent Updates", blogSidebarCount: "ALL", showReadingTime: false, - postsPerPage: 10, + postsPerPage: 5, sortPosts: "descending", + onUntruncatedBlogPosts: "ignore", editUrl: "https://docs.sleakops.com/preview-docs/admin/#/collections/changelog", }, ], + [ + require.resolve("./plugins/changelog-recent"), + { + count: 3, + }, + ], [ "@docusaurus/plugin-content-docs", { diff --git a/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx b/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx index f786d4ed3..cb23e1030 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 14 +--- # Registro de Cambios diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx index 373d4a30d..86fb0cfdd 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx @@ -1,7 +1,7 @@ --- title: CLI sidebar_label: CLI de Sleakops -sidebar_position: 8 +sidebar_position: 11 --- import Zoom from "react-medium-image-zoom"; @@ -198,7 +198,7 @@ No. SleakOps no utiliza webhooks para activar pipelines de CI/CD. En su lugar, e -Este mensaje aparece cuando tienes múltiples proyectos con el mismo nombre en diferentes ambientes. Para resolverlo, especifica el ambiente usando el parámetro `-e` o `--environment` en tus comandos de build o deploy. +Este mensaje aparece cuando tenés varios proyectos con el mismo nombre en distintos entornos. Para resolverlo, especificá el entorno usando el parámetro `-e` o `--environment` en tus comandos de build o deploy. Si necesitás más información sobre las opciones de este comando, ejecutá `sleakops sub-command --help`. -El nombre del ambiente debe coincidir exactamente con el ambiente configurado en SleakOps. Puedes encontrar el valor correcto del ambiente en los ejemplos de pipelines ubicados en Project → Settings → Git Pipelines. +El nombre del entorno debe coincidir exactamente con el entorno configurado en SleakOps. Podés encontrar el valor correcto del entorno en los ejemplos de pipelines ubicados en Proyecto → Configuración → Git Pipelines. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx index c4f80e676..d82651ca8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 7 title: Cluster pagination_next: environment/index --- diff --git a/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx b/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx index 7f0520262..2445740c4 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Conectar a Git -sidebar_position: 8 +sidebar_position: 9 --- diff --git a/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx index d5fc6611f..af0cfba55 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dominio -sidebar_position: 7 +sidebar_position: 5 --- # Niveles de Dominio y Estrategias diff --git a/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx index d953c3577..413a17b7d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Entorno -sidebar_position: 5 +sidebar_position: 8 pagination_next: project/index --- diff --git a/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx index 86adb6434..53b0836d5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx @@ -2,7 +2,7 @@ id: networking-y-recursos-de-red title: Networking y Recursos de Red sidebar_label: Networking y Recursos de Red -sidebar_position: 9 +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx index 584977fe1..d65b5029d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 10 sidebar_label: Projecto pagination_next: project/dependency/index --- diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx index c449f25a9..41f910a48 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx @@ -1,5 +1,5 @@ --- -title: Varibale Groups +title: Variable Groups --- import Zoom from "react-medium-image-zoom"; @@ -79,6 +79,29 @@ Si existen claves duplicadas en diferentes Vargroups: - Si dos Vargroups globales tienen la misma clave, se usará el más recientemente creado. +
+ + +### ¿Cuál es la diferencia entre un Vargroup de tipo ENV y uno de tipo FILE? + + + +- **ENV**: Las variables se inyectan como variables de entorno en los contenedores de tu workload. Cada par clave-valor se convierte en una variable de entorno accesible en tiempo de ejecución. +- **FILE**: Las variables se montan como archivos dentro de los contenedores de tu workload. Cada par clave-valor crea un archivo en el mount path configurado. El nombre del Vargroup se convierte en un subdirectorio, cada clave en un nombre de archivo y cada valor en el contenido del archivo. + +
+ +
+ + +### ¿Cómo funciona la opción Replicate To (Replicar en)? + + + +La opción **Replicate To** te permite seleccionar entornos de proyecto adicionales donde también se creará el Secret de Kubernetes del Vargroup. Esto hace que las variables estén disponibles en múltiples namespaces sin necesidad de recrear el Vargroup manualmente en cada entorno. + +
+ ## Crea un grupo de variables ### 1. Navega a la sección para crear un Vargroup @@ -102,6 +125,7 @@ Completa los siguientes atributos para crear un nuevo Vargroup: | **Servicio** | Un microservicio o componente dentro del proyecto. Si se selecciona, el Vargroup está limitado a él; si no, al seleccionar global estará accesible dentro del namespace. | | **Nombre** | Un identificador único para el Vargroup, utilizado para diferenciarlo dentro del proyecto. Debe ser descriptivo del propósito del grupo. | | **Desplegar** | Habilita esta opción si deseas que SleakOps publique y despliegue automáticamente tu servicio en el proyecto. | +| **Replicar en** | Opcional. Selecciona entornos de proyecto adicionales donde también se creará el Secret de Kubernetes de este Vargroup, haciendo que sus variables estén disponibles en múltiples namespaces. | :::info Si eliges agregar el argumento usando la opción de texto: Cada argumento debe agregarse en una nueva línea, separada por un signo de igual (`=`), sin espacios adicionales. @@ -119,3 +143,42 @@ ARGUMENTO_UNO=VALOR Envía para crear y desplegar tu Vargroup. + +### 3. Selecciona un tipo y configura tus variables + +El campo **Tipo** define cómo se consume el Vargroup en tus workloads. Selecciona el tipo que se adapte a tu caso de uso: + +#### ENV — Variables de Entorno Clave-Valor + +Selecciona **ENV** para inyectar las variables como variables de entorno en los contenedores de tu workload. Agrega pares clave-valor usando el formulario, o activa el **Textmode** para ingresarlos como líneas `CLAVE=VALOR`. + + +vargroup-env + + +#### FILE — Archivos de Configuración Montados + +Selecciona **FILE** para montar las variables como archivos dentro de los contenedores de tu workload. Al usar este tipo, también debes proporcionar un **Mount Path** — el directorio donde se montarán los archivos. + +Cada par clave-valor crea un archivo siguiendo esta estructura: + +- El **Mount Path** es el directorio base (ej. `/nginx/`). +- El **nombre del Vargroup** se convierte en un subdirectorio dentro de él (ej. `my-config`). +- Cada **Clave** se convierte en el nombre del archivo (ej. `nginx.conf`). +- Cada **Valor** se convierte en el contenido del archivo. + +:::info +**Ejemplo:** con Mount Path `/nginx/`, nombre de Vargroup `my-config` y una clave `nginx.conf`, el archivo se montará en `/nginx/my-config/nginx.conf` con el valor como contenido. +::: + + +vargroup-file + diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx index 489369835..3a4b541c1 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 4 pagination_next: provider/schemas --- diff --git a/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx b/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx index 1e0f821ca..177aa78bd 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 13 +--- import { FiExternalLink } from "react-icons/fi"; # Modelo de Responsabilidad Compartida diff --git a/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx index c84b02950..97599a1a9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx +++ b/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx @@ -1,4 +1,5 @@ --- +sidebar_position: 12 title: Usuarios --- diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..1521f1809 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,20642 @@ +{ + "name": "docs", + "version": "0.0.2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "docs", + "version": "0.0.2", + "dependencies": { + "@algolia/client-search": "^4.9.1", + "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-google-analytics": "^3.9.2", + "@docusaurus/plugin-sitemap": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", + "@docusaurus/theme-mermaid": "^3.9.2", + "@mdx-js/react": "^3.0.0", + "clsx": "^1.2.1", + "docusaurus-lunr-search": "^3.6.0", + "gray-matter": "^4.0.3", + "joi": "^17.4.0", + "memfs": "^4.0.0", + "prism-react-renderer": "^1.3.5", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-icons": "^4.4.0", + "react-loadable": "^5.5.0", + "react-medium-image-zoom": "^5.0.0", + "search-insights": "^2.0.0", + "yarn": "^1.22.22" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/types": "^3.9.2", + "@types/react": "^18.0.0", + "typescript": "^4.0.0" + }, + "engines": { + "node": ">=18.14" + } + }, + "node_modules/@ai-sdk/gateway": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.0.tgz", + "integrity": "sha512-Gj0PuawK7NkZuyYgO/h5kDK/l6hFOjhLdTq3/Lli1FTl47iGmwhH1IZQpAL3Z09BeFYWakcwUmn02ovIm2wy9g==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12", + "@vercel/oidc": "3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.12.tgz", + "integrity": "sha512-ZtbdvYxdMoria+2SlNarEk6Hlgyf+zzcznlD55EAl+7VZvJaSg2sqPvwArY7L6TfDEDJsnCq0fdhBSkYo0Xqdg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/react": { + "version": "2.0.76", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.76.tgz", + "integrity": "sha512-ggAPzyaKJTqUWigpxMzI5DuC0Y3iEpDUPCgz6/6CpnKZY/iok+x5xiZhDemeaP0ILw5IQekV0kdgBR8JPgI8zQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider-utils": "3.0.12", + "ai": "5.0.76", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.25.76 || ^4.1.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.6.1.tgz", + "integrity": "sha512-wV/gNRkzb7sI9vs1OneG129hwe3Q5zPj7zigz3Ps7M5Lpo2hSorrOnXNodHEOV+yXE/ks4Pd+G3CDFIjFTWhMQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/abtesting/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", + "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", + "license": "MIT" + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.40.1.tgz", + "integrity": "sha512-cxKNATPY5t+Mv8XAVTI57altkaPH+DZi4uMrnexPxPHODMljhGYY+GDZyHwv9a+8CbZHcY372OkxXrDMZA4Lnw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.40.1.tgz", + "integrity": "sha512-XP008aMffJCRGAY8/70t+hyEyvqqV7YKm502VPu0+Ji30oefrTn2al7LXkITz7CK6I4eYXWRhN6NaIUi65F1OA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.40.1.tgz", + "integrity": "sha512-RTLjST/t+lsLMouQ4zeLJq2Ss+UNkLGyNVu+yWHanx6kQ3LT5jv8UvPwyht9s7R6jCPnlSI77WnL80J32ZuyJg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.40.1.tgz", + "integrity": "sha512-2FEK6bUomBzEYkTKzD0iRs7Ljtjb45rKK/VSkyHqeJnG+77qx557IeSO0qVFE3SfzapNcoytTofnZum0BQ6r3Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.40.1.tgz", + "integrity": "sha512-Nju4NtxAvXjrV2hHZNLKVJLXjOlW6jAXHef/CwNzk1b2qIrCWDO589ELi5ZHH1uiWYoYyBXDQTtHmhaOVVoyXg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" + }, + "node_modules/@algolia/ingestion": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.40.1.tgz", + "integrity": "sha512-z+BPlhs45VURKJIxsR99NNBWpUEEqIgwt10v/fATlNxc4UlXvALdOsWzaFfe89/lbP5Bu4+mbO59nqBC87ZM/g==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", + "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", + "license": "MIT" + }, + "node_modules/@algolia/monitoring": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.40.1.tgz", + "integrity": "sha512-VJMUMbO0wD8Rd2VVV/nlFtLJsOAQvjnVNGkMkspFiFhpBA7s/xJOb+fJvvqwKFUjbKTUA7DjiSi1ljSMYBasXg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.40.1.tgz", + "integrity": "sha512-ehvJLadKVwTp9Scg9NfzVSlBKH34KoWOQNTaN8i1Ac64AnO6iH2apJVSP6GOxssaghZ/s8mFQsDH3QIZoluFHA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.40.1.tgz", + "integrity": "sha512-PbidVsPurUSQIr6X9/7s34mgOMdJnn0i6p+N6Ab+lsNhY5eiu+S33kZEpZwkITYBCIbhzDLOvb7xZD3gDi+USA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", + "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", + "license": "MIT" + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.40.1.tgz", + "integrity": "sha512-ThZ5j6uOZCF11fMw9IBkhigjOYdXGXQpj6h4k+T9UkZrF2RlKcPynFzDeRgaLdpYk8Yn3/MnFbwUmib7yxj5Lw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.40.1.tgz", + "integrity": "sha512-H1gYPojO6krWHnUXu/T44DrEun/Wl95PJzMXRcM/szstNQczSbwq6wIFJPI9nyE95tarZfUNU3rgorT+wZ6iCQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", + "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", + "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz", + "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", + "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", + "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", + "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.3", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.3", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", + "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.43.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "license": "MIT" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "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==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.2.0.tgz", + "integrity": "sha512-65KU9Fw5fGsPPPlgIghonMcndyx1bszzrDQYLfierN+Ha29yotMHzVS94bPkZS6On9LS8dE4qmW4P/fGjtCf/g==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.2.0.tgz", + "integrity": "sha512-zSN/KblmtBcerf7Z87yuKIHZQmxuXvYc6/m0+qnjyNu+Ir67AVOagTa1zBqcxkVUVkmBqUExdcyrdo9hbGbqTw==", + "license": "MIT", + "dependencies": { + "@ai-sdk/react": "^2.0.30", + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/css": "4.2.0", + "ai": "^5.0.30", + "algoliasearch": "^5.28.0", + "marked": "^16.3.0", + "zod": "^4.1.8" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docusaurus/babel": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.2.tgz", + "integrity": "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.25.9", + "@babel/preset-env": "^7.25.9", + "@babel/preset-react": "^7.25.9", + "@babel/preset-typescript": "^7.25.9", + "@babel/runtime": "^7.25.9", + "@babel/runtime-corejs3": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/bundler": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.2.tgz", + "integrity": "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@docusaurus/babel": "3.9.2", + "@docusaurus/cssnano-preset": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "babel-loader": "^9.2.1", + "clean-css": "^5.3.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.11.0", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "file-loader": "^6.2.0", + "html-minifier-terser": "^7.2.0", + "mini-css-extract-plugin": "^2.9.2", + "null-loader": "^4.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "webpack": "^5.95.0", + "webpackbar": "^6.0.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", + "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.9.2", + "@docusaurus/bundler": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "core-js": "^3.31.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "execa": "5.1.1", + "fs-extra": "^11.1.1", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.6.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "open": "^8.4.0", + "p-map": "^4.0.0", + "prompts": "^2.4.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.6", + "tinypool": "^1.0.2", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "webpack": "^5.95.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-dev-server": "^5.2.2", + "webpack-merge": "^6.0.1" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@mdx-js/react": "^3.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/core/node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz", + "integrity": "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.5.4", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.2.tgz", + "integrity": "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz", + "integrity": "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^2.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz", + "integrity": "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.9.2", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/module-type-aliases/node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz", + "integrity": "sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "cheerio": "1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", + "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.2.tgz", + "integrity": "sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-css-cascade-layers": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.2.tgz", + "integrity": "sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.2.tgz", + "integrity": "sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^2.3.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz", + "integrity": "sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.2.tgz", + "integrity": "sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@types/gtag.js": "^0.0.12", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.2.tgz", + "integrity": "sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz", + "integrity": "sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-svgr": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz", + "integrity": "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@svgr/core": "8.1.0", + "@svgr/webpack": "^8.1.0", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.2.tgz", + "integrity": "sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/plugin-css-cascade-layers": "3.9.2", + "@docusaurus/plugin-debug": "3.9.2", + "@docusaurus/plugin-google-analytics": "3.9.2", + "@docusaurus/plugin-google-gtag": "3.9.2", + "@docusaurus/plugin-google-tag-manager": "3.9.2", + "@docusaurus/plugin-sitemap": "3.9.2", + "@docusaurus/plugin-svgr": "3.9.2", + "@docusaurus/theme-classic": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-search-algolia": "3.9.2", + "@docusaurus/types": "3.9.2" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.2.tgz", + "integrity": "sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "infima": "0.2.0-alpha.45", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.5.4", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-classic/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@docusaurus/theme-classic/node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz", + "integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-common/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@docusaurus/theme-common/node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/@docusaurus/theme-mermaid": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.9.2.tgz", + "integrity": "sha512-5vhShRDq/ntLzdInsQkTdoKWSzw8d1jB17sNPYhA/KvYYFXfuVEGHLM6nrf8MFbV8TruAHDG21Fn3W4lO8GaDw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "mermaid": ">=11.6.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@mermaid-js/layout-elk": "^0.1.9", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@mermaid-js/layout-elk": { + "optional": true + } + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", + "integrity": "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.9.0 || ^4.1.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz", + "integrity": "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/types": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz", + "integrity": "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/types/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz", + "integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "escape-string-regexp": "^4.0.0", + "execa": "5.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "p-queue": "^6.6.2", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.2.tgz", + "integrity": "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz", + "integrity": "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz", + "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@antfu/utils": "^9.2.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.1", + "globals": "^15.15.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.1.1", + "mlly": "^1.7.4" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", + "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", + "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "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": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/gtag.js": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==", + "license": "MIT" + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", + "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", + "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vercel/oidc": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.3.tgz", + "integrity": "sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ai": { + "version": "5.0.76", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.76.tgz", + "integrity": "sha512-ZCxi1vrpyCUnDbtYrO/W8GLvyacV9689f00yshTIQ3mFFphbD7eIv40a2AOZBv3GGRA7SSRYIDnr56wcS/gyQg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "2.0.0", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/algoliasearch": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.40.1.tgz", + "integrity": "sha512-iUNxcXUNg9085TJx0HJLjqtDE0r1RZ0GOGrt8KNQqQT5ugu8lZsHuMUYW/e0lHhq6xBvmktU9Bw4CXP9VQeKrg==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.6.1", + "@algolia/client-abtesting": "5.40.1", + "@algolia/client-analytics": "5.40.1", + "@algolia/client-common": "5.40.1", + "@algolia/client-insights": "5.40.1", + "@algolia/client-personalization": "5.40.1", + "@algolia/client-query-suggestions": "5.40.1", + "@algolia/client-search": "5.40.1", + "@algolia/ingestion": "1.40.1", + "@algolia/monitoring": "1.40.1", + "@algolia/recommend": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz", + "integrity": "sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw==", + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-common": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.1.tgz", + "integrity": "sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-search": { + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.40.1.tgz", + "integrity": "sha512-Mw6pAUF121MfngQtcUb5quZVqMC68pSYYjCRZkSITC085S3zdk+h/g7i6FxnVdbSU6OztxikSDMh1r7Z+4iPlA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.40.1", + "@algolia/requester-browser-xhr": "5.40.1", + "@algolia/requester-fetch": "5.40.1", + "@algolia/requester-node-http": "5.40.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/autocomplete.js": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.37.1.tgz", + "integrity": "sha512-PgSe9fHYhZEsm/9jggbjtVsGXJkPLvd+9mC7gZJ662vVL5CRWEtm/mIrrzCx0MrNxHVwxD5d00UOn6NsmL2LUQ==", + "license": "MIT", + "dependencies": { + "immediate": "^3.2.3" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.18.tgz", + "integrity": "sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/bcp-47-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz", + "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "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==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001751", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", + "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "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" + } + }, + "node_modules/chevrotain-allstar": { + "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==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "license": "ISC" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.26.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz", + "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", + "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==", + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.2.tgz", + "integrity": "sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "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==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", + "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.18", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "license": "MIT" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/direction": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/docusaurus-lunr-search": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/docusaurus-lunr-search/-/docusaurus-lunr-search-3.6.0.tgz", + "integrity": "sha512-CCEAnj5e67sUZmIb2hOl4xb4nDN07fb0fvRDDmdWlYpUvyS1CSKbw4lsGInLyUFEEEBzxQmT6zaVQdF/8Zretg==", + "license": "MIT", + "dependencies": { + "autocomplete.js": "^0.37.1", + "clsx": "^2.1.1", + "gauge": "^3.0.2", + "hast-util-select": "^4.0.2", + "hast-util-to-text": "^2.0.1", + "hogan.js": "^3.0.2", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "minimatch": "^3.1.2", + "rehype-parse": "^7.0.1", + "to-vfile": "^6.1.0", + "unified": "^9.2.2", + "unist-util-is": "^4.1.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "peerDependencies": { + "@docusaurus/core": "^2.0.0-alpha.60 || ^2.0.0 || ^3.0.0", + "react": "^16.8.4 || ^17 || ^18 || ^19", + "react-dom": "^16.8.4 || ^17 || ^18 || ^19" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/docusaurus-lunr-search/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/docusaurus-lunr-search/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.237", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz", + "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", + "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.4.1.tgz", + "integrity": "sha512-E4fEc8KLhDXnbyDa5XrbdT9PbgSMt0AGZPFUsGFok8N2Q7DTO+F6xAFJjIdw71EkidRg186I1mQCKzZ1ZbEsCw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hachure-fill": { + "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==", + "license": "MIT" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "license": "MIT", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz", + "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-raw/node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-raw/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-raw/node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-raw/node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-select": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-4.0.2.tgz", + "integrity": "sha512-8EEG2//bN5rrzboPWD2HdS3ugLijNioS1pqOTIolXNf67xxShYw4SQEmVXd3imiBG+U2bC2nVTySr/iRAA7Cjg==", + "license": "MIT", + "dependencies": { + "bcp-47-match": "^1.0.0", + "comma-separated-tokens": "^1.0.0", + "css-selector-parser": "^1.0.0", + "direction": "^1.0.0", + "hast-util-has-property": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "hast-util-to-string": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0", + "unist-util-visit": "^2.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/hast-util-select/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree/node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-estree/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree/node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-estree/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-estree/node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5/node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-parse5/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-parse5/node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-parse5/node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz", + "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz", + "integrity": "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==", + "license": "MIT", + "dependencies": { + "hast-util-is-element": "^1.0.0", + "repeat-string": "^1.0.0", + "unist-util-find-after": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", + "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/hastscript/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hogan.js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", + "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==", + "dependencies": { + "mkdirp": "0.3.0", + "nopt": "1.0.10" + }, + "bin": { + "hulk": "bin/hulk" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.45", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz", + "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/katex": { + "version": "0.16.25", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz", + "integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "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==" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "license": "MIT", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", + "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/lunr-languages": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz", + "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==", + "license": "MPL-1.1" + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz", + "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.49.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.49.0.tgz", + "integrity": "sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/mermaid": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.0.tgz", + "integrity": "sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^0.6.2", + "@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.11", + "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" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "license": "MIT/X11", + "engines": { + "node": "*" + } + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "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==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.25.tgz", + "integrity": "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==", + "license": "MIT" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "license": "MIT", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/not": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", + "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", + "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/null-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/null-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/null-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "license": "MIT", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz", + "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==", + "license": "MIT" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "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==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-unused": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-merge-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz", + "integrity": "sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.0", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.21", + "browserslist": "^4.26.0", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.3", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.4.2", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.12", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.4", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.12", + "postcss-logical": "^8.1.0", + "postcss-nesting": "^13.0.2", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.23" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postcss-zindex": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "license": "MIT", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "license": "MIT", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "name": "@slorber/react-helmet-async", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-icons": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", + "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-json-view-lite": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-medium-image-zoom": { + "version": "5.2.13", + "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.13.tgz", + "integrity": "sha512-KcBL4OsoUQJgIFh6vQgt/6sRGqDy6bQBcsbhGD2tsy4B5Pw3dWrboocVOyIm76RRALEZ6Qwp3EDvIvfEv0m5sg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/rpearce" + } + ], + "license": "BSD-3-Clause", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz", + "integrity": "sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==", + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/rehype-parse": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz", + "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==", + "license": "MIT", + "dependencies": { + "hast-util-from-parse5": "^6.0.0", + "parse5": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", + "license": "Apache-2.0" + }, + "node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "license": "MIT" + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", + "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", + "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "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==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.18.tgz", + "integrity": "sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.11" + } + }, + "node_modules/style-to-object": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.11.tgz", + "integrity": "sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/swr": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.6.tgz", + "integrity": "sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-vfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz", + "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==", + "license": "MIT", + "dependencies": { + "is-buffer": "^2.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/to-vfile/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-find-after": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz", + "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==", + "license": "MIT", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/url-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "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==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "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==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "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==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "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==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpack": { + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz", + "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "consola": "^3.2.3", + "figures": "^3.2.0", + "markdown-table": "^2.0.0", + "pretty-time": "^1.1.0", + "std-env": "^3.7.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/webpackbar/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/webpackbar/node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "license": "MIT", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpackbar/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpackbar/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yarn": { + "version": "1.22.22", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.22.tgz", + "integrity": "sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==", + "hasInstallScript": true, + "license": "BSD-2-Clause", + "bin": { + "yarn": "bin/yarn.js", + "yarnpkg": "bin/yarn.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json index a91db7e0b..dd24aa383 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", "docusaurus-lunr-search": "^3.6.0", + "gray-matter": "^4.0.3", "joi": "^17.4.0", "memfs": "^4.0.0", "prism-react-renderer": "^1.3.5", diff --git a/plugins/changelog-recent.js b/plugins/changelog-recent.js new file mode 100644 index 000000000..98aad5dba --- /dev/null +++ b/plugins/changelog-recent.js @@ -0,0 +1,206 @@ +const fs = require("fs"); +const path = require("path"); +const matter = require("gray-matter"); + +/** + * Plugin that reads changelog markdown files and exposes the latest N entries + * via Docusaurus globalData for use in the landing page component. + */ +module.exports = function pluginChangelogRecent(context, options) { + const { count = 3 } = options; + + return { + name: "changelog-recent", + + async loadContent() { + const changelogDir = path.join(context.siteDir, "changelog"); + + if (!fs.existsSync(changelogDir)) { + return []; + } + + const files = fs + .readdirSync(changelogDir) + .filter((f) => f.endsWith(".md") || f.endsWith(".mdx")); + + const entries = files.map((file) => { + const raw = fs.readFileSync(path.join(changelogDir, file), "utf-8"); + const { data: frontmatter, content } = matter(raw); + + // Parse sections from content + const sections = parseSections(content); + + // Extract date: prefer frontmatter, fallback to filename (YYYY-MM-DD prefix) + let date = ""; + if (frontmatter.date) { + date = new Date(frontmatter.date).toISOString().split("T")[0]; + } else { + const dateMatch = file.match(/^(\d{4}-\d{2}-\d{2})/); + if (dateMatch) { + date = dateMatch[1]; + } + } + + // Build slug matching Docusaurus blog URL format: YYYY/MM/DD/slug + // e.g. "2026-02-23-version-2.6.0.md" → "2026/02/23/version-2.6.0" + let slug = frontmatter.slug || ""; + if (!slug) { + const dateMatch = file.match(/^(\d{4})-(\d{2})-(\d{2})-(.*?)\.mdx?$/); + if (dateMatch) { + const [, y, m, d, name] = dateMatch; + slug = `${y}/${m}/${d}/${name}`; + } else { + slug = file.replace(/\.mdx?$/, ""); + } + } + + return { + title: frontmatter.title || "", + date, + slug, + tags: frontmatter.tags || [], + sections, + }; + }); + + // Sort by date descending and take the latest N + entries.sort((a, b) => b.date.localeCompare(a.date)); + return entries.slice(0, count); + }, + + async contentLoaded({ content, actions }) { + const { setGlobalData } = actions; + setGlobalData({ recentChangelogs: content }); + }, + }; +}; + +/** + * Parse markdown content into categorized sections with their items. + * Supports two formats: + * + * Format A (legacy): + * ## New Features + * - **Title:** Description + * + * Format B (new template): + * 🚀 New Features + * Title · Area + * Description text. + */ +function parseSections(content) { + const sections = []; + const lines = content.split("\n"); + + let currentSection = null; + let pendingTitle = null; // Format B: title line waiting for its description + + for (const line of lines) { + // Empty line: flush any pending title without description + if (!line.trim()) { + pendingTitle = null; + continue; + } + + // --- Section heading detection --- + + // Format A: ## headings (e.g., "## New Features", "## 🚀 New Features") + const headingMatch = line.match(/^#{2,3}\s+\**(.+?)\**[:]*\s*$/); + if (headingMatch) { + pendingTitle = null; + const heading = cleanHeading(headingMatch[1].trim()); + if (/^version\s/i.test(heading)) continue; + currentSection = { heading, type: categorizeSection(heading), items: [] }; + sections.push(currentSection); + continue; + } + + // Format A: bold-line sections (e.g., "**🚀 New Features:**") + const boldSectionMatch = line.match(/^\*\*(.+?)\*\*[:]*\s*$/); + if (boldSectionMatch) { + pendingTitle = null; + const heading = cleanHeading(boldSectionMatch[1].trim()); + if (categorizeSection(heading) !== "improved" || /feature|fix|bug/i.test(heading)) { + currentSection = { heading, type: categorizeSection(heading), items: [] }; + sections.push(currentSection); + continue; + } + } + + // Format B: bare emoji section heading (e.g., "🚀 New Features", "🐛 Bug Fixes") + const emojiHeadingMatch = line.match(/^[\p{Emoji_Presentation}]\s+(.+)/u); + if (emojiHeadingMatch) { + pendingTitle = null; + const heading = cleanHeading(line.trim()); + const type = categorizeSection(heading); + if (type !== "improved" || /feature|fix|bug|improv|new/i.test(heading)) { + currentSection = { heading, type, items: [] }; + sections.push(currentSection); + continue; + } + } + + // Skip admonition markers and import/MDX lines + if (line.startsWith(":::") || line.startsWith("import ")) continue; + + // --- Item detection (only inside a section) --- + if (currentSection) { + // Format A: "- **Title:** Description" or "- **Title** Description" + const boldItemMatch = line.match(/^-\s+\*\*(.+?)\*\*[:.]?\s*(.*)/); + if (boldItemMatch) { + pendingTitle = null; + currentSection.items.push({ + title: boldItemMatch[1].trim(), + description: boldItemMatch[2].trim(), + }); + continue; + } + + // Format A: "- Plain text description" + const plainItemMatch = line.match(/^-\s+(.+)/); + if (plainItemMatch) { + pendingTitle = null; + const text = plainItemMatch[1].trim(); + const colonIdx = text.indexOf(":"); + if (colonIdx > 0 && colonIdx < 60) { + currentSection.items.push({ + title: text.substring(0, colonIdx).trim(), + description: text.substring(colonIdx + 1).trim(), + }); + } else { + currentSection.items.push({ title: text, description: "" }); + } + continue; + } + + // Format B: "Title · Area" — store as pending title + if (line.includes("·") && !line.startsWith("#") && !line.startsWith("*")) { + pendingTitle = line.split("·")[0].trim(); + continue; + } + + // Format B: description line following a pending title + if (pendingTitle && !line.startsWith("#") && !line.startsWith("*") && !line.startsWith("-")) { + currentSection.items.push({ title: pendingTitle, description: line.trim() }); + pendingTitle = null; + continue; + } + } + } + + return sections; +} + +/** + * Remove emoji prefixes from headings for clean display. + */ +function cleanHeading(heading) { + return heading.replace(/^[\p{Emoji}\p{Emoji_Presentation}\uFE0F\u200D]+\s*/u, "").trim(); +} + +function categorizeSection(heading) { + const lower = heading.toLowerCase(); + if (lower.includes("bug") || lower.includes("fix") || lower.includes("correc")) return "fixed"; + if (lower.includes("new") || lower.includes("feature") || lower.includes("added") || lower.includes("nueva") || lower.includes("funcionalidad")) return "added"; + return "improved"; +} diff --git a/sidebars.js b/sidebars.js index fd342f2cd..68fa4aead 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,31 +1,58 @@ -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ - // @ts-check /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], - - // But you can create a sidebar manually - /* tutorialSidebar: [ + 'index', + 'basicconcepts', + 'gettingstarted', + { + type: 'category', + label: 'Providers', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'provider' }], + }, + { + type: 'category', + label: 'Cluster', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'cluster' }], + }, + { + type: 'category', + label: 'Environment', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'environment' }], + }, + { + type: 'category', + label: 'Project', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'project' }], + }, + 'connect_to_git', + { + type: 'category', + label: 'Domain', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'domain' }], + }, + { + type: 'category', + label: 'Network Resources', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'network' }], + }, { type: 'category', - label: 'Tutorial', - items: ['hello'], + label: 'User', + link: { type: 'generated-index' }, + items: [{ type: 'autogenerated', dirName: 'user' }], }, + 'responsability-model', + 'cli', + 'changelog', ], - */ }; module.exports = sidebars; diff --git a/src/components/Homepage/RecentChangelog.jsx b/src/components/Homepage/RecentChangelog.jsx index 26c2309d4..287f47339 100644 --- a/src/components/Homepage/RecentChangelog.jsx +++ b/src/components/Homepage/RecentChangelog.jsx @@ -1,72 +1,96 @@ import React from "react"; import Link from "@docusaurus/Link"; import Translate from "@docusaurus/Translate"; +import { usePluginData } from "@docusaurus/useGlobalData"; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import styles from "./RecentChangelog.module.css"; -// Changelog data - Latest 3 versions -const changelogData = [ - { - id: "v240", - version: "2.4.0", - date: "2026-01-08", - type: "feature", - title: "Workload Auto-Diagnostics", - description: - "New AI-powered diagnostics for Workloads, Grace Period support, Cost Tags notifications, and UI improvements.", - slug: "version-2.4.0", - }, - { - id: "v232", - version: "2.3.2", - date: "2025-12-19", - type: "feature", - title: "SleakOps CLI", - description: - "New CLI features for local workload shell, S3 with CloudFront improvements, and API performance optimizations.", - slug: "v2-3-2", - }, - { - id: "v231", - version: "2.3.1", - date: "2025-12-01", - type: "feature", - title: "Image Analysis in Support", - description: - "Support for image analysis in the support bot, new documentation, and custom values for addons.", - slug: "v2-3-1", - }, -]; - -function formatDate(dateString) { - const date = new Date(dateString); - const day = date.getDate(); - const months = [ - "Ene", - "Feb", - "Mar", - "Abr", - "May", - "Jun", - "Jul", - "Ago", - "Sep", - "Oct", - "Nov", - "Dic", - ]; - const month = months[date.getMonth()]; - const year = date.getFullYear(); - return `${day} ${month} ${year}`; +function formatDate(dateString, locale) { + const date = new Date(dateString + "T00:00:00"); + return new Intl.DateTimeFormat(locale, { month: "short", day: "numeric", year: "numeric" }).format(date); } -function TypeBadge({ type }) { - const badgeClass = - type === "performance" ? styles.badgePerformance : styles.badgeFeature; - const label = type === "performance" ? "PERFORMANCE" : "FEATURE"; - return {label}; +function ChangelogEntry({ entry, idx, locale }) { + const version = entry.title.replace(/^Version\s*/i, ""); + + // Separate features (added/improved) from bug fixes + const featureItems = entry.sections + .filter((s) => s.type !== "fixed") + .flatMap((s) => s.items); + + const bugFixCount = entry.sections + .filter((s) => s.type === "fixed") + .reduce((acc, s) => acc + s.items.length, 0); + + return ( +
+
+
+
+ v{version} + {formatDate(entry.date, locale)} +
+
+ {featureItems.length > 0 && ( +
+

+ + Features + +

+
    + {featureItems.slice(0, 3).map((item, iIdx) => ( +
  • + {item.title} + {item.description && `: ${item.description}`} +
  • + ))} +
+
+ )} + + {bugFixCount > 0 && ( +
+ + + + {"+{count} Bug Fixes"} + + + +
+ )} + +
+ + + + Read more + {" →"} + + + +
+
+
+
+ ); } export default function RecentChangelog() { + const { recentChangelogs } = usePluginData("changelog-recent"); + const { i18n: { currentLocale } } = useDocusaurusContext(); + + if (!recentChangelogs || recentChangelogs.length === 0) { + return null; + } + return (
@@ -82,39 +106,8 @@ export default function RecentChangelog() {
- {changelogData.map((item, idx) => ( -
-
-
-
- v{item.version} - {formatDate(item.date)} -
-
-
- - - - {item.title} - - -
-

- - {item.description} - -

-
-
-
+ {recentChangelogs.map((entry, idx) => ( + ))}
diff --git a/src/components/Homepage/RecentChangelog.module.css b/src/components/Homepage/RecentChangelog.module.css index c6469582c..90c03e9fe 100644 --- a/src/components/Homepage/RecentChangelog.module.css +++ b/src/components/Homepage/RecentChangelog.module.css @@ -41,8 +41,7 @@ .timeline { position: relative; padding-left: 1.5rem; - max-width: 700px; - margin: 0 auto; + width: 100%; } .timeline::before { @@ -109,8 +108,8 @@ .card { background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 6px; - padding: 0.75rem 1rem; + border-radius: 8px; + padding: 0.85rem 1rem; transition: all 0.2s ease; } @@ -129,47 +128,98 @@ border-color: rgba(0, 0, 0, 0.12); } -.cardHeader { +/* Features section */ +.section { + margin-bottom: 0.75rem; +} + +.sectionLabel { + font-size: 0.7rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--custom-text-secondary, #a1a1aa); + margin: 0 0 0.3rem 0; +} + +/* Item list */ +.itemList { + margin: 0; + padding-left: 1.2rem; + list-style: disc; +} + +.item { + font-size: 0.78rem; + color: var(--custom-text-secondary, #a1a1aa); + line-height: 1.5; + margin-bottom: 0.15rem; +} + +.item strong { + color: var(--ifm-heading-color); + font-weight: 600; +} + +/* Bug fix row */ +.bugFixRow { display: flex; align-items: center; gap: 0.5rem; - margin-bottom: 0.35rem; + margin-bottom: 0.75rem; } -.cardTitle { - font-size: 0.9rem; - font-weight: 600; - color: var(--ifm-heading-color); +.bugFixCount { + font-size: 0.78rem; + color: var(--custom-text-secondary, #a1a1aa); } -.cardDescription { - font-size: 0.8rem; - color: var(--custom-text-secondary, #a1a1aa); - margin: 0; - line-height: 1.4; +/* Read more */ +.readMore { + margin-top: 0.5rem; +} + +.readMoreLink { + text-decoration: none; +} + +.readMoreLink:hover { + text-decoration: none; } /* Badges */ .badge { display: inline-block; - padding: 0.15rem 0.4rem; + padding: 0.15rem 0.45rem; border-radius: 3px; - font-size: 0.55rem; + font-size: 0.6rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; } -.badgeFeature { - background-color: var(--ifm-color-primary); +.badgeAdded { + background-color: #0090e8; color: #ffffff; } -.badgePerformance { - background-color: #f59e0b; +.badgeFixed { + background-color: #2caeff; color: #ffffff; } +.badgeReadMore { + background-color: transparent; + color: var(--ifm-color-primary); + border: 1px solid var(--ifm-color-primary); + transition: background-color 0.2s ease, color 0.2s ease; +} + +.readMoreLink:hover .badgeReadMore { + background-color: var(--ifm-color-primary); + color: #050608; +} + /* Footer */ .footer { display: flex; diff --git a/yarn.lock b/yarn.lock index 4456d54cf..a19594ef3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -135,6 +135,15 @@ "@algolia/requester-fetch" "5.40.1" "@algolia/requester-node-http" "5.40.1" +"@algolia/client-search@^4.9.1", "@algolia/client-search@>= 4.9.1 < 6": + version "4.24.0" + resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz" + integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== + dependencies: + "@algolia/client-common" "4.24.0" + "@algolia/requester-common" "4.24.0" + "@algolia/transporter" "4.24.0" + "@algolia/client-search@5.40.1": version "5.40.1" resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.40.1.tgz" @@ -145,15 +154,6 @@ "@algolia/requester-fetch" "5.40.1" "@algolia/requester-node-http" "5.40.1" -"@algolia/client-search@^4.9.1": - version "4.24.0" - resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz" - integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== - dependencies: - "@algolia/client-common" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" - "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz" @@ -256,7 +256,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz" integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== -"@babel/core@^7.21.3", "@babel/core@^7.25.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.13.0", "@babel/core@^7.21.3", "@babel/core@^7.25.9", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": version "7.28.4" resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz" integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== @@ -1627,7 +1627,7 @@ webpack "^5.95.0" webpackbar "^6.0.1" -"@docusaurus/core@3.9.2", "@docusaurus/core@^3.9.2": +"@docusaurus/core@^2.0.0-alpha.60 || ^2.0.0 || ^3.0.0", "@docusaurus/core@^3.9.2", "@docusaurus/core@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz" integrity sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw== @@ -1723,7 +1723,7 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.9.2", "@docusaurus/module-type-aliases@^3.9.2": +"@docusaurus/module-type-aliases@^3.9.2", "@docusaurus/module-type-aliases@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz" integrity sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew== @@ -1760,7 +1760,7 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.9.2": +"@docusaurus/plugin-content-docs@*", "@docusaurus/plugin-content-docs@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz" integrity sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg== @@ -1821,7 +1821,7 @@ react-json-view-lite "^2.3.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.9.2", "@docusaurus/plugin-google-analytics@^3.9.2": +"@docusaurus/plugin-google-analytics@^3.9.2", "@docusaurus/plugin-google-analytics@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz" integrity sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw== @@ -1852,7 +1852,7 @@ "@docusaurus/utils-validation" "3.9.2" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.9.2", "@docusaurus/plugin-sitemap@^3.9.2": +"@docusaurus/plugin-sitemap@^3.9.2", "@docusaurus/plugin-sitemap@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz" integrity sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw== @@ -1994,7 +1994,7 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.9.2", "@docusaurus/types@^3.9.2": +"@docusaurus/types@^3.9.2", "@docusaurus/types@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz" integrity sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q== @@ -2254,7 +2254,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== @@ -2398,7 +2398,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@8.1.0": +"@svgr/core@*", "@svgr/core@8.1.0": version "8.1.0" resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== @@ -2747,7 +2747,7 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.21": +"@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.21": version "4.17.23" resolved "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz" integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== @@ -2924,7 +2924,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@^18.0.0": +"@types/react@*", "@types/react@^18.0.0", "@types/react@>= 16.8.0 < 20.0.0", "@types/react@>=16": version "18.3.18" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz" integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ== @@ -2992,7 +2992,12 @@ resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== -"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2": +"@types/unist@^2": + version "2.0.11" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" + integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== + +"@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.11" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== @@ -3026,7 +3031,7 @@ resolved "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.3.tgz" integrity sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg== -"@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== @@ -3127,7 +3132,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== @@ -3182,7 +3187,7 @@ acorn-walk@^8.0.0: dependencies: acorn "^8.11.0" -acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.8.2: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.8.2: version "8.15.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -3200,7 +3205,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ai@5.0.76, ai@^5.0.30: +ai@^5.0.30, ai@5.0.76: version "5.0.76" resolved "https://registry.npmjs.org/ai/-/ai-5.0.76.tgz" integrity sha512-ZCxi1vrpyCUnDbtYrO/W8GLvyacV9689f00yshTIQ3mFFphbD7eIv40a2AOZBv3GGRA7SSRYIDnr56wcS/gyQg== @@ -3229,7 +3234,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.5: +ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3239,7 +3244,7 @@ ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.8.2, 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== @@ -3256,7 +3261,7 @@ algoliasearch-helper@^3.26.0: dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^5.28.0, algoliasearch@^5.37.0: +algoliasearch@^5.28.0, algoliasearch@^5.37.0, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6": version "5.40.1" resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.40.1.tgz" integrity sha512-iUNxcXUNg9085TJx0HJLjqtDE0r1RZ0GOGrt8KNQqQT5ugu8lZsHuMUYW/e0lHhq6xBvmktU9Bw4CXP9VQeKrg== @@ -3527,13 +3532,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" - integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== - dependencies: - balanced-match "^1.0.0" - braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" @@ -3541,7 +3539,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.26.0, browserslist@^4.26.3: +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.26.0, browserslist@^4.26.3, "browserslist@>= 4.21.0": version "4.26.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz" integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== @@ -3731,7 +3729,7 @@ chevrotain-allstar@~0.3.0: dependencies: lodash-es "^4.17.21" -chevrotain@~11.0.3: +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== @@ -3808,7 +3806,12 @@ clsx@^1.2.1: resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -clsx@^2.0.0, clsx@^2.1.1: +clsx@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +clsx@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -3860,11 +3863,6 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== -commander@7, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - commander@^10.0.0: version "10.0.1" resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" @@ -3880,11 +3878,21 @@ commander@^5.1.0: resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + 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== + common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" @@ -4146,7 +4154,7 @@ css-selector-parser@^1.0.0: css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" @@ -4231,7 +4239,7 @@ cssnano@^6.0.1, cssnano@^6.1.2: csso@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" @@ -4255,11 +4263,18 @@ cytoscape-fcose@^2.2.0: dependencies: cose-base "^2.2.0" -cytoscape@^3.29.3: +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" @@ -4267,13 +4282,6 @@ cytoscape@^3.29.3: dependencies: internmap "^1.0.0" -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: - 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-axis@3: version "3.0.0" resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" @@ -4383,16 +4391,16 @@ d3-hierarchy@3: 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-path@1 - 3", d3-path@3, d3-path@^3.1.0: - 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-polygon@3: version "3.0.1" resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" @@ -4440,13 +4448,6 @@ d3-scale@4: resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== -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-shape@^1.2.0: version "1.3.7" resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" @@ -4454,6 +4455,13 @@ d3-shape@^1.2.0: 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" @@ -4549,6 +4557,13 @@ debounce@^1.2.1: resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== +debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.1, debug@4: + version "4.4.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + debug@2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -4556,13 +4571,6 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.1: - version "4.4.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - decode-named-character-reference@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz" @@ -4640,16 +4648,16 @@ delaunator@5: dependencies: robust-predicates "^3.0.2" -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== - 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== + dequal@^2.0.0, dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -5228,7 +5236,7 @@ figures@^3.2.0: dependencies: escape-string-regexp "^1.0.5" -file-loader@^6.2.0: +file-loader@*, file-loader@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== @@ -5316,16 +5324,6 @@ fs-extra@^11.1.1, fs-extra@^11.2.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -5414,16 +5412,6 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^9.0.0, glob@^9.2.0: - version "9.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" @@ -5481,16 +5469,16 @@ got@^12.1.0: p-cancelable "^3.0.0" responselike "^3.0.0" -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + gray-matter@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" @@ -5867,6 +5855,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" @@ -5878,16 +5876,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.10" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz" @@ -5993,41 +5981,46 @@ infima@0.2.0-alpha.45: resolved "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz" integrity sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw== +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, 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== + inherits@2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== ini@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.4, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - inline-style-parser@0.2.4: version "0.2.4" resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz" integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== -"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== - 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== + invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" @@ -6035,16 +6028,16 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -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-alphabetical@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" @@ -6232,16 +6225,16 @@ is-yarn-global@^0.4.0: resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz" integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -6478,7 +6471,7 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" -lodash-es@4.17.21, lodash-es@^4.17.21: +lodash-es@^4.17.21, 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== @@ -6527,11 +6520,6 @@ lowercase-keys@^3.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -6801,7 +6789,7 @@ mdast-util-to-string@^4.0.0: mdn-data@2.0.14: version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== media-typer@0.3.0: @@ -7291,29 +7279,27 @@ 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, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - mime-db@^1.54.0: 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.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + mime-db@~1.33.0: version "1.33.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" +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.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -7327,6 +7313,27 @@ mime-types@^3.0.1: dependencies: mime-db "^1.54.0" +mime-types@~2.1.17, mime-types@2.1.18: + version "2.1.18" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + +mime-types@~2.1.24: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -7360,35 +7367,18 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.1.2, minimatch@^3.1.2: +minimatch@^3.1.2, minimatch@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - minimist@^1.2.0: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - mkdirp@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" @@ -7409,16 +7399,16 @@ mrmime@^2.0.0: resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz" integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== +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.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" @@ -7432,16 +7422,16 @@ nanoid@^3.3.11: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== -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@~0.6.4: version "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" @@ -7561,7 +7551,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== @@ -7750,7 +7740,7 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" -path-data-parser@0.1.0, path-data-parser@^0.1.0: +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== @@ -7775,13 +7765,12 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.6.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== +path-to-regexp@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + isarray "0.0.1" path-to-regexp@0.1.12: version "0.1.12" @@ -7793,13 +7782,6 @@ path-to-regexp@3.3.0: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== -path-to-regexp@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz" - integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== - dependencies: - isarray "0.0.1" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -7845,7 +7827,7 @@ pkg-types@^2.3.0: exsolve "^1.0.7" pathe "^2.0.3" -points-on-curve@0.2.0, points-on-curve@^0.2.0: +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== @@ -8409,7 +8391,7 @@ postcss-zindex@^6.0.2: resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz" integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== -postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: +"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.2, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.6, postcss@^8.5.4: version "8.5.6" resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -8542,16 +8524,21 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== +range-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== + raw-body@2.5.2: version "2.5.2" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" @@ -8572,7 +8559,7 @@ rc@1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@^18.0.0: +react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.4 || ^17 || ^18 || ^19", react-dom@^18.0.0, "react-dom@^18.0.0 || ^19.0.0", "react-dom@>= 16.8.0 < 20.0.0": version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -8618,7 +8605,7 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" -react-loadable@^5.5.0: +react-loadable@*, react-loadable@^5.5.0: version "5.5.0" resolved "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz" integrity sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg== @@ -8657,7 +8644,7 @@ react-router-dom@^5.3.4: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.4, react-router@^5.3.4: +react-router@^5.3.4, react-router@>=5, react-router@5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== @@ -8672,7 +8659,7 @@ react-router@5.3.4, react-router@^5.3.4: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react@^18.0.0: +react@*, "react@^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.4 || ^17 || ^18 || ^19", "react@^18 || ^19 || ^19.0.0-rc", react@^18.0.0, "react@^18.0.0 || ^19.0.0", react@^18.3.1, "react@>= 16.8.0 < 20.0.0", react@>=0.14.9, react@>=15, react@>=16, react@>=16.0.0: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -8987,13 +8974,6 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== -rimraf@^4.0.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" - integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== - dependencies: - glob "^9.2.0" - robust-predicates@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" @@ -9036,7 +9016,7 @@ rw@1: resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -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== @@ -9068,7 +9048,16 @@ schema-dts@^1.1.2: resolved "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz" integrity sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg== -schema-utils@^3.0.0, schema-utils@^3.2.0: +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -9087,7 +9076,7 @@ schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.2.0, schema-utils@^4.3 ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -search-insights@^2.0.0: +search-insights@^2.0.0, "search-insights@>= 1 < 3": version "2.17.3" resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz" integrity sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ== @@ -9364,9 +9353,14 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +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== source-map@^0.7.0: @@ -9374,6 +9368,11 @@ source-map@^0.7.0: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz" integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" @@ -9419,25 +9418,66 @@ srcset@^4.0.0: stable@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -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@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + std-env@^3.7.0: version "3.10.0" resolved "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz" integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string_decoder@^1.1.1: + 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@^1.0.2 || 2 || 3 || 4": + 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: + 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.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.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== @@ -9455,20 +9495,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: - 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" - stringify-entities@^4.0.0: version "4.0.4" resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" @@ -9571,9 +9597,9 @@ svg-parser@^2.0.4: resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^2.8.0, svgo@^3.0.2, svgo@^3.2.0: +svgo@^3.0.2, svgo@^3.2.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" @@ -9703,7 +9729,7 @@ ts-dedent@^2.2.0: resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.6.0: +tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.6.0, tslib@2: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -9738,7 +9764,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.0.0: +typescript@^4.0.0, typescript@>=4.9.5: version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -9899,7 +9925,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -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== @@ -10187,7 +10213,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.88.1, webpack@^5.95.0: +"webpack@^4.0.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.1, webpack@^5.95.0, "webpack@>=4.41.1 || 5.x", webpack@>=5, "webpack@3 || 4 || 5": version "5.97.1" resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== @@ -10230,7 +10256,7 @@ webpackbar@^6.0.1: std-env "^3.7.0" wrap-ansi "^7.0.0" -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== @@ -10347,7 +10373,7 @@ yocto-queue@^1.0.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz" integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== -zod@^4.1.8: +"zod@^3.25.76 || ^4.1.8", zod@^4.1.8: version "4.1.12" resolved "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz" integrity sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ== From 98455a0c14bdc85b57c792e5133bf051a9ea10b7 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:08:56 -0300 Subject: [PATCH 02/45] Publish version 2.7.0 2026-03-17 --- content/changelog/en/2026-03-17V2.7.0.md | 201 +++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 content/changelog/en/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17V2.7.0.md b/content/changelog/en/2026-03-17V2.7.0.md new file mode 100644 index 000000000..2901ba704 --- /dev/null +++ b/content/changelog/en/2026-03-17V2.7.0.md @@ -0,0 +1,201 @@ + +--- +title: Version 2.7.0 +authors: sleakops +tags: [release] +--- + +import Admonition from '@theme/Admonition'; + +# Version 2.7.0 + +`minor release` · March 17, 2026 + +--- + +:::danger Breaking changes +- **Headlamp Addon Integration Contains Permission-Dependent Features:** Access to features within the Headlamp addon now strictly follows user roles. Users without the required permissions can no longer access certain actions like opening a shell or restarting pods, and the quick-create environment button in the Project form is now only visible to users with "Settings" permission. Review your role assignments if features are missing after upgrade. +- **Deprecation Label Displayed on Addons:** Addons may now display a “Deprecated” badge in both the list and detail views. Deprecated addons should not be installed in new environments. Maintain both old and new Loki simultaneously if transitioning between versions to ensure log persistence. +--- + +## 🚀 New Features + +- **Loki v2 Addon with Grafana Alloy Support** + You can now deploy the new Loki v2 addon, leveraging Grafana Alloy for improved logging reliability. Both the old and new Loki addons are supported in parallel, with clear labeling to aid transition. + +- **Dedicated Inbox and Diagnostic Ticketing Workflow** + Diagnostic tickets are now separated from standard support tickets, featuring a dedicated backend inbox and frontend interfaces for clearer triage and automation. A new screen exclusively lists diagnostic tickets, filterable by resource. + +- **Integrated Headlamp Addon and Seamless Authentication** + Headlamp is now available as an addon, offering seamless access with tokens generated for each user. Open Headlamp directly from the addon list using integrated authentication, with tokens managed and securely persisted per user session. + +- **Expose Detected Projects in Dockertron** + Dockertron backend and frontend now list all candidate projects (detected in GitHub repositories), allowing users to select which app to containerize via an interactive confirmation UI. + +--- + +## ✨ Improvements + +- **Enhanced Dockertron Project Creation Flow** + The Project creation wizard now integrates Dockertron, letting users automatically scan, generate, and containerize projects from one place. UI adjustments make Dockertron options clearer and position required fields for an improved user experience. + +- **Cluster Upgrade Scheduling Visibility** + Dashboard cluster cards now show when an upgrade is scheduled or pending, reducing forgotten upgrades and enabling better operational planning. + +- **Mandatory Fields Marked in Forms** + All generic forms now visually indicate which fields are required, making data entry clearer and reducing user errors. + +- **Addons Deprecated Status Display** + Addons in the UI list and drawer now display a badge if marked as deprecated, providing clear lifecycle visibility for informed decisions. + +- **Updated YAML Editor for Addon Configuration** + The custom YAML values field in Addon drawers now uses a code editor for better readability and editability, consistent with the editor used in Extra Charts. + +- **Environment Selector Improvements in Project Creation** + When creating an environment from the Project form, the new environment is automatically preselected. The quick-create button is shown only to users with appropriate permissions. + +- **Account Filter Reset on Switch** + Project and Environment filters are cleared automatically when switching between accounts, preventing confusing or empty screens. + +- **Cluster Access Card Improvements** + The "Get Access" card on the dashboard has been updated with a new proposed design for a better user experience. + +- **Separate Fixtures by Addon** + Fixtures are now organized by addon, paving the way for future Loki enhancements and simplifying dependency management. + +- **Dockertron Process List UI** + You can now view a full list of Dockertron processes in a dedicated UI table for better tracking and management. + +- **Addition of Deprecated Field in Addon Schema** + Addons now include a "deprecated" attribute in their schema, with the frontend displaying this status where relevant. + +--- + +## 🐛 Bug Fixes + +- **Resource Name Truncation Fixed in Batched Creation** + Creating multiple resources with long names now shortens the project/environment prefix, avoiding duplicate name collisions and ensuring all resources are properly applied. + +- **Correct Alias Deletion Status in Dashboard** + Deleted web service aliases now correctly reflect their state, synchronizing dashboard and backend domain status. + +- **URL Update on Domain Change in Recycling** + Changing an environment's domain now updates all associated service URLs and reliably triggers a new release, eliminating the previous 400 error. + +- **Correct Cluster Power-Off Validation** + Turning off a cluster no longer incorrectly fails due to deletion protection settings on dependencies. + +- **Prevent ProjectEnv Transition Errors When Powering On Cluster** + The platform now blocks volume creation if the cluster is shut down, preventing erroneous "updating" states and restoring cluster startup. + +- **Project Creation Completion with Dockertron Directs to Proper Screen** + After finishing a project through Dockertron, users are redirected to the Dockertron executions screen with the new project loaded, correcting prior navigation issues. + +- **Account Filter State Cleared on Account Switch** + Filters in project and environment lists reset when switching accounts, preventing empty or invalid screen states. + +- **Aurora Read Replica Subnet Issue Fixed** + Public read replicas in Aurora now use the correct subnet configuration, aligning with previous RDS fixes. + +--- + + +--- +title: Versión 2.7.0 +authors: sleakops +tags: [release] +--- + +import Admonition from '@theme/Admonition'; + +# Versión 2.7.0 + +`minor release` · 17 de marzo de 2026 + +--- + +:::danger Cambios que requieren atención +- **Integración del Addon Headlamp con cambios según permisos de usuario:** El acceso a funciones dentro del addon Headlamp ahora depende estrictamente de los roles del usuario. Los usuarios sin permisos ya no podrán realizar acciones como abrir la consola o reiniciar pods, y el botón de creación rápida de entorno en el formulario de Proyecto solo estará visible para quienes tengan permiso de “Settings”. Revise la asignación de roles si no encuentra estas funcionalidades tras actualizar. +- **Visualización de badges de deprecación en los addons:** Ahora puede verse una etiqueta “Deprecated” en la lista y en el detalle de los addons. Los addons marcados como deprecated no deben instalarse en entornos nuevos. En caso de migrar entre versiones de Loki, mantenga ambos addons activos el tiempo necesario para garantizar la persistencia de logs. +--- + +## 🚀 Nuevas funcionalidades + +- **Nuevo addon Loki v2 con soporte para Grafana Alloy** + Ahora es posible desplegar el nuevo addon Loki v2, que utiliza Grafana Alloy para una mayor confiabilidad en los logs. Se admiten ambos addons, el anterior y el nuevo, pudiendo usarlos en paralelo y con etiquetado claro para facilitar la transición. + +- **Separación de tickets y bandeja dedicada para autodiagnóstico** + Los tickets de autodiagnóstico ahora se separan de los de soporte tradicional, con una bandeja backend y pantallas frontend exclusivas para mejorar el triage y la automatización. Una nueva pantalla muestra únicamente los tickets de autodiagnóstico y permite filtrar por recurso. + +- **Addon Headlamp integrado con autenticación automática** + Headlamp ahora está disponible como addon, ofreciendo acceso directo desde la lista de addons usando tokens personalizados generados por la plataforma. La autenticación se gestiona de forma segura por sesión de usuario. + +- **Visualización de proyectos detectados en Dockertron** + Tanto el backend como el frontend de Dockertron ahora muestran la lista completa de proyectos detectados en repositorios de GitHub, permitiendo al usuario elegir cuál desea contenerizar mediante una interfaz interactiva de confirmación. + +--- + +## ✨ Mejoras + +- **Flujo mejorado para crear proyectos con Dockertron** + El wizard de creación de proyectos ahora integra Dockertron, permitiendo escanear, generar y contenerizar automáticamente desde un solo lugar. Se incorporaron ajustes en la interfaz para mayor claridad y mejor experiencia de usuario. + +- **Visibilidad de upgrades pendientes en los clusters** + Ahora las tarjetas de cluster en el Dashboard muestran cuando hay upgrades programados o pendientes, ayudando a una mejor planificación operativa. + +- **Campos obligatorios marcados en formularios** + Todos los formularios genéricos ahora muestran visualmente cuáles campos son obligatorios, ayudando a completar la información correctamente y reducir errores. + +- **Visualización del estado deprecado de addons** + Los addons muestran un badge si están marcados como deprecated tanto en la lista como en el drawer, brindando visibilidad clara sobre el ciclo de vida para mejores decisiones. + +- **Editor YAML actualizado para configuración avanzada de addons** + El campo de valores personalizados YAML en los addons ahora utiliza un editor de código especializado, mejorando la legibilidad y la edición avanzada al igual que en Extra Charts. + +- **Mejoras en el selector de entornos al crear proyectos** + Al crear un entorno desde el formulario de Proyecto, el nuevo entorno aparece preseleccionado automáticamente. El botón de creación rápida solo se muestra a usuarios con permisos adecuados. + +- **Reseteo automático de filtros al cambiar de cuenta** + Los filtros de Proyecto y Entorno se limpian automáticamente al cambiar de cuenta, evitando pantallas vacías o inconsistentes. + +- **Mejoras en la tarjeta "Get Access" de Dashboard** + La tarjeta "Get Access" en el dashboard fue rediseñada según una nueva propuesta para mejorar la experiencia. + +- **Separación de fixtures por addon** + Los fixtures ahora están organizados por addon, facilitando mejoras futuras de Loki y haciendo más simple la gestión de dependencias. + +- **Lista de procesos Dockertron en interfaz** + Ahora puede visualizar la lista completa de procesos de Dockertron en una tabla dedicada para mejor control y seguimiento. + +- **Nuevo campo deprecated en el schema de Addons** + Los addons incorporan el atributo “deprecated” en su esquema y esta información se muestra en los lugares correspondientes del frontend. + +--- + +## 🐛 Correcciones + +- **Solución al truncamiento de nombres en creación masiva de recursos** + Al crear múltiples recursos con nombres largos, ahora se acorta solo el prefijo de proyecto/entorno, evitando colisiones por nombres duplicados y asegurando la creación correcta de todos los recursos. + +- **Corrección del estado eliminado en alias de Dashboard** + Ahora los alias eliminados de servicios web muestran correctamente el estado eliminado, sincronizando backend y Dashboard. + +- **Actualización de URLs al cambiar el dominio en reciclado** + Cambiar el dominio de un Environment ahora actualiza todas las URLs de los servicios y genera correctamente un nuevo Release, resolviendo el error 400 previo. + +- **Validación correcta al apagar un cluster** + Apagar un cluster ya no falla de forma incorrecta debido a la validación de deletion protection en dependencias. + +- **Prevención de errores por transición de projectEnv al encender cluster** + El sistema ahora bloquea la creación de volúmenes si el cluster está apagado, evitando estados erróneos y restaurando el encendido correcto del cluster. + +- **Redirección correcta al finalizar creación de proyecto con Dockertron** + Tras finalizar la creación de un proyecto mediante Dockertron, el usuario es redirigido correctamente a la pantalla de ejecuciones de Dockertron con el nuevo proyecto abierto. + +- **Reseteo de filtros al cambiar de cuenta** + Los filtros de proyectos y entornos se limpian automáticamente al cambiar de cuenta, previniendo pantallas vacías o inconsistentes. + +- **Solución en subnet de Read Replica pública en Aurora** + Las réplicas públicas de lectura en Aurora ahora utilizan la subred correcta, alineándose con los fixes aplicados previamente para RDS. + +--- From 2dfc4539ba418e721a5afda8f5e9e71146052121 Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 16:30:57 -0300 Subject: [PATCH 03/45] Delete documentation --- content/changelog/en/2026-03-17V2.7.0.md | 201 ----------------------- 1 file changed, 201 deletions(-) delete mode 100644 content/changelog/en/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17V2.7.0.md b/content/changelog/en/2026-03-17V2.7.0.md deleted file mode 100644 index 2901ba704..000000000 --- a/content/changelog/en/2026-03-17V2.7.0.md +++ /dev/null @@ -1,201 +0,0 @@ - ---- -title: Version 2.7.0 -authors: sleakops -tags: [release] ---- - -import Admonition from '@theme/Admonition'; - -# Version 2.7.0 - -`minor release` · March 17, 2026 - ---- - -:::danger Breaking changes -- **Headlamp Addon Integration Contains Permission-Dependent Features:** Access to features within the Headlamp addon now strictly follows user roles. Users without the required permissions can no longer access certain actions like opening a shell or restarting pods, and the quick-create environment button in the Project form is now only visible to users with "Settings" permission. Review your role assignments if features are missing after upgrade. -- **Deprecation Label Displayed on Addons:** Addons may now display a “Deprecated” badge in both the list and detail views. Deprecated addons should not be installed in new environments. Maintain both old and new Loki simultaneously if transitioning between versions to ensure log persistence. ---- - -## 🚀 New Features - -- **Loki v2 Addon with Grafana Alloy Support** - You can now deploy the new Loki v2 addon, leveraging Grafana Alloy for improved logging reliability. Both the old and new Loki addons are supported in parallel, with clear labeling to aid transition. - -- **Dedicated Inbox and Diagnostic Ticketing Workflow** - Diagnostic tickets are now separated from standard support tickets, featuring a dedicated backend inbox and frontend interfaces for clearer triage and automation. A new screen exclusively lists diagnostic tickets, filterable by resource. - -- **Integrated Headlamp Addon and Seamless Authentication** - Headlamp is now available as an addon, offering seamless access with tokens generated for each user. Open Headlamp directly from the addon list using integrated authentication, with tokens managed and securely persisted per user session. - -- **Expose Detected Projects in Dockertron** - Dockertron backend and frontend now list all candidate projects (detected in GitHub repositories), allowing users to select which app to containerize via an interactive confirmation UI. - ---- - -## ✨ Improvements - -- **Enhanced Dockertron Project Creation Flow** - The Project creation wizard now integrates Dockertron, letting users automatically scan, generate, and containerize projects from one place. UI adjustments make Dockertron options clearer and position required fields for an improved user experience. - -- **Cluster Upgrade Scheduling Visibility** - Dashboard cluster cards now show when an upgrade is scheduled or pending, reducing forgotten upgrades and enabling better operational planning. - -- **Mandatory Fields Marked in Forms** - All generic forms now visually indicate which fields are required, making data entry clearer and reducing user errors. - -- **Addons Deprecated Status Display** - Addons in the UI list and drawer now display a badge if marked as deprecated, providing clear lifecycle visibility for informed decisions. - -- **Updated YAML Editor for Addon Configuration** - The custom YAML values field in Addon drawers now uses a code editor for better readability and editability, consistent with the editor used in Extra Charts. - -- **Environment Selector Improvements in Project Creation** - When creating an environment from the Project form, the new environment is automatically preselected. The quick-create button is shown only to users with appropriate permissions. - -- **Account Filter Reset on Switch** - Project and Environment filters are cleared automatically when switching between accounts, preventing confusing or empty screens. - -- **Cluster Access Card Improvements** - The "Get Access" card on the dashboard has been updated with a new proposed design for a better user experience. - -- **Separate Fixtures by Addon** - Fixtures are now organized by addon, paving the way for future Loki enhancements and simplifying dependency management. - -- **Dockertron Process List UI** - You can now view a full list of Dockertron processes in a dedicated UI table for better tracking and management. - -- **Addition of Deprecated Field in Addon Schema** - Addons now include a "deprecated" attribute in their schema, with the frontend displaying this status where relevant. - ---- - -## 🐛 Bug Fixes - -- **Resource Name Truncation Fixed in Batched Creation** - Creating multiple resources with long names now shortens the project/environment prefix, avoiding duplicate name collisions and ensuring all resources are properly applied. - -- **Correct Alias Deletion Status in Dashboard** - Deleted web service aliases now correctly reflect their state, synchronizing dashboard and backend domain status. - -- **URL Update on Domain Change in Recycling** - Changing an environment's domain now updates all associated service URLs and reliably triggers a new release, eliminating the previous 400 error. - -- **Correct Cluster Power-Off Validation** - Turning off a cluster no longer incorrectly fails due to deletion protection settings on dependencies. - -- **Prevent ProjectEnv Transition Errors When Powering On Cluster** - The platform now blocks volume creation if the cluster is shut down, preventing erroneous "updating" states and restoring cluster startup. - -- **Project Creation Completion with Dockertron Directs to Proper Screen** - After finishing a project through Dockertron, users are redirected to the Dockertron executions screen with the new project loaded, correcting prior navigation issues. - -- **Account Filter State Cleared on Account Switch** - Filters in project and environment lists reset when switching accounts, preventing empty or invalid screen states. - -- **Aurora Read Replica Subnet Issue Fixed** - Public read replicas in Aurora now use the correct subnet configuration, aligning with previous RDS fixes. - ---- - - ---- -title: Versión 2.7.0 -authors: sleakops -tags: [release] ---- - -import Admonition from '@theme/Admonition'; - -# Versión 2.7.0 - -`minor release` · 17 de marzo de 2026 - ---- - -:::danger Cambios que requieren atención -- **Integración del Addon Headlamp con cambios según permisos de usuario:** El acceso a funciones dentro del addon Headlamp ahora depende estrictamente de los roles del usuario. Los usuarios sin permisos ya no podrán realizar acciones como abrir la consola o reiniciar pods, y el botón de creación rápida de entorno en el formulario de Proyecto solo estará visible para quienes tengan permiso de “Settings”. Revise la asignación de roles si no encuentra estas funcionalidades tras actualizar. -- **Visualización de badges de deprecación en los addons:** Ahora puede verse una etiqueta “Deprecated” en la lista y en el detalle de los addons. Los addons marcados como deprecated no deben instalarse en entornos nuevos. En caso de migrar entre versiones de Loki, mantenga ambos addons activos el tiempo necesario para garantizar la persistencia de logs. ---- - -## 🚀 Nuevas funcionalidades - -- **Nuevo addon Loki v2 con soporte para Grafana Alloy** - Ahora es posible desplegar el nuevo addon Loki v2, que utiliza Grafana Alloy para una mayor confiabilidad en los logs. Se admiten ambos addons, el anterior y el nuevo, pudiendo usarlos en paralelo y con etiquetado claro para facilitar la transición. - -- **Separación de tickets y bandeja dedicada para autodiagnóstico** - Los tickets de autodiagnóstico ahora se separan de los de soporte tradicional, con una bandeja backend y pantallas frontend exclusivas para mejorar el triage y la automatización. Una nueva pantalla muestra únicamente los tickets de autodiagnóstico y permite filtrar por recurso. - -- **Addon Headlamp integrado con autenticación automática** - Headlamp ahora está disponible como addon, ofreciendo acceso directo desde la lista de addons usando tokens personalizados generados por la plataforma. La autenticación se gestiona de forma segura por sesión de usuario. - -- **Visualización de proyectos detectados en Dockertron** - Tanto el backend como el frontend de Dockertron ahora muestran la lista completa de proyectos detectados en repositorios de GitHub, permitiendo al usuario elegir cuál desea contenerizar mediante una interfaz interactiva de confirmación. - ---- - -## ✨ Mejoras - -- **Flujo mejorado para crear proyectos con Dockertron** - El wizard de creación de proyectos ahora integra Dockertron, permitiendo escanear, generar y contenerizar automáticamente desde un solo lugar. Se incorporaron ajustes en la interfaz para mayor claridad y mejor experiencia de usuario. - -- **Visibilidad de upgrades pendientes en los clusters** - Ahora las tarjetas de cluster en el Dashboard muestran cuando hay upgrades programados o pendientes, ayudando a una mejor planificación operativa. - -- **Campos obligatorios marcados en formularios** - Todos los formularios genéricos ahora muestran visualmente cuáles campos son obligatorios, ayudando a completar la información correctamente y reducir errores. - -- **Visualización del estado deprecado de addons** - Los addons muestran un badge si están marcados como deprecated tanto en la lista como en el drawer, brindando visibilidad clara sobre el ciclo de vida para mejores decisiones. - -- **Editor YAML actualizado para configuración avanzada de addons** - El campo de valores personalizados YAML en los addons ahora utiliza un editor de código especializado, mejorando la legibilidad y la edición avanzada al igual que en Extra Charts. - -- **Mejoras en el selector de entornos al crear proyectos** - Al crear un entorno desde el formulario de Proyecto, el nuevo entorno aparece preseleccionado automáticamente. El botón de creación rápida solo se muestra a usuarios con permisos adecuados. - -- **Reseteo automático de filtros al cambiar de cuenta** - Los filtros de Proyecto y Entorno se limpian automáticamente al cambiar de cuenta, evitando pantallas vacías o inconsistentes. - -- **Mejoras en la tarjeta "Get Access" de Dashboard** - La tarjeta "Get Access" en el dashboard fue rediseñada según una nueva propuesta para mejorar la experiencia. - -- **Separación de fixtures por addon** - Los fixtures ahora están organizados por addon, facilitando mejoras futuras de Loki y haciendo más simple la gestión de dependencias. - -- **Lista de procesos Dockertron en interfaz** - Ahora puede visualizar la lista completa de procesos de Dockertron en una tabla dedicada para mejor control y seguimiento. - -- **Nuevo campo deprecated en el schema de Addons** - Los addons incorporan el atributo “deprecated” en su esquema y esta información se muestra en los lugares correspondientes del frontend. - ---- - -## 🐛 Correcciones - -- **Solución al truncamiento de nombres en creación masiva de recursos** - Al crear múltiples recursos con nombres largos, ahora se acorta solo el prefijo de proyecto/entorno, evitando colisiones por nombres duplicados y asegurando la creación correcta de todos los recursos. - -- **Corrección del estado eliminado en alias de Dashboard** - Ahora los alias eliminados de servicios web muestran correctamente el estado eliminado, sincronizando backend y Dashboard. - -- **Actualización de URLs al cambiar el dominio en reciclado** - Cambiar el dominio de un Environment ahora actualiza todas las URLs de los servicios y genera correctamente un nuevo Release, resolviendo el error 400 previo. - -- **Validación correcta al apagar un cluster** - Apagar un cluster ya no falla de forma incorrecta debido a la validación de deletion protection en dependencias. - -- **Prevención de errores por transición de projectEnv al encender cluster** - El sistema ahora bloquea la creación de volúmenes si el cluster está apagado, evitando estados erróneos y restaurando el encendido correcto del cluster. - -- **Redirección correcta al finalizar creación de proyecto con Dockertron** - Tras finalizar la creación de un proyecto mediante Dockertron, el usuario es redirigido correctamente a la pantalla de ejecuciones de Dockertron con el nuevo proyecto abierto. - -- **Reseteo de filtros al cambiar de cuenta** - Los filtros de proyectos y entornos se limpian automáticamente al cambiar de cuenta, previniendo pantallas vacías o inconsistentes. - -- **Solución en subnet de Read Replica pública en Aurora** - Las réplicas públicas de lectura en Aurora ahora utilizan la subred correcta, alineándose con los fixes aplicados previamente para RDS. - ---- From 86a63f502ea1dcedd3256baf899ecf47ad150d31 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:35:35 -0300 Subject: [PATCH 04/45] Publish version 2.7.0 2026-03-17 --- content/changelog/en/2026-03-17V2.7.0.md | 85 ++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 content/changelog/en/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17V2.7.0.md b/content/changelog/en/2026-03-17V2.7.0.md new file mode 100644 index 000000000..4139cfeba --- /dev/null +++ b/content/changelog/en/2026-03-17V2.7.0.md @@ -0,0 +1,85 @@ +--- +title: Version 2.7.0 +authors: SleakOps Team +tags: [release] +--- + +`minor release` · March 17, 2026 + +--- + +:::danger Breaking changes +- **Environment creation permissions in Projects:** The quick-create environment button is now only visible for users with 'Settings' permissions. Users without this role will no longer see the button and must request access if needed. +- **Deprecated Addons Visibility:** Addons now display a "Deprecated" label, reflecting their lifecycle. Users should avoid installing deprecated addons and start planning migrations. +--- + +## 🚀 New Features + +- **Loki v2 Addon for improved logging** + Deploy the latest Loki v2 addon with Grafana Alloy support, fixing recurring stability issues and providing a modern solution for log collection and persistence. The traditional Loki remains available for customers who require log continuity. +- **Headlamp integration as an Addon** + Access the Headlamp IDE directly from the Addons list, with automatic authentication and service account token assignment based on the user's role. This streamlines Kubernetes cluster management and enhances the onboarding experience. +- **New dedicated autodiagnostic inbox and UI** + Autodiagnostic tickets are now routed to a dedicated inbox and displayed in a new, resource-focused diagnostics screen. This separation improves support triage, resource tracking, and user workflow clarity. + +--- + +## ✨ Improvements + +- **Project creation flow with Dockertron integration** + Users can now automatically generate Dockerfiles with Dockertron during project setup, ensuring a smoother onboarding for projects without existing Docker configurations. GenAI-powered quizzes help gather necessary context, and successful generation triggers helpful notifications. +- **Selectable environment during Project creation** + When creating an environment from within the Project form, the newly created environment is now automatically pre-selected in the Project's environment selector. Only users with 'Settings' permissions will see the quick-create button. +- **Visual indicators for required fields in forms** + All generic forms now visibly mark required fields with a consistent visual indicator, reducing confusion and helping users complete forms efficiently. +- **Enhanced Dockertron user interface in Projects** + The Project UI has been updated for Dockertron: clearer button texts, improved button visibility when no projects exist, and prioritizing the Dockerfile field in creation forms. +- **Addons now show "Deprecated" status** + Addons that have been deprecated are clearly labeled in both the list and detail views to inform users of their lifecycle status. +- **Cluster upgrade scheduling indicator** + Cluster cards now show visual badges or icons for scheduled or pending upgrades, making future actions more visible and helping users plan accordingly. +- **Custom YAML values editor in Addons** + The advanced configuration of Addons now uses a code editor with YAML support, offering a better editing experience and reducing formatting errors. +- **UI changes when switching accounts** + Project and Environment filters are now automatically reset when changing accounts, preventing data inconsistencies and eliminating "empty screen" scenarios. +- **Visualize detected projects in Dockertron** + After analyzing a repository, users can view and select from detected projects before generating Dockerfiles, ensuring more accurate containerization and easier project management. +- **Backend exposes multiple detected projects** + The Dockertron backend can now analyze GitHub repositories with multiple projects, exposing all valid candidates for Dockerization and speeding up configuration for monorepos. +- **Frontend and backend separation for autodiagnostic tickets** + Autodiagnostic support tickets are now routed through a separate frontend and backend flow, improving filtering, resource tracking, and user experience. The diagnostic panel supports expansion and fullscreen mode for clarity. +- **Dedicated notification system for process completion** + Users receive notifications when backend processes, such as Dockerization, complete successfully or encounter errors, enabling timely follow-up actions. +- **Improved resource name handling for CronJobs** + The resource name truncation logic for CronJobs now shortens the Project/Environment combination rather than the individual CronJob name, eliminating duplicate names and deployment issues. +- **Table for Dockertron process visualization** + All Dockertron processes can now be listed and monitored via a dedicated table in the UI, providing greater visibility and traceability. +- **Addon documentation for AI workflows** + New documentation enables AI systems to quickly implement new Addons for both EKS Addon and Helm Release types, facilitating future extensibility. +- **Fixtures separated by addon** + Fixtures are now organized by addon, streamlining future development and testability (including for upcoming Loki integration). +- **"Get Access" card update proposal in Dashboard** + The design proposal for an upgraded "Get Access" card is now implemented in the dashboard UI, improving cluster onboarding engagement. +- **Project layout decoupled from Dockertron for agnostic experience** + Dockertron UI no longer depends on the Project layout, offering a more flexible and agnostic experience. + +--- + +## 🐛 Bug Fixes + +- **Volume creation error during cluster shutdown** + Fixed an issue preventing cluster startup when ProjectEnvs were left in a transitional state after volume creation attempts during shutdown. Now, volume creation is disallowed when the cluster is off. +- **Cluster shutdown blocked by dependency protection** + Allow clusters to be shut down even when dependencies have deletion protection, resolving an incorrect validation that previously blocked the operation. +- **Resource name truncation for CronJobs** + Resolved a bug causing resource names to be truncated incorrectly, which previously led to duplicate job names and only one job being applied. +- **Domain change error 400 on recylink** + Fixed the 400 error thrown when updating an Environment's domain, ensuring URLs update correctly and required deployments trigger as expected. +- **Dashboard alias state after web service deletion** + Ensured that alias records for deleted web services are correctly cleaned up in both frontend and backend, so the dashboard reflects their true removal state. +- **Project creation with Dockertron did not redirect** + Resolved an issue where users were not redirected to the Dockertron executions screen after creating a project with Dockertron enabled. The correct post-creation navigation now occurs. +- **Dockertron processes API now returns all records** + The Dockertron process API has been improved to list all active and historic processes, giving users complete traceability. + +--- From 4b5af90702a9617237625ea1a7ec727afcc07012 Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 16:46:23 -0300 Subject: [PATCH 05/45] Delete documentation --- content/changelog/en/2026-03-17V2.7.0.md | 85 ------------------------ 1 file changed, 85 deletions(-) delete mode 100644 content/changelog/en/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17V2.7.0.md b/content/changelog/en/2026-03-17V2.7.0.md deleted file mode 100644 index 4139cfeba..000000000 --- a/content/changelog/en/2026-03-17V2.7.0.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Version 2.7.0 -authors: SleakOps Team -tags: [release] ---- - -`minor release` · March 17, 2026 - ---- - -:::danger Breaking changes -- **Environment creation permissions in Projects:** The quick-create environment button is now only visible for users with 'Settings' permissions. Users without this role will no longer see the button and must request access if needed. -- **Deprecated Addons Visibility:** Addons now display a "Deprecated" label, reflecting their lifecycle. Users should avoid installing deprecated addons and start planning migrations. ---- - -## 🚀 New Features - -- **Loki v2 Addon for improved logging** - Deploy the latest Loki v2 addon with Grafana Alloy support, fixing recurring stability issues and providing a modern solution for log collection and persistence. The traditional Loki remains available for customers who require log continuity. -- **Headlamp integration as an Addon** - Access the Headlamp IDE directly from the Addons list, with automatic authentication and service account token assignment based on the user's role. This streamlines Kubernetes cluster management and enhances the onboarding experience. -- **New dedicated autodiagnostic inbox and UI** - Autodiagnostic tickets are now routed to a dedicated inbox and displayed in a new, resource-focused diagnostics screen. This separation improves support triage, resource tracking, and user workflow clarity. - ---- - -## ✨ Improvements - -- **Project creation flow with Dockertron integration** - Users can now automatically generate Dockerfiles with Dockertron during project setup, ensuring a smoother onboarding for projects without existing Docker configurations. GenAI-powered quizzes help gather necessary context, and successful generation triggers helpful notifications. -- **Selectable environment during Project creation** - When creating an environment from within the Project form, the newly created environment is now automatically pre-selected in the Project's environment selector. Only users with 'Settings' permissions will see the quick-create button. -- **Visual indicators for required fields in forms** - All generic forms now visibly mark required fields with a consistent visual indicator, reducing confusion and helping users complete forms efficiently. -- **Enhanced Dockertron user interface in Projects** - The Project UI has been updated for Dockertron: clearer button texts, improved button visibility when no projects exist, and prioritizing the Dockerfile field in creation forms. -- **Addons now show "Deprecated" status** - Addons that have been deprecated are clearly labeled in both the list and detail views to inform users of their lifecycle status. -- **Cluster upgrade scheduling indicator** - Cluster cards now show visual badges or icons for scheduled or pending upgrades, making future actions more visible and helping users plan accordingly. -- **Custom YAML values editor in Addons** - The advanced configuration of Addons now uses a code editor with YAML support, offering a better editing experience and reducing formatting errors. -- **UI changes when switching accounts** - Project and Environment filters are now automatically reset when changing accounts, preventing data inconsistencies and eliminating "empty screen" scenarios. -- **Visualize detected projects in Dockertron** - After analyzing a repository, users can view and select from detected projects before generating Dockerfiles, ensuring more accurate containerization and easier project management. -- **Backend exposes multiple detected projects** - The Dockertron backend can now analyze GitHub repositories with multiple projects, exposing all valid candidates for Dockerization and speeding up configuration for monorepos. -- **Frontend and backend separation for autodiagnostic tickets** - Autodiagnostic support tickets are now routed through a separate frontend and backend flow, improving filtering, resource tracking, and user experience. The diagnostic panel supports expansion and fullscreen mode for clarity. -- **Dedicated notification system for process completion** - Users receive notifications when backend processes, such as Dockerization, complete successfully or encounter errors, enabling timely follow-up actions. -- **Improved resource name handling for CronJobs** - The resource name truncation logic for CronJobs now shortens the Project/Environment combination rather than the individual CronJob name, eliminating duplicate names and deployment issues. -- **Table for Dockertron process visualization** - All Dockertron processes can now be listed and monitored via a dedicated table in the UI, providing greater visibility and traceability. -- **Addon documentation for AI workflows** - New documentation enables AI systems to quickly implement new Addons for both EKS Addon and Helm Release types, facilitating future extensibility. -- **Fixtures separated by addon** - Fixtures are now organized by addon, streamlining future development and testability (including for upcoming Loki integration). -- **"Get Access" card update proposal in Dashboard** - The design proposal for an upgraded "Get Access" card is now implemented in the dashboard UI, improving cluster onboarding engagement. -- **Project layout decoupled from Dockertron for agnostic experience** - Dockertron UI no longer depends on the Project layout, offering a more flexible and agnostic experience. - ---- - -## 🐛 Bug Fixes - -- **Volume creation error during cluster shutdown** - Fixed an issue preventing cluster startup when ProjectEnvs were left in a transitional state after volume creation attempts during shutdown. Now, volume creation is disallowed when the cluster is off. -- **Cluster shutdown blocked by dependency protection** - Allow clusters to be shut down even when dependencies have deletion protection, resolving an incorrect validation that previously blocked the operation. -- **Resource name truncation for CronJobs** - Resolved a bug causing resource names to be truncated incorrectly, which previously led to duplicate job names and only one job being applied. -- **Domain change error 400 on recylink** - Fixed the 400 error thrown when updating an Environment's domain, ensuring URLs update correctly and required deployments trigger as expected. -- **Dashboard alias state after web service deletion** - Ensured that alias records for deleted web services are correctly cleaned up in both frontend and backend, so the dashboard reflects their true removal state. -- **Project creation with Dockertron did not redirect** - Resolved an issue where users were not redirected to the Dockertron executions screen after creating a project with Dockertron enabled. The correct post-creation navigation now occurs. -- **Dockertron processes API now returns all records** - The Dockertron process API has been improved to list all active and historic processes, giving users complete traceability. - ---- From b8a9541bdf4b994560cab4484d165af267f1a63d Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:47:43 -0300 Subject: [PATCH 06/45] Publish version 2.7.0 2026-03-17 --- content/changelog/en/2026-03-17V2.7.0.md | 79 ++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 content/changelog/en/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17V2.7.0.md b/content/changelog/en/2026-03-17V2.7.0.md new file mode 100644 index 000000000..51f2a29fd --- /dev/null +++ b/content/changelog/en/2026-03-17V2.7.0.md @@ -0,0 +1,79 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 17, 2026 + +--- + +:::danger Breaking changes +- **Environment selection and access restrictions in project creation:** The quick-create environment button in the Project form is now only visible to users with "Settings" permissions. If you do not have the appropriate role, you will not see this option when creating projects. Review your user permissions if the shortcut does not appear. +- **LokiV2 add-on introduction and add-on deprecation flag:** A new LokiV2 add-on is now available; the previous Loki add-on is marked as deprecated but remains installable for log persistence. Users should plan migrations accordingly, as deprecated add-ons will be visually highlighted and may be removed in future releases. Maintain both add-ons active for three months to ensure log continuity. +::: + +--- + +## 🚀 New Features + +- **LokiV2 add-on with Grafana Alloy integration** + Deploy the next-generation LokiV2 add-on using Grafana Alloy, addressing stability issues from previous versions. Both Loki add-ons can be active simultaneously to ensure a smooth migration and 3-month log history continuity. +- **Headlamp add-on integration** + Headlamp is now available as an add-on, allowing direct cluster access from the dashboard. Users receive the appropriate token automatically, streamlining authentication and feature access according to their roles. +- **Custom inbox for auto-diagnosis tickets** + Auto-diagnosis tickets are now created in a dedicated inbox, improving separation between support and diagnostic activities and enabling better tracking and triage. +- **Auto-diagnosis tickets screen** + A new interface displays only auto-diagnosis tickets. Access it directly from any workload to filter tickets by resource quickly and manage diagnostics more effectively. +- **Project detection in Dockertron** + Dockertron can now scan GitHub repositories and list detected projects, letting users choose which project to dockerize in multi-project repositories. +- **Support for Headlamp add-on links with token-based access** + Add-on links for Headlamp now automatically generate and display tokens, enabling seamless, secure access to the Headlamp UI based on user permissions. +- **Loki add-on deprecation badge** + Add-ons that are deprecated now show a visual "Deprecated" badge, helping users Identify and plan for obsolete technologies. + +--- + +## ✨ Improvements + +- **Environment selector is pre-filled after environment creation** + After creating a new environment from the project form, the selector automatically chooses the newly created environment, reducing repetitive steps and streamlining workflows. +- **Clearer indicators for mandatory fields in forms** + All forms now clearly show which fields are required with a visual asterisk, minimizing data entry errors and improving overall user clarity. +- **Enhanced Dockertron project creation and UI adjustments** + The Dockertron integration in project creation is more visible and user-friendly, with clear options for automatic and manual Dockerfile generation and better button labeling. +- **Show complete list of Dockertron processes with a dedicated table** + All Dockertron processes are now visible and accessible, making monitoring and management easier for users. +- **Add-on custom YAML values editor update** + The advanced YAML editor used for Extra Charts is now also available in the "Custom YAML values" section for add-ons, improving readability and reducing formatting errors. +- **Improved visibility of scheduled cluster upgrades** + Cluster cards on the dashboard now visually highlight when an upgrade is scheduled or pending, making upcoming changes easier to track at a glance. +- **Enhanced "Get Access" card proposal for dashboard** + Proposals to enhance the "Get Access" card on the dashboard offer a better interface for cluster and resource access requests. +- **Fixtures separated by add-on for future Loki integration** + Fixtures are now separated by add-on, streamlining future add-on development and integration processes. + +--- + +## 🐛 Bug Fixes + +- **Fix resource name truncation in CronJob creation** + Creating multiple resources with long names (e.g., CronJobs) now preserves the unique suffix for each one, preventing name collisions and ensuring all intended resources are created and applied. +- **Fix project and environment filters not clearing when switching accounts** + Switching accounts now resets project and environment filters automatically, displaying the correct resources and preventing empty or inconsistent views. +- **Prevent cluster shutdown blocked by deletion protection on dependencies** + Deletion protection checks are now correctly handled, allowing cluster shutdowns when appropriate without invalid dependency errors. +- **Dashboard alias reflects deleted state correctly** + The dashboard now accurately updates the status for deleted web service aliases, ensuring consistency between the backend and dashboard state. +- **Allow Aurora Read Replica to be public** + Read Replica subnets for Aurora are now correctly configured as public, resolving accessibility issues found in some cluster setups. +- **Prevent project environments from blocking cluster startup** + Creating new volumes will no longer cause cluster environments to remain stuck in "Updating", preventing cluster start errors after shutdown. +- **400 error resolved when changing environment domains** + Changing a domain on an environment now updates all service URLs correctly and triggers a new release as expected. +- **Dockertron project creation properly redirects on completion** + Completing project creation via Dockertron now reliably redirects to the Dockertron executions screen with the new project loaded. + +--- From b95c6fb2fe8c905ff01cd47a698aab688d2232b1 Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 17:01:20 -0300 Subject: [PATCH 07/45] remove bad release --- content/changelog/en/2026-03-17V2.7.0.md | 79 ------------------------ 1 file changed, 79 deletions(-) delete mode 100644 content/changelog/en/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17V2.7.0.md b/content/changelog/en/2026-03-17V2.7.0.md deleted file mode 100644 index 51f2a29fd..000000000 --- a/content/changelog/en/2026-03-17V2.7.0.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 17, 2026 - ---- - -:::danger Breaking changes -- **Environment selection and access restrictions in project creation:** The quick-create environment button in the Project form is now only visible to users with "Settings" permissions. If you do not have the appropriate role, you will not see this option when creating projects. Review your user permissions if the shortcut does not appear. -- **LokiV2 add-on introduction and add-on deprecation flag:** A new LokiV2 add-on is now available; the previous Loki add-on is marked as deprecated but remains installable for log persistence. Users should plan migrations accordingly, as deprecated add-ons will be visually highlighted and may be removed in future releases. Maintain both add-ons active for three months to ensure log continuity. -::: - ---- - -## 🚀 New Features - -- **LokiV2 add-on with Grafana Alloy integration** - Deploy the next-generation LokiV2 add-on using Grafana Alloy, addressing stability issues from previous versions. Both Loki add-ons can be active simultaneously to ensure a smooth migration and 3-month log history continuity. -- **Headlamp add-on integration** - Headlamp is now available as an add-on, allowing direct cluster access from the dashboard. Users receive the appropriate token automatically, streamlining authentication and feature access according to their roles. -- **Custom inbox for auto-diagnosis tickets** - Auto-diagnosis tickets are now created in a dedicated inbox, improving separation between support and diagnostic activities and enabling better tracking and triage. -- **Auto-diagnosis tickets screen** - A new interface displays only auto-diagnosis tickets. Access it directly from any workload to filter tickets by resource quickly and manage diagnostics more effectively. -- **Project detection in Dockertron** - Dockertron can now scan GitHub repositories and list detected projects, letting users choose which project to dockerize in multi-project repositories. -- **Support for Headlamp add-on links with token-based access** - Add-on links for Headlamp now automatically generate and display tokens, enabling seamless, secure access to the Headlamp UI based on user permissions. -- **Loki add-on deprecation badge** - Add-ons that are deprecated now show a visual "Deprecated" badge, helping users Identify and plan for obsolete technologies. - ---- - -## ✨ Improvements - -- **Environment selector is pre-filled after environment creation** - After creating a new environment from the project form, the selector automatically chooses the newly created environment, reducing repetitive steps and streamlining workflows. -- **Clearer indicators for mandatory fields in forms** - All forms now clearly show which fields are required with a visual asterisk, minimizing data entry errors and improving overall user clarity. -- **Enhanced Dockertron project creation and UI adjustments** - The Dockertron integration in project creation is more visible and user-friendly, with clear options for automatic and manual Dockerfile generation and better button labeling. -- **Show complete list of Dockertron processes with a dedicated table** - All Dockertron processes are now visible and accessible, making monitoring and management easier for users. -- **Add-on custom YAML values editor update** - The advanced YAML editor used for Extra Charts is now also available in the "Custom YAML values" section for add-ons, improving readability and reducing formatting errors. -- **Improved visibility of scheduled cluster upgrades** - Cluster cards on the dashboard now visually highlight when an upgrade is scheduled or pending, making upcoming changes easier to track at a glance. -- **Enhanced "Get Access" card proposal for dashboard** - Proposals to enhance the "Get Access" card on the dashboard offer a better interface for cluster and resource access requests. -- **Fixtures separated by add-on for future Loki integration** - Fixtures are now separated by add-on, streamlining future add-on development and integration processes. - ---- - -## 🐛 Bug Fixes - -- **Fix resource name truncation in CronJob creation** - Creating multiple resources with long names (e.g., CronJobs) now preserves the unique suffix for each one, preventing name collisions and ensuring all intended resources are created and applied. -- **Fix project and environment filters not clearing when switching accounts** - Switching accounts now resets project and environment filters automatically, displaying the correct resources and preventing empty or inconsistent views. -- **Prevent cluster shutdown blocked by deletion protection on dependencies** - Deletion protection checks are now correctly handled, allowing cluster shutdowns when appropriate without invalid dependency errors. -- **Dashboard alias reflects deleted state correctly** - The dashboard now accurately updates the status for deleted web service aliases, ensuring consistency between the backend and dashboard state. -- **Allow Aurora Read Replica to be public** - Read Replica subnets for Aurora are now correctly configured as public, resolving accessibility issues found in some cluster setups. -- **Prevent project environments from blocking cluster startup** - Creating new volumes will no longer cause cluster environments to remain stuck in "Updating", preventing cluster start errors after shutdown. -- **400 error resolved when changing environment domains** - Changing a domain on an environment now updates all service URLs correctly and triggers a new release as expected. -- **Dockertron project creation properly redirects on completion** - Completing project creation via Dockertron now reliably redirects to the Dockertron executions screen with the new project loaded. - ---- From 6d50df111e180d55be0bf3325bdfca00ff179a87 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:02:58 -0300 Subject: [PATCH 08/45] Publish version 2.7.0 2026-03-17 --- .../changelog/en/2026-03-17-version-2.7.0.md | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 content/changelog/en/2026-03-17-version-2.7.0.md diff --git a/content/changelog/en/2026-03-17-version-2.7.0.md b/content/changelog/en/2026-03-17-version-2.7.0.md new file mode 100644 index 000000000..51f2a29fd --- /dev/null +++ b/content/changelog/en/2026-03-17-version-2.7.0.md @@ -0,0 +1,79 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 17, 2026 + +--- + +:::danger Breaking changes +- **Environment selection and access restrictions in project creation:** The quick-create environment button in the Project form is now only visible to users with "Settings" permissions. If you do not have the appropriate role, you will not see this option when creating projects. Review your user permissions if the shortcut does not appear. +- **LokiV2 add-on introduction and add-on deprecation flag:** A new LokiV2 add-on is now available; the previous Loki add-on is marked as deprecated but remains installable for log persistence. Users should plan migrations accordingly, as deprecated add-ons will be visually highlighted and may be removed in future releases. Maintain both add-ons active for three months to ensure log continuity. +::: + +--- + +## 🚀 New Features + +- **LokiV2 add-on with Grafana Alloy integration** + Deploy the next-generation LokiV2 add-on using Grafana Alloy, addressing stability issues from previous versions. Both Loki add-ons can be active simultaneously to ensure a smooth migration and 3-month log history continuity. +- **Headlamp add-on integration** + Headlamp is now available as an add-on, allowing direct cluster access from the dashboard. Users receive the appropriate token automatically, streamlining authentication and feature access according to their roles. +- **Custom inbox for auto-diagnosis tickets** + Auto-diagnosis tickets are now created in a dedicated inbox, improving separation between support and diagnostic activities and enabling better tracking and triage. +- **Auto-diagnosis tickets screen** + A new interface displays only auto-diagnosis tickets. Access it directly from any workload to filter tickets by resource quickly and manage diagnostics more effectively. +- **Project detection in Dockertron** + Dockertron can now scan GitHub repositories and list detected projects, letting users choose which project to dockerize in multi-project repositories. +- **Support for Headlamp add-on links with token-based access** + Add-on links for Headlamp now automatically generate and display tokens, enabling seamless, secure access to the Headlamp UI based on user permissions. +- **Loki add-on deprecation badge** + Add-ons that are deprecated now show a visual "Deprecated" badge, helping users Identify and plan for obsolete technologies. + +--- + +## ✨ Improvements + +- **Environment selector is pre-filled after environment creation** + After creating a new environment from the project form, the selector automatically chooses the newly created environment, reducing repetitive steps and streamlining workflows. +- **Clearer indicators for mandatory fields in forms** + All forms now clearly show which fields are required with a visual asterisk, minimizing data entry errors and improving overall user clarity. +- **Enhanced Dockertron project creation and UI adjustments** + The Dockertron integration in project creation is more visible and user-friendly, with clear options for automatic and manual Dockerfile generation and better button labeling. +- **Show complete list of Dockertron processes with a dedicated table** + All Dockertron processes are now visible and accessible, making monitoring and management easier for users. +- **Add-on custom YAML values editor update** + The advanced YAML editor used for Extra Charts is now also available in the "Custom YAML values" section for add-ons, improving readability and reducing formatting errors. +- **Improved visibility of scheduled cluster upgrades** + Cluster cards on the dashboard now visually highlight when an upgrade is scheduled or pending, making upcoming changes easier to track at a glance. +- **Enhanced "Get Access" card proposal for dashboard** + Proposals to enhance the "Get Access" card on the dashboard offer a better interface for cluster and resource access requests. +- **Fixtures separated by add-on for future Loki integration** + Fixtures are now separated by add-on, streamlining future add-on development and integration processes. + +--- + +## 🐛 Bug Fixes + +- **Fix resource name truncation in CronJob creation** + Creating multiple resources with long names (e.g., CronJobs) now preserves the unique suffix for each one, preventing name collisions and ensuring all intended resources are created and applied. +- **Fix project and environment filters not clearing when switching accounts** + Switching accounts now resets project and environment filters automatically, displaying the correct resources and preventing empty or inconsistent views. +- **Prevent cluster shutdown blocked by deletion protection on dependencies** + Deletion protection checks are now correctly handled, allowing cluster shutdowns when appropriate without invalid dependency errors. +- **Dashboard alias reflects deleted state correctly** + The dashboard now accurately updates the status for deleted web service aliases, ensuring consistency between the backend and dashboard state. +- **Allow Aurora Read Replica to be public** + Read Replica subnets for Aurora are now correctly configured as public, resolving accessibility issues found in some cluster setups. +- **Prevent project environments from blocking cluster startup** + Creating new volumes will no longer cause cluster environments to remain stuck in "Updating", preventing cluster start errors after shutdown. +- **400 error resolved when changing environment domains** + Changing a domain on an environment now updates all service URLs correctly and triggers a new release as expected. +- **Dockertron project creation properly redirects on completion** + Completing project creation via Dockertron now reliably redirects to the Dockertron executions screen with the new project loaded. + +--- From 812c6c69a9354a547155dac4e8d00f65aaa02971 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:18:34 -0300 Subject: [PATCH 09/45] Publish version 2.7.0 2026-03-17 --- content/changelog/es/2026-03-17V2.7.0.md | 79 ++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 content/changelog/es/2026-03-17V2.7.0.md diff --git a/content/changelog/es/2026-03-17V2.7.0.md b/content/changelog/es/2026-03-17V2.7.0.md new file mode 100644 index 000000000..945726377 --- /dev/null +++ b/content/changelog/es/2026-03-17V2.7.0.md @@ -0,0 +1,79 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` · 17 de marzo de 2026 + +--- + +:::danger Cambios que requieren atención +- **Selección de environment y restricciones de acceso en la creación de proyectos:** El botón de creación rápida de environment en el formulario de Proyecto ahora solo es visible para usuarios con permisos de "Settings". Si no posees el rol adecuado, no verás esta opción al crear proyectos. Verifica tus permisos si el acceso directo no aparece. +- **Introducción de LokiV2 y marca depreada para addons:** Ahora está disponible el nuevo addon LokiV2; el addon anterior de Loki está marcado como obsoleto pero puede seguir instalándose para mantener la persistencia de logs. Se recomienda planificar la migración, ya que los addons obsoletos aparecen destacados y podrían eliminarse en futuras versiones. Mantén ambos addons activos durante tres meses para asegurar la continuidad histórica de logs. +::: + +--- + +## 🚀 Nuevas funcionalidades + +- **Addon LokiV2 con integración a Grafana Alloy** + Despliega el addon LokiV2 de próxima generación usando Grafana Alloy, resolviendo problemas de estabilidad presentes en versiones previas. Es posible mantener ambos addons activos al mismo tiempo para una migración gradual y continuidad de logs por 3 meses. +- **Integración del addon Headlamp** + Headlamp ya se encuentra disponible como addon, permitiendo acceso directo al clúster desde el dashboard. Los usuarios reciben su token automáticamente según su rol, agilizando la autenticación y el acceso a funciones. +- **Inbox personalizado para tickets de autodiagnóstico** + Ahora los tickets generados por autodiagnóstico son creados en un inbox dedicado, mejorando la separación entre soporte y diagnósticos, y facilitando el seguimiento y la priorización. +- **Pantalla dedicada para tickets de autodiagnóstico** + Nueva interfaz para visualizar únicamente tickets de autodiagnóstico. Accede desde cualquier workload con filtro automático según el recurso y gestiona diagnósticos de forma más eficiente. +- **Detección de proyectos en Dockertron** + Dockertron ahora puede analizar repositorios de GitHub y listar los proyectos detectados, permitiendo que el usuario elija cuál dockerizar en repositorios con múltiples aplicaciones. +- **Soporte para enlaces de addon Headlamp con acceso mediante token** + Los enlaces de addon de Headlamp ahora generan y muestran tokens automáticamente, permitiendo un acceso ágil y seguro a la interfaz de Headlamp según los permisos del usuario. +- **Etiqueta de obsoleto para addons** + Los addons marcados como obsoletos ahora muestran una etiqueta visual "Deprecated", ayudando a identificar tecnologías que serán retiradas y facilitando la planificación. + +--- + +## ✨ Mejoras + +- **Selector de entorno prellenado tras crear un nuevo environment** + Después de crear un environment desde el formulario de Proyecto, el selector muestra automáticamente el nuevo entorno creado, eliminando pasos repetitivos y optimizando la experiencia. +- **Indicadores claros de campos obligatorios en formularios** + Todos los formularios muestran de manera visible qué campos son obligatorios mediante un asterisco, reduciendo errores y mejorando la claridad para el usuario. +- **Creación integrada y ajustes visuales en la experiencia Dockertron** + La integración de Dockertron en la creación de proyectos es más visible e intuitiva, con opciones claras para la generación automática y manual de Dockerfile y mejoras en los textos de los botones. +- **Visualización completa de procesos Dockertron en una tabla dedicada** + Todos los procesos de Dockertron ahora se muestran con acceso directo, facilitando la supervisión y gestión para los usuarios. +- **Actualización del editor de YAML en configuración avanzada de addons** + El editor avanzado de YAML usado en Extra Charts ahora también está disponible en la sección de "Custom YAML values" de los addons, mejorando la legibilidad y reduciendo errores de formato. +- **Mejor visibilidad de upgrades programados de clusters** + Las cards de clusters en el dashboard ahora resaltan visualmente cuando hay un upgrade programado o pendiente, permitiendo anticipar tareas y planificar mejor. +- **Propuesta de mejora para la card "Get Access" del dashboard** + Mejoras en la propuesta de la card "Get Access" del dashboard ofrecen una mejor experiencia de acceso a clústeres y recursos. +- **Separación de fixtures por addon para integración futura de Loki** + Los fixtures ahora están separados por addon, facilitando el desarrollo y futura integración de nuevos addons como Loki. + +--- + +## 🐛 Correcciones + +- **Solución a truncamiento de nombres largos en creación de CronJob** + Ahora al crear múltiples recursos con nombres largos (por ejemplo, CronJobs), se respeta el sufijo propio de cada uno, evitando colisiones y asegurando que todos se creen correctamente. +- **Filtros de proyecto y entorno se limpian al cambiar de cuenta** + Al cambiar de cuenta, los filtros de proyecto y entorno se resetean automáticamente, mostrando los recursos correctos y evitando vistas vacías. +- **Permitir apagado de clúster sin bloqueo por dependencias protegidas** + La protección contra eliminación ahora se gestiona correctamente, permitiendo apagar el clúster cuando corresponde sin errores en las dependencias. +- **Estado correcto del alias eliminado en el dashboard** + El alias eliminado de un servicio web ahora refleja adecuadamente su estado en el dashboard, manteniendo la coherencia con el backend. +- **Permitir pública la Read Replica de Aurora** + Las subredes de las Read Replica en Aurora ahora se configuran correctamente como públicas, resolviendo problemas de acceso. +- **Evita bloqueos de inicio de clúster por ambientes en transición** + La creación de nuevos volúmenes ya no deja environments en estado "Updating", previniendo bloqueos al iniciar el clúster después de un apagado. +- **Resuelto error 400 al cambiar dominio del entorno** + Cambiar el dominio de un entorno ahora actualiza correctamente todas las URLs de los servicios y genera un nuevo release como corresponde. +- **Redirección correcta al finalizar creación de proyecto con Dockertron** + Al finalizar la creación de un proyecto con Dockertron, se redirige de forma fiable a la pantalla de ejecuciones de Dockertron mostrando el nuevo proyecto cargado. + +--- From 98ad584ddd5b075c095575207ec29ddf07fae2ba Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 17:25:10 -0300 Subject: [PATCH 10/45] Remove version 2.7.0 --- .../changelog/en/2026-03-17-version-2.7.0.md | 79 ------------------- content/changelog/es/2026-03-17V2.7.0.md | 79 ------------------- 2 files changed, 158 deletions(-) delete mode 100644 content/changelog/en/2026-03-17-version-2.7.0.md delete mode 100644 content/changelog/es/2026-03-17V2.7.0.md diff --git a/content/changelog/en/2026-03-17-version-2.7.0.md b/content/changelog/en/2026-03-17-version-2.7.0.md deleted file mode 100644 index 51f2a29fd..000000000 --- a/content/changelog/en/2026-03-17-version-2.7.0.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 17, 2026 - ---- - -:::danger Breaking changes -- **Environment selection and access restrictions in project creation:** The quick-create environment button in the Project form is now only visible to users with "Settings" permissions. If you do not have the appropriate role, you will not see this option when creating projects. Review your user permissions if the shortcut does not appear. -- **LokiV2 add-on introduction and add-on deprecation flag:** A new LokiV2 add-on is now available; the previous Loki add-on is marked as deprecated but remains installable for log persistence. Users should plan migrations accordingly, as deprecated add-ons will be visually highlighted and may be removed in future releases. Maintain both add-ons active for three months to ensure log continuity. -::: - ---- - -## 🚀 New Features - -- **LokiV2 add-on with Grafana Alloy integration** - Deploy the next-generation LokiV2 add-on using Grafana Alloy, addressing stability issues from previous versions. Both Loki add-ons can be active simultaneously to ensure a smooth migration and 3-month log history continuity. -- **Headlamp add-on integration** - Headlamp is now available as an add-on, allowing direct cluster access from the dashboard. Users receive the appropriate token automatically, streamlining authentication and feature access according to their roles. -- **Custom inbox for auto-diagnosis tickets** - Auto-diagnosis tickets are now created in a dedicated inbox, improving separation between support and diagnostic activities and enabling better tracking and triage. -- **Auto-diagnosis tickets screen** - A new interface displays only auto-diagnosis tickets. Access it directly from any workload to filter tickets by resource quickly and manage diagnostics more effectively. -- **Project detection in Dockertron** - Dockertron can now scan GitHub repositories and list detected projects, letting users choose which project to dockerize in multi-project repositories. -- **Support for Headlamp add-on links with token-based access** - Add-on links for Headlamp now automatically generate and display tokens, enabling seamless, secure access to the Headlamp UI based on user permissions. -- **Loki add-on deprecation badge** - Add-ons that are deprecated now show a visual "Deprecated" badge, helping users Identify and plan for obsolete technologies. - ---- - -## ✨ Improvements - -- **Environment selector is pre-filled after environment creation** - After creating a new environment from the project form, the selector automatically chooses the newly created environment, reducing repetitive steps and streamlining workflows. -- **Clearer indicators for mandatory fields in forms** - All forms now clearly show which fields are required with a visual asterisk, minimizing data entry errors and improving overall user clarity. -- **Enhanced Dockertron project creation and UI adjustments** - The Dockertron integration in project creation is more visible and user-friendly, with clear options for automatic and manual Dockerfile generation and better button labeling. -- **Show complete list of Dockertron processes with a dedicated table** - All Dockertron processes are now visible and accessible, making monitoring and management easier for users. -- **Add-on custom YAML values editor update** - The advanced YAML editor used for Extra Charts is now also available in the "Custom YAML values" section for add-ons, improving readability and reducing formatting errors. -- **Improved visibility of scheduled cluster upgrades** - Cluster cards on the dashboard now visually highlight when an upgrade is scheduled or pending, making upcoming changes easier to track at a glance. -- **Enhanced "Get Access" card proposal for dashboard** - Proposals to enhance the "Get Access" card on the dashboard offer a better interface for cluster and resource access requests. -- **Fixtures separated by add-on for future Loki integration** - Fixtures are now separated by add-on, streamlining future add-on development and integration processes. - ---- - -## 🐛 Bug Fixes - -- **Fix resource name truncation in CronJob creation** - Creating multiple resources with long names (e.g., CronJobs) now preserves the unique suffix for each one, preventing name collisions and ensuring all intended resources are created and applied. -- **Fix project and environment filters not clearing when switching accounts** - Switching accounts now resets project and environment filters automatically, displaying the correct resources and preventing empty or inconsistent views. -- **Prevent cluster shutdown blocked by deletion protection on dependencies** - Deletion protection checks are now correctly handled, allowing cluster shutdowns when appropriate without invalid dependency errors. -- **Dashboard alias reflects deleted state correctly** - The dashboard now accurately updates the status for deleted web service aliases, ensuring consistency between the backend and dashboard state. -- **Allow Aurora Read Replica to be public** - Read Replica subnets for Aurora are now correctly configured as public, resolving accessibility issues found in some cluster setups. -- **Prevent project environments from blocking cluster startup** - Creating new volumes will no longer cause cluster environments to remain stuck in "Updating", preventing cluster start errors after shutdown. -- **400 error resolved when changing environment domains** - Changing a domain on an environment now updates all service URLs correctly and triggers a new release as expected. -- **Dockertron project creation properly redirects on completion** - Completing project creation via Dockertron now reliably redirects to the Dockertron executions screen with the new project loaded. - ---- diff --git a/content/changelog/es/2026-03-17V2.7.0.md b/content/changelog/es/2026-03-17V2.7.0.md deleted file mode 100644 index 945726377..000000000 --- a/content/changelog/es/2026-03-17V2.7.0.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Versión 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`release menor` · 17 de marzo de 2026 - ---- - -:::danger Cambios que requieren atención -- **Selección de environment y restricciones de acceso en la creación de proyectos:** El botón de creación rápida de environment en el formulario de Proyecto ahora solo es visible para usuarios con permisos de "Settings". Si no posees el rol adecuado, no verás esta opción al crear proyectos. Verifica tus permisos si el acceso directo no aparece. -- **Introducción de LokiV2 y marca depreada para addons:** Ahora está disponible el nuevo addon LokiV2; el addon anterior de Loki está marcado como obsoleto pero puede seguir instalándose para mantener la persistencia de logs. Se recomienda planificar la migración, ya que los addons obsoletos aparecen destacados y podrían eliminarse en futuras versiones. Mantén ambos addons activos durante tres meses para asegurar la continuidad histórica de logs. -::: - ---- - -## 🚀 Nuevas funcionalidades - -- **Addon LokiV2 con integración a Grafana Alloy** - Despliega el addon LokiV2 de próxima generación usando Grafana Alloy, resolviendo problemas de estabilidad presentes en versiones previas. Es posible mantener ambos addons activos al mismo tiempo para una migración gradual y continuidad de logs por 3 meses. -- **Integración del addon Headlamp** - Headlamp ya se encuentra disponible como addon, permitiendo acceso directo al clúster desde el dashboard. Los usuarios reciben su token automáticamente según su rol, agilizando la autenticación y el acceso a funciones. -- **Inbox personalizado para tickets de autodiagnóstico** - Ahora los tickets generados por autodiagnóstico son creados en un inbox dedicado, mejorando la separación entre soporte y diagnósticos, y facilitando el seguimiento y la priorización. -- **Pantalla dedicada para tickets de autodiagnóstico** - Nueva interfaz para visualizar únicamente tickets de autodiagnóstico. Accede desde cualquier workload con filtro automático según el recurso y gestiona diagnósticos de forma más eficiente. -- **Detección de proyectos en Dockertron** - Dockertron ahora puede analizar repositorios de GitHub y listar los proyectos detectados, permitiendo que el usuario elija cuál dockerizar en repositorios con múltiples aplicaciones. -- **Soporte para enlaces de addon Headlamp con acceso mediante token** - Los enlaces de addon de Headlamp ahora generan y muestran tokens automáticamente, permitiendo un acceso ágil y seguro a la interfaz de Headlamp según los permisos del usuario. -- **Etiqueta de obsoleto para addons** - Los addons marcados como obsoletos ahora muestran una etiqueta visual "Deprecated", ayudando a identificar tecnologías que serán retiradas y facilitando la planificación. - ---- - -## ✨ Mejoras - -- **Selector de entorno prellenado tras crear un nuevo environment** - Después de crear un environment desde el formulario de Proyecto, el selector muestra automáticamente el nuevo entorno creado, eliminando pasos repetitivos y optimizando la experiencia. -- **Indicadores claros de campos obligatorios en formularios** - Todos los formularios muestran de manera visible qué campos son obligatorios mediante un asterisco, reduciendo errores y mejorando la claridad para el usuario. -- **Creación integrada y ajustes visuales en la experiencia Dockertron** - La integración de Dockertron en la creación de proyectos es más visible e intuitiva, con opciones claras para la generación automática y manual de Dockerfile y mejoras en los textos de los botones. -- **Visualización completa de procesos Dockertron en una tabla dedicada** - Todos los procesos de Dockertron ahora se muestran con acceso directo, facilitando la supervisión y gestión para los usuarios. -- **Actualización del editor de YAML en configuración avanzada de addons** - El editor avanzado de YAML usado en Extra Charts ahora también está disponible en la sección de "Custom YAML values" de los addons, mejorando la legibilidad y reduciendo errores de formato. -- **Mejor visibilidad de upgrades programados de clusters** - Las cards de clusters en el dashboard ahora resaltan visualmente cuando hay un upgrade programado o pendiente, permitiendo anticipar tareas y planificar mejor. -- **Propuesta de mejora para la card "Get Access" del dashboard** - Mejoras en la propuesta de la card "Get Access" del dashboard ofrecen una mejor experiencia de acceso a clústeres y recursos. -- **Separación de fixtures por addon para integración futura de Loki** - Los fixtures ahora están separados por addon, facilitando el desarrollo y futura integración de nuevos addons como Loki. - ---- - -## 🐛 Correcciones - -- **Solución a truncamiento de nombres largos en creación de CronJob** - Ahora al crear múltiples recursos con nombres largos (por ejemplo, CronJobs), se respeta el sufijo propio de cada uno, evitando colisiones y asegurando que todos se creen correctamente. -- **Filtros de proyecto y entorno se limpian al cambiar de cuenta** - Al cambiar de cuenta, los filtros de proyecto y entorno se resetean automáticamente, mostrando los recursos correctos y evitando vistas vacías. -- **Permitir apagado de clúster sin bloqueo por dependencias protegidas** - La protección contra eliminación ahora se gestiona correctamente, permitiendo apagar el clúster cuando corresponde sin errores en las dependencias. -- **Estado correcto del alias eliminado en el dashboard** - El alias eliminado de un servicio web ahora refleja adecuadamente su estado en el dashboard, manteniendo la coherencia con el backend. -- **Permitir pública la Read Replica de Aurora** - Las subredes de las Read Replica en Aurora ahora se configuran correctamente como públicas, resolviendo problemas de acceso. -- **Evita bloqueos de inicio de clúster por ambientes en transición** - La creación de nuevos volúmenes ya no deja environments en estado "Updating", previniendo bloqueos al iniciar el clúster después de un apagado. -- **Resuelto error 400 al cambiar dominio del entorno** - Cambiar el dominio de un entorno ahora actualiza correctamente todas las URLs de los servicios y genera un nuevo release como corresponde. -- **Redirección correcta al finalizar creación de proyecto con Dockertron** - Al finalizar la creación de un proyecto con Dockertron, se redirige de forma fiable a la pantalla de ejecuciones de Dockertron mostrando el nuevo proyecto cargado. - ---- From 84380a4e971477054331ed2528bbe66d4a9368e8 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:26:18 -0300 Subject: [PATCH 11/45] Publish version 2.7.0 2026-03-16 en --- .../changelog/en/2026-03-16-version-2.7.0.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..fb4137223 --- /dev/null +++ b/content/changelog/en/2026-03-16-version-2.7.0.md @@ -0,0 +1,81 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 16, 2026 + +--- + +:::danger Breaking changes +- **Headlamp Addon Roles and Access:** Headlamp integration relies on Kubernetes role-based access. Each user receives a token matching their role (e.g., 'viewer' users cannot access Shell or restart resources). Review RBAC permissions and verify users have the required access before using Headlamp. No other permissions or backwards compatibility changes are required. +- **Deprecation Tag and Addon Availability:** Addons now show a "Deprecated" tag in the list and drawer if marked as deprecated in the backend. Deprecated addons should not be installed in new environments, and users are encouraged to migrate as needed. Review the state of your installed addons and plan migrations away from deprecated ones. +--- + +## 🚀 New Features + +- **Headlamp Addon Integration** + Users can now deploy Headlamp as a native addon and access the cluster management IDE directly from the Addons panel. Automatic login is enabled through secure tokens based on your user role. +- **Dedicated Inbox for Autodiagnostics** + Autodiagnostics tickets are now sent to a dedicated inbox for improved separation from standard support requests. This helps organize triage and filtering by account and resource. +- **Autodiagnostics Ticket Screen** + A new screen shows a list of autodiagnostics tickets, filtered by resource. Access is available directly from workload actions for faster investigation and tracking. +- **Loki v2 Addon** + The new Loki v2 addon is now available, leveraging Grafana Alloy and the latest Loki releases. You may run both Loki versions in parallel, with Loki v2 as the default datasource in Grafana. + +--- + +## ✨ Improvements + +- **Cluster Upgrade Scheduling Visibility** + Clusters with a pending or scheduled upgrade now display a clear indicator in their dashboard card. This improves planning, operational awareness, and prevents missed upgrades. +- **Deprecated Addon Label** + Addons flagged as deprecated now show a visual "Deprecated" badge in both the list and details drawer. This allows users to avoid installing outdated addons and plan migrations accordingly. +- **Project Creation: Dockertron Integration** + Project creation now offers integrated Dockertron tooling, letting you automatically generate Dockerfiles if not present. This streamlines onboarding and leverages SleakOps AI directly during setup. +- **API Returns All Dockertron Processes** + Dockertron's API now supports returning every ongoing process, enabling new management and monitoring capabilities in the frontend. +- **Dockertron Process List in UI** + The Project view now lists all Dockertron containerization processes, allowing you to track progress and results easily. +- **Environment Selection Persistence** + When returning from environment creation, the newly created environment is now preselected in the project form. The environment creation button is visible only to users with the required settings permissions. +- **Clear Form Filters on Account Switch** + Project and environment filters are now reset when switching accounts, preventing empty or incorrect screens due to stale filters from previous accounts. +- **Generic Forms: Required Field Indicator** + All generic forms now visually indicate required fields with an asterisk, improving clarity and consistency for users. +- **Custom YAML Editor in Addon Configuration** + The "Enable Custom YAML values" setting now uses a code editor with YAML support, enhancing usability and reducing formatting errors. +- **Project Layout Agnostic for Dockertron** + Dockertron is no longer tied to the Project layout, making it suitable for broader use cases. +- **Fixtures by Addon for Loki Addons** + Fixtures are now separated by addon, paving the way for enhanced support such as the Loki integration. +- **Detailed Addon Documentation for AI Creation** + New documentation enables AI-powered creation and extension of SleakOps Addons, covering both EKS and Helm-based workflows. +- **Frontend Dockertron UI Adjustments** + Improved labeling, button visibility, and ordering in Dockertron's Project integration for a more intuitive UI. +- **Improved Cluster Access Card (Dashboard)** + The "Get Access" card in the dashboard was redesigned for a clearer, more actionable experience. + +--- + +## 🐛 Bug Fixes + +- **Fix Project Creation Redirect with Dockertron** + Completing a project creation with Dockertron now correctly redirects to the process execution screen and opens the newly created project in the Dockertron drawer. +- **Resource Name Truncation in CronJob Creation** + Creating multiple resources with long names (such as CronJobs) now preserves the distinct names correctly, avoiding truncation collisions. +- **Dashboard Alias Deletion Status** + When a web service alias is deleted, its real status is now properly reflected in the dashboard, ensuring accurate state information for operators. +- **Domain Change in Environment (400 Error)** + Changing the domain on an environment now reliably triggers a deployment, updates all service URLs, and avoids misleading error messages. +- **Aurora Public Read Replica Subnet Issue** + Aurora public read replicas are now correctly assigned to public subnets, resolving previous connectivity problems. +- **Dashboard: ProjectEnv Transition Error** + The platform now prevents volume creation when the cluster is powered off, avoiding errors blocking cluster startup due to ProjectEnv transitions. +- **Fix Cluster Shutdown DeletionProtection Check** + Cluster shutdown no longer fails due to mistaken deletion protection checks in dependencies. + +--- From 1048ed62492f26917fba56898664f1f582dbeadc Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:26:19 -0300 Subject: [PATCH 12/45] Publish version 2.7.0 2026-03-16 esp --- .../changelog/es/2026-03-16-version-2.7.0.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..c1f07a555 --- /dev/null +++ b/content/changelog/es/2026-03-16-version-2.7.0.md @@ -0,0 +1,83 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`lanzamiento menor` · 16 de marzo de 2026 + +--- + +:::danger Cambios que requieren atención +- **Roles y acceso para el addon Headlamp:** La integración de Headlamp utiliza permisos basados en roles de Kubernetes. Cada usuario recibe un token acorde a su rol (por ejemplo, los usuarios 'viewer' no pueden acceder a SHELL ni reiniciar recursos). Revise los permisos RBAC y asegúrese de que los usuarios tengan acceso antes de utilizar Headlamp. No hay otros cambios de permisos ni de retrocompatibilidad requeridos. +- **Etiqueta deprecar y disponibilidad de addons:** Los addons ahora muestran una etiqueta de "Deprecated" en la lista y el panel lateral si el backend los marca como obsoletos. Los addons deprecated no deben instalarse en nuevos entornos y se recomienda a los usuarios migrar en función de esta información. Revise el estado de sus addons instalados y planifique la migración desde los que estén obsoletos. +::: + +--- + +## 🚀 Nuevas funcionalidades + +- **Integración del addon Headlamp** + Ahora es posible desplegar Headlamp como addon nativo y acceder al IDE de gestión del cluster directamente desde el panel de Addons. El inicio de sesión automático se habilita mediante tokens seguros basados en su rol de usuario. +- **Inbox dedicado para autodiagnósticos** + Los tickets de autodiagnóstico ahora se envían a una bandeja de entrada dedicada, separándolos de los tickets de soporte tradicionales. Esto mejora la organización del triage y el filtrado por cuenta y recurso. +- **Pantalla de tickets de autodiagnóstico** + Una nueva pantalla lista únicamente los tickets de autodiagnóstico, filtrados por recurso. El acceso está disponible directamente desde las acciones de workloads para agilizar el análisis y seguimiento. +- **Addon Loki v2** + Se encuentra disponible el nuevo addon Loki v2, que utiliza Grafana Alloy y las últimas versiones de Loki. Puede ejecutar ambas versiones de Loki en paralelo, siendo Loki v2 el datasource por defecto en Grafana. + +--- + +## ✨ Mejoras + +- **Visibilidad del agendamiento de upgrades de cluster** + Ahora se muestra un indicador claro en la card del dashboard cuando un cluster tiene un upgrade pendiente o programado. Esto facilita la planificación, anticipa impactos y previene upgrades olvidados. +- **Etiqueta visual para addons deprecated** + Los addons marcados como obsoletos muestran una etiqueta visual "Deprecated" tanto en el listado como en el panel de detalles. Así los usuarios pueden evitar instalaciones nuevas de addons discontinuados y planificar migraciones. +- **Integración de Dockertron en creación de proyectos** + El formulario de creación de proyectos ahora integra directamente la herramienta Dockertron, permitiendo generar Dockerfiles automáticamente si no existen. Esto optimiza el onboarding y aprovecha la IA de SleakOps en el setup inicial. +- **API retorna todos los procesos Dockertron** + La API de Dockertron ahora puede devolver todos los procesos en ejecución, permitiendo nuevas capacidades de monitoreo y gestión desde el frontend. +- **Listado de procesos Dockertron en la interfaz** + La vista de Project muestra ahora todos los procesos de contenerización de Dockertron, facilitando el seguimiento y la verificación de resultados. +- **Persistencia de selección de entorno** + Al regresar de la creación de un entorno, el nuevo entorno queda preseleccionado en el formulario de proyecto. El botón para crear entornos sólo es visible para usuarios con permiso sobre Settings. +- **Limpieza de filtros al cambiar de cuenta** + Los filtros de proyecto y entorno ahora se limpian automáticamente al cambiar de cuenta, evitando pantallas vacías o datos incorrectos por filtros persistentes. +- **Indicador de campos obligatorios en formularios** + Todos los formularios genéricos ahora indican visualmente los campos obligatorios con un asterisco, mejorando la claridad y consistencia para los usuarios. +- **Editor YAML especializado en configuración de addons** + La opción "Enable Custom YAML values" ahora utiliza un editor de código con soporte YAML, facilitando la edición y reduciendo errores de formato. +- **Layout agnóstico de Project para Dockertron** + Dockertron ya no depende del layout de Project, ampliando los casos de uso. +- **Fixtures separados por addon para Loki** + Los fixtures ahora se organizan por addon, facilitando mejores integraciones como la de Loki. +- **Documentación de addons para creación con IA** + Nueva documentación cubre la creación y extensión asistida por IA de Addons SleakOps, describiendo flujos para EKS y Helm de forma completa. +- **Ajustes de UI en la integración Dockertron** + Se mejoraron etiquetas, visibilidad de botones y el orden en la integración de Dockertron con Projects para una UI más intuitiva. +- **Rediseño de la card "Get Access" en Dashboard** + La tarjeta "Get Access" del dashboard fue rediseñada para mayor claridad y facilidad de acción. + +--- + +## 🐛 Correcciones + +- **Corrección de redirección en creación de proyecto con Dockertron** + Al finalizar la creación de un proyecto usando Dockertron, la redirección ahora lleva a la pantalla de procesos y abre el drawer del proyecto recién creado. +- **Corrección de truncado de nombres en CronJobs** + Al crear múltiples recursos con nombres largos (como CronJobs), ahora se mantienen los nombres distintos y se evitan colisiones por truncamiento. +- **Estado de alias eliminado en Dashboard** + Al eliminar un alias de web service, su estado real ahora se refleja correctamente en el dashboard. +- **Actualización de dominio en environment (error 400)** + Cambiar el dominio de un environment ahora dispara correctamente el deployment, actualiza todas las URLs y evita mensajes de error. +- **Replica de lectura pública en Aurora** + Las replicas de lectura públicas en Aurora ahora asignan la subnet pública correctamente, solucionando problemas de conectividad. +- **Error de transición de ProjectEnv al encender cluster** + La plataforma ahora impide crear volúmenes si el cluster está apagado, evitando errores que bloqueaban el inicio del cluster. +- **Corrección en validación de Deletion Protection al apagar cluster** + Apagar un cluster ya no falla por validaciones erróneas en la protección contra eliminación de dependencias. + +--- From 49a34184ae8265fb742540267c4c1b1bac27ba95 Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 17:52:13 -0300 Subject: [PATCH 13/45] Remove version 2.7.0 --- .../changelog/en/2026-03-16-version-2.7.0.md | 81 ------------------ .../changelog/es/2026-03-16-version-2.7.0.md | 83 ------------------- 2 files changed, 164 deletions(-) delete mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md delete mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md deleted file mode 100644 index fb4137223..000000000 --- a/content/changelog/en/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 16, 2026 - ---- - -:::danger Breaking changes -- **Headlamp Addon Roles and Access:** Headlamp integration relies on Kubernetes role-based access. Each user receives a token matching their role (e.g., 'viewer' users cannot access Shell or restart resources). Review RBAC permissions and verify users have the required access before using Headlamp. No other permissions or backwards compatibility changes are required. -- **Deprecation Tag and Addon Availability:** Addons now show a "Deprecated" tag in the list and drawer if marked as deprecated in the backend. Deprecated addons should not be installed in new environments, and users are encouraged to migrate as needed. Review the state of your installed addons and plan migrations away from deprecated ones. ---- - -## 🚀 New Features - -- **Headlamp Addon Integration** - Users can now deploy Headlamp as a native addon and access the cluster management IDE directly from the Addons panel. Automatic login is enabled through secure tokens based on your user role. -- **Dedicated Inbox for Autodiagnostics** - Autodiagnostics tickets are now sent to a dedicated inbox for improved separation from standard support requests. This helps organize triage and filtering by account and resource. -- **Autodiagnostics Ticket Screen** - A new screen shows a list of autodiagnostics tickets, filtered by resource. Access is available directly from workload actions for faster investigation and tracking. -- **Loki v2 Addon** - The new Loki v2 addon is now available, leveraging Grafana Alloy and the latest Loki releases. You may run both Loki versions in parallel, with Loki v2 as the default datasource in Grafana. - ---- - -## ✨ Improvements - -- **Cluster Upgrade Scheduling Visibility** - Clusters with a pending or scheduled upgrade now display a clear indicator in their dashboard card. This improves planning, operational awareness, and prevents missed upgrades. -- **Deprecated Addon Label** - Addons flagged as deprecated now show a visual "Deprecated" badge in both the list and details drawer. This allows users to avoid installing outdated addons and plan migrations accordingly. -- **Project Creation: Dockertron Integration** - Project creation now offers integrated Dockertron tooling, letting you automatically generate Dockerfiles if not present. This streamlines onboarding and leverages SleakOps AI directly during setup. -- **API Returns All Dockertron Processes** - Dockertron's API now supports returning every ongoing process, enabling new management and monitoring capabilities in the frontend. -- **Dockertron Process List in UI** - The Project view now lists all Dockertron containerization processes, allowing you to track progress and results easily. -- **Environment Selection Persistence** - When returning from environment creation, the newly created environment is now preselected in the project form. The environment creation button is visible only to users with the required settings permissions. -- **Clear Form Filters on Account Switch** - Project and environment filters are now reset when switching accounts, preventing empty or incorrect screens due to stale filters from previous accounts. -- **Generic Forms: Required Field Indicator** - All generic forms now visually indicate required fields with an asterisk, improving clarity and consistency for users. -- **Custom YAML Editor in Addon Configuration** - The "Enable Custom YAML values" setting now uses a code editor with YAML support, enhancing usability and reducing formatting errors. -- **Project Layout Agnostic for Dockertron** - Dockertron is no longer tied to the Project layout, making it suitable for broader use cases. -- **Fixtures by Addon for Loki Addons** - Fixtures are now separated by addon, paving the way for enhanced support such as the Loki integration. -- **Detailed Addon Documentation for AI Creation** - New documentation enables AI-powered creation and extension of SleakOps Addons, covering both EKS and Helm-based workflows. -- **Frontend Dockertron UI Adjustments** - Improved labeling, button visibility, and ordering in Dockertron's Project integration for a more intuitive UI. -- **Improved Cluster Access Card (Dashboard)** - The "Get Access" card in the dashboard was redesigned for a clearer, more actionable experience. - ---- - -## 🐛 Bug Fixes - -- **Fix Project Creation Redirect with Dockertron** - Completing a project creation with Dockertron now correctly redirects to the process execution screen and opens the newly created project in the Dockertron drawer. -- **Resource Name Truncation in CronJob Creation** - Creating multiple resources with long names (such as CronJobs) now preserves the distinct names correctly, avoiding truncation collisions. -- **Dashboard Alias Deletion Status** - When a web service alias is deleted, its real status is now properly reflected in the dashboard, ensuring accurate state information for operators. -- **Domain Change in Environment (400 Error)** - Changing the domain on an environment now reliably triggers a deployment, updates all service URLs, and avoids misleading error messages. -- **Aurora Public Read Replica Subnet Issue** - Aurora public read replicas are now correctly assigned to public subnets, resolving previous connectivity problems. -- **Dashboard: ProjectEnv Transition Error** - The platform now prevents volume creation when the cluster is powered off, avoiding errors blocking cluster startup due to ProjectEnv transitions. -- **Fix Cluster Shutdown DeletionProtection Check** - Cluster shutdown no longer fails due to mistaken deletion protection checks in dependencies. - ---- diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md deleted file mode 100644 index c1f07a555..000000000 --- a/content/changelog/es/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Versión 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`lanzamiento menor` · 16 de marzo de 2026 - ---- - -:::danger Cambios que requieren atención -- **Roles y acceso para el addon Headlamp:** La integración de Headlamp utiliza permisos basados en roles de Kubernetes. Cada usuario recibe un token acorde a su rol (por ejemplo, los usuarios 'viewer' no pueden acceder a SHELL ni reiniciar recursos). Revise los permisos RBAC y asegúrese de que los usuarios tengan acceso antes de utilizar Headlamp. No hay otros cambios de permisos ni de retrocompatibilidad requeridos. -- **Etiqueta deprecar y disponibilidad de addons:** Los addons ahora muestran una etiqueta de "Deprecated" en la lista y el panel lateral si el backend los marca como obsoletos. Los addons deprecated no deben instalarse en nuevos entornos y se recomienda a los usuarios migrar en función de esta información. Revise el estado de sus addons instalados y planifique la migración desde los que estén obsoletos. -::: - ---- - -## 🚀 Nuevas funcionalidades - -- **Integración del addon Headlamp** - Ahora es posible desplegar Headlamp como addon nativo y acceder al IDE de gestión del cluster directamente desde el panel de Addons. El inicio de sesión automático se habilita mediante tokens seguros basados en su rol de usuario. -- **Inbox dedicado para autodiagnósticos** - Los tickets de autodiagnóstico ahora se envían a una bandeja de entrada dedicada, separándolos de los tickets de soporte tradicionales. Esto mejora la organización del triage y el filtrado por cuenta y recurso. -- **Pantalla de tickets de autodiagnóstico** - Una nueva pantalla lista únicamente los tickets de autodiagnóstico, filtrados por recurso. El acceso está disponible directamente desde las acciones de workloads para agilizar el análisis y seguimiento. -- **Addon Loki v2** - Se encuentra disponible el nuevo addon Loki v2, que utiliza Grafana Alloy y las últimas versiones de Loki. Puede ejecutar ambas versiones de Loki en paralelo, siendo Loki v2 el datasource por defecto en Grafana. - ---- - -## ✨ Mejoras - -- **Visibilidad del agendamiento de upgrades de cluster** - Ahora se muestra un indicador claro en la card del dashboard cuando un cluster tiene un upgrade pendiente o programado. Esto facilita la planificación, anticipa impactos y previene upgrades olvidados. -- **Etiqueta visual para addons deprecated** - Los addons marcados como obsoletos muestran una etiqueta visual "Deprecated" tanto en el listado como en el panel de detalles. Así los usuarios pueden evitar instalaciones nuevas de addons discontinuados y planificar migraciones. -- **Integración de Dockertron en creación de proyectos** - El formulario de creación de proyectos ahora integra directamente la herramienta Dockertron, permitiendo generar Dockerfiles automáticamente si no existen. Esto optimiza el onboarding y aprovecha la IA de SleakOps en el setup inicial. -- **API retorna todos los procesos Dockertron** - La API de Dockertron ahora puede devolver todos los procesos en ejecución, permitiendo nuevas capacidades de monitoreo y gestión desde el frontend. -- **Listado de procesos Dockertron en la interfaz** - La vista de Project muestra ahora todos los procesos de contenerización de Dockertron, facilitando el seguimiento y la verificación de resultados. -- **Persistencia de selección de entorno** - Al regresar de la creación de un entorno, el nuevo entorno queda preseleccionado en el formulario de proyecto. El botón para crear entornos sólo es visible para usuarios con permiso sobre Settings. -- **Limpieza de filtros al cambiar de cuenta** - Los filtros de proyecto y entorno ahora se limpian automáticamente al cambiar de cuenta, evitando pantallas vacías o datos incorrectos por filtros persistentes. -- **Indicador de campos obligatorios en formularios** - Todos los formularios genéricos ahora indican visualmente los campos obligatorios con un asterisco, mejorando la claridad y consistencia para los usuarios. -- **Editor YAML especializado en configuración de addons** - La opción "Enable Custom YAML values" ahora utiliza un editor de código con soporte YAML, facilitando la edición y reduciendo errores de formato. -- **Layout agnóstico de Project para Dockertron** - Dockertron ya no depende del layout de Project, ampliando los casos de uso. -- **Fixtures separados por addon para Loki** - Los fixtures ahora se organizan por addon, facilitando mejores integraciones como la de Loki. -- **Documentación de addons para creación con IA** - Nueva documentación cubre la creación y extensión asistida por IA de Addons SleakOps, describiendo flujos para EKS y Helm de forma completa. -- **Ajustes de UI en la integración Dockertron** - Se mejoraron etiquetas, visibilidad de botones y el orden en la integración de Dockertron con Projects para una UI más intuitiva. -- **Rediseño de la card "Get Access" en Dashboard** - La tarjeta "Get Access" del dashboard fue rediseñada para mayor claridad y facilidad de acción. - ---- - -## 🐛 Correcciones - -- **Corrección de redirección en creación de proyecto con Dockertron** - Al finalizar la creación de un proyecto usando Dockertron, la redirección ahora lleva a la pantalla de procesos y abre el drawer del proyecto recién creado. -- **Corrección de truncado de nombres en CronJobs** - Al crear múltiples recursos con nombres largos (como CronJobs), ahora se mantienen los nombres distintos y se evitan colisiones por truncamiento. -- **Estado de alias eliminado en Dashboard** - Al eliminar un alias de web service, su estado real ahora se refleja correctamente en el dashboard. -- **Actualización de dominio en environment (error 400)** - Cambiar el dominio de un environment ahora dispara correctamente el deployment, actualiza todas las URLs y evita mensajes de error. -- **Replica de lectura pública en Aurora** - Las replicas de lectura públicas en Aurora ahora asignan la subnet pública correctamente, solucionando problemas de conectividad. -- **Error de transición de ProjectEnv al encender cluster** - La plataforma ahora impide crear volúmenes si el cluster está apagado, evitando errores que bloqueaban el inicio del cluster. -- **Corrección en validación de Deletion Protection al apagar cluster** - Apagar un cluster ya no falla por validaciones erróneas en la protección contra eliminación de dependencias. - ---- From dd56e6cb8cfd223b6dfe9a202e008326dfbc36c4 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:54:20 -0300 Subject: [PATCH 14/45] Publish version 2.7.0 2026-03-16 en --- .../changelog/en/2026-03-16-version-2.7.0.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..4d79788eb --- /dev/null +++ b/content/changelog/en/2026-03-16-version-2.7.0.md @@ -0,0 +1,86 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` 3 March 16, 2026 + +--- + +## 🚀 New Features + +- **Loki V2 Addon** +You can now install the Loki V2 addon with Grafana Alloy, enabling a modern, more stable logging solution. The previous Loki continues to be supported for parallel operation, with Loki V2 set as the default datasource when both are present. Deprecated status for addons is now clearly indicated for easy migration planning. + +- **Integrated Headlamp Addon** +Headlamp is now available as a native addon, allowing direct, token-authenticated access to cluster resources from the SleakOps UI. Users can launch Headlamp with one click, reusing valid tokens to streamline secure access without manual authentication. + +- **Enhanced Dockertron Workflow for Project Creation** +Dockertron is now seamlessly integrated into the Project creation form. Users can auto-generate Dockerfiles using GenAI, benefit from a guided workflow, and receive notifications when the dockerization process completes. + +- **Dedicated Autodiagnostics Support Flows** +The autodiagnostic ticket flow is now fully separated from standard support. Executing any autodiagnostic opens a specialized drawer, generates a ticket in a dedicated inbox, and lets users view, triage, and filter autodiagnostic tickets via a new workload-linked screen. This improves support visibility and user experience for automated health checks. + +--- + +## ✨ Improvements + +- **Project Creation Environment Selection** +When creating a new environment from the Project form, the environment selector now automatically highlights the newly added environment. The quick-create button beside the selector is only visible to users with the appropriate settings permissions, improving both security and usability. + +- **Improved Addon Status Visibility** +Addons that are marked as deprecated now display a visual Deprecated badge in both the Addon list and details drawer, reducing risk and helping users avoid deprecated technology stacks. + +- **Advanced YAML Editor for Addon Configuration** +Addon Custom YAML values are now edited using an advanced code editor, consistent with Extra Charts, providing better readability, error reduction, and a more comfortable configuration experience for technical users. + +- **Cluster Upgrade Scheduling Visibility** +Clusters scheduled for upgrades, or with pending upgrades, now show a prominent badge and visual highlight directly in the Dashboard cluster cards, allowing users to anticipate changes and take proactive measures. + +- **Generic Forms: Required Field Indicators** +All generic forms now clearly mark required fields with a visual indicator, making it easier to understand which information is needed to continue. + +- **Improved Dockertron UI in Projects** +Labels, buttons, and the form order in Projects Dockertron integration have been refined for a more intuitive experience. Button labels are clearer, empty-project buttons are more visible, and Dockerfile fields are prioritized for greater usability. + +- **Addon Listing Table Showing Deprecated Addons** +The Addon management interface now lists deprecated addons with a clear indicator, supporting better lifecycle planning. + +- **Fixtures Segregated by Addon** +Fixtures are now separated by addon, streamlining future addon development, such as for Loki. + +- **Get Access Card Proposal Analysis** +A new proposal for the Get Access dashboard card has been analyzed and partially implemented to improve clarity and usability of access workflows. + +--- + +## 🐛 Bug Fixes + +- **Automatic Filter Reset on Account Switch** +Project and environment filters now automatically reset when switching accounts, ensuring users always see valid data for their current context and avoiding blank screens or inconsistencies. + +- **Resource Name Truncation on Creation** +When creating multiple CronJobs or resources with long names, SleakOps now shortens the Project-Environment prefix instead of the resource name itself to prevent overwriting and ensure all resources are created correctly. + +- **Correct Alias Status for Deleted Web Services** +Aliases for deleted web services in the Dashboard now display the correct state, accurately reflecting backend deletions and avoiding misleading Deleted statuses. + +- **Domain Change in Environments No Longer Yields 400 Error** +Changing an environment domain now updates service URLs appropriately, triggers releases and deployments as needed, and avoids erroneous errors or update failures. + +- **Aurora Read Replica Public Subnet Fix** +Public subnet configuration errors for Aurora Read Replicas have been resolved, ensuring databases are exposed as required. + +- **Dependency Deletion Protection on Cluster Shutdown** +Clusters can now be properly shut down without false deletion protection warnings on dependencies. + +- **ProjectEnv Transition Error on Cluster Start Fixed** +The issue preventing clusters from starting due to lingering projectEnv transitions has been resolved. Creating volumes is now properly restricted when clusters are powered off. + +- **Redirection After Project Creation with Dockertron** +Upon completing project creation with Dockertron enabled, users are now redirected to Dockertrons executions screen with the new project preloaded, ensuring a smooth and predictable workflow. + +--- From 13688dc78ed19e7362ecefe305e1e859dedeccd9 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:54:21 -0300 Subject: [PATCH 15/45] Publish version 2.7.0 2026-03-16 esp --- .../changelog/es/2026-03-16-version-2.7.0.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..0e6a44acf --- /dev/null +++ b/content/changelog/es/2026-03-16-version-2.7.0.md @@ -0,0 +1,86 @@ +--- +title: Versi3n 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` 3 16 de marzo de 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Addon Loki V2** +Ahora puedes instalar el nuevo addon Loki V2 junto a Grafana Alloy, lo que permite una soluci3n moderna y m3s estable para logs. El Loki anterior sigue estando soportado y puedes tener ambos activos en paralelo, estableci3ndose Loki V2 como datasource por defecto si ambos est3n presentes. Adem3s, los addons ahora muestran si est3n deprecados para facilitar la planificaci3n de migraciones. + +- **Addon Headlamp integrado** +Headlamp est3 disponible como addon nativo, permitiendo acceso directo y autenticado por token a los recursos del cluster desde la interfaz de SleakOps. Los usuarios pueden abrir Headlamp con un solo clic, reutilizando tokens vigentes para agilizar el acceso seguro, sin autenticaciones manuales. + +- **Flujo de creaci3n de Proyectos con Dockertron mejorado** +Dockertron est3 integrado en el formulario de creaci3n de Proyectos. Ahora puedes generar el Dockerfile de manera autom3tica usando GenAI, disfrutar de un flujo guiado y recibir notificaciones al finalizar la dockerizaci3n. + +- **Soporte y flujos dedicados para autodiagn3sticos** +El flujo de tickets de autodiagn3stico se encuentra completamente separado del soporte tradicional. Ejecutar un autodiagn3stico abre un drawer dedicado, genera el ticket en un inbox especial y permite ver, tratar y filtrar tickets de autodiagn3stico en una nueva pantalla vinculada al workload. Esto mejora la visibilidad del soporte y la experiencia de usuario de los chequeos autom3ticos de salud. + +--- + +## ✨ Mejoras + +- **Selecci3n autom3tica del entorno al crear Project** +Al crear un nuevo entorno desde el formulario de Proyecto, el selector de entornos ahora resalta autom3ticamente el entorno creado. El bot3n de creaci3n r3pida junto al selector es visible solo para usuarios con permiso de configuraci3n, mejorando la seguridad y la usabilidad. + +- **Visibilidad mejorada del estado de Addons** +Ahora los addons deprecados muestran una insignia visual Deprecated tanto en el listado como en el detalle del drawer, ayudando a evitar stacks obsoletos y a reducir riesgos. + +- **Editor avanzado de YAML para configurar Addons** +La edici3n de valores YAML personalizados en addons se realiza con un editor de c3digo avanzado, igual que en Extra Charts, lo que aporta mayor legibilidad, menos errores y una experiencia m3s c3moda para usuarios t3cnicos. + +- **Visibilidad de upgrades programados en los clusters** +Cuando un cluster tiene un upgrade pendiente o programado, ahora se muestra un badge y un destacado visual en la card del Dashboard correspondiente, permitiendo anticipar cambios y tomar medidas preventivas. + +- **Indicadores de campos obligatorios en formularios** +Todos los formularios gen3ricos ahora muestran de manera clara los campos obligatorios, facilitando al usuario saber qu3 completar para continuar. + +- **Interfaz de Dockertron en Projects m3s intuitiva** +Se mejoraron etiquetas, botones y el orden en la integraci3n de Dockertron en el formulario de Project. Los nuevos labels son m3s claros, el bot3n para proyectos vac5s es m3s visible y el campo Dockerfile aparece primero para mejor usabilidad. + +- **Tabla de Addons ahora muestra los deprecados** +La gesti3n de addons incluye la visualizaci3n de los que est3n deprecados, facilitando la planificaci3n del ciclo de vida. + +- **Fixtures segregados por addon** +Ahora los fixtures se encuentran separados por addon, facilitando el desarrollo futuro de nuevos addons como Loki. + +- **An3lisis de nueva propuesta para la card de Get Access** +Se analiz3 e implement3 parcialmente una propuesta para la card de acceso del dashboard, mejorando la claridad y usabilidad de los flujos de acceso. + +--- + +## 🐛 Correcciones + +- **Reseteo autom3tico de filtros al cambiar de cuenta** +Al cambiar de cuenta, los filtros de proyecto y entorno se restablecen por defecto, evitando datos inconsistentes o pantallas vac5as y garantizando que siempre se muestren recursos v3lidos. + +- **Soluci3n a truncado de nombres de recursos** +Al crear m3ltiples CronJobs u otros recursos con nombres largos, ahora se acorta el prefijo Project-Environment en vez del nombre del recurso, asegurando que todos se creen correctamente y sin reemplazos indeseados. + +- **Estado de alias corregido para Web Services eliminados** +Los alias de servicios web eliminados en el Dashboard ahora reflejan el estado correcto, evitando mostrar 'Deleted' de manera err3nea. + +- **Correcci3n del error 400 al cambiar dominio en entornos** +Al cambiar el dominio de un Environment, las URLs de los servicios se actualizan, se dispara un nuevo release y deployment, y se evita el error 400 por falta de cambios. + +- **Subnet p3blica correcta en replica de lectura Aurora** +Se resolvieron problemas de configuraci3n en la subnet de las replicas de lectura de Aurora, asegurando que la base de datos quede expuesta correctamente si es necesario. + +- **Permitir apagar clusters con protecci3n de dependency** +Ahora los clusters pueden apagarse correctamente sin advertencias err3neas de protecci3n ante eliminaci3n de dependencias. + +- **Soluci3n al error de transici3n en ProjectEnv al encender un cluster** +Se corrigi6 el error que imped6a encender clusters por una transici3n pendiente en projectEnv. Ahora crear vol6menes est3 correctamente restringido cuando el cluster est3 apagado. + +- **Redirecci3n correcta tras crear proyecto con Dockertron** +Al finalizar la creaci3n de un proyecto con Dockertron activo, ahora se redirige autom3ticamente a la pantalla de ejecuciones de Dockertron mostrando el proyecto reci6n creado, asegurando un flujo predecible y sin confusi3n. + +--- From 7acd225c8a9b80b08615072a37bffeac9aa0045a Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 18:07:45 -0300 Subject: [PATCH 16/45] Remove version 2.7.0 --- .../changelog/en/2026-03-16-version-2.7.0.md | 86 ------------------- .../changelog/es/2026-03-16-version-2.7.0.md | 86 ------------------- 2 files changed, 172 deletions(-) delete mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md delete mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md deleted file mode 100644 index 4d79788eb..000000000 --- a/content/changelog/en/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` 3 March 16, 2026 - ---- - -## 🚀 New Features - -- **Loki V2 Addon** -You can now install the Loki V2 addon with Grafana Alloy, enabling a modern, more stable logging solution. The previous Loki continues to be supported for parallel operation, with Loki V2 set as the default datasource when both are present. Deprecated status for addons is now clearly indicated for easy migration planning. - -- **Integrated Headlamp Addon** -Headlamp is now available as a native addon, allowing direct, token-authenticated access to cluster resources from the SleakOps UI. Users can launch Headlamp with one click, reusing valid tokens to streamline secure access without manual authentication. - -- **Enhanced Dockertron Workflow for Project Creation** -Dockertron is now seamlessly integrated into the Project creation form. Users can auto-generate Dockerfiles using GenAI, benefit from a guided workflow, and receive notifications when the dockerization process completes. - -- **Dedicated Autodiagnostics Support Flows** -The autodiagnostic ticket flow is now fully separated from standard support. Executing any autodiagnostic opens a specialized drawer, generates a ticket in a dedicated inbox, and lets users view, triage, and filter autodiagnostic tickets via a new workload-linked screen. This improves support visibility and user experience for automated health checks. - ---- - -## ✨ Improvements - -- **Project Creation Environment Selection** -When creating a new environment from the Project form, the environment selector now automatically highlights the newly added environment. The quick-create button beside the selector is only visible to users with the appropriate settings permissions, improving both security and usability. - -- **Improved Addon Status Visibility** -Addons that are marked as deprecated now display a visual Deprecated badge in both the Addon list and details drawer, reducing risk and helping users avoid deprecated technology stacks. - -- **Advanced YAML Editor for Addon Configuration** -Addon Custom YAML values are now edited using an advanced code editor, consistent with Extra Charts, providing better readability, error reduction, and a more comfortable configuration experience for technical users. - -- **Cluster Upgrade Scheduling Visibility** -Clusters scheduled for upgrades, or with pending upgrades, now show a prominent badge and visual highlight directly in the Dashboard cluster cards, allowing users to anticipate changes and take proactive measures. - -- **Generic Forms: Required Field Indicators** -All generic forms now clearly mark required fields with a visual indicator, making it easier to understand which information is needed to continue. - -- **Improved Dockertron UI in Projects** -Labels, buttons, and the form order in Projects Dockertron integration have been refined for a more intuitive experience. Button labels are clearer, empty-project buttons are more visible, and Dockerfile fields are prioritized for greater usability. - -- **Addon Listing Table Showing Deprecated Addons** -The Addon management interface now lists deprecated addons with a clear indicator, supporting better lifecycle planning. - -- **Fixtures Segregated by Addon** -Fixtures are now separated by addon, streamlining future addon development, such as for Loki. - -- **Get Access Card Proposal Analysis** -A new proposal for the Get Access dashboard card has been analyzed and partially implemented to improve clarity and usability of access workflows. - ---- - -## 🐛 Bug Fixes - -- **Automatic Filter Reset on Account Switch** -Project and environment filters now automatically reset when switching accounts, ensuring users always see valid data for their current context and avoiding blank screens or inconsistencies. - -- **Resource Name Truncation on Creation** -When creating multiple CronJobs or resources with long names, SleakOps now shortens the Project-Environment prefix instead of the resource name itself to prevent overwriting and ensure all resources are created correctly. - -- **Correct Alias Status for Deleted Web Services** -Aliases for deleted web services in the Dashboard now display the correct state, accurately reflecting backend deletions and avoiding misleading Deleted statuses. - -- **Domain Change in Environments No Longer Yields 400 Error** -Changing an environment domain now updates service URLs appropriately, triggers releases and deployments as needed, and avoids erroneous errors or update failures. - -- **Aurora Read Replica Public Subnet Fix** -Public subnet configuration errors for Aurora Read Replicas have been resolved, ensuring databases are exposed as required. - -- **Dependency Deletion Protection on Cluster Shutdown** -Clusters can now be properly shut down without false deletion protection warnings on dependencies. - -- **ProjectEnv Transition Error on Cluster Start Fixed** -The issue preventing clusters from starting due to lingering projectEnv transitions has been resolved. Creating volumes is now properly restricted when clusters are powered off. - -- **Redirection After Project Creation with Dockertron** -Upon completing project creation with Dockertron enabled, users are now redirected to Dockertrons executions screen with the new project preloaded, ensuring a smooth and predictable workflow. - ---- diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md deleted file mode 100644 index 0e6a44acf..000000000 --- a/content/changelog/es/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Versi3n 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`release menor` 3 16 de marzo de 2026 - ---- - -## 🚀 Nuevas funcionalidades - -- **Addon Loki V2** -Ahora puedes instalar el nuevo addon Loki V2 junto a Grafana Alloy, lo que permite una soluci3n moderna y m3s estable para logs. El Loki anterior sigue estando soportado y puedes tener ambos activos en paralelo, estableci3ndose Loki V2 como datasource por defecto si ambos est3n presentes. Adem3s, los addons ahora muestran si est3n deprecados para facilitar la planificaci3n de migraciones. - -- **Addon Headlamp integrado** -Headlamp est3 disponible como addon nativo, permitiendo acceso directo y autenticado por token a los recursos del cluster desde la interfaz de SleakOps. Los usuarios pueden abrir Headlamp con un solo clic, reutilizando tokens vigentes para agilizar el acceso seguro, sin autenticaciones manuales. - -- **Flujo de creaci3n de Proyectos con Dockertron mejorado** -Dockertron est3 integrado en el formulario de creaci3n de Proyectos. Ahora puedes generar el Dockerfile de manera autom3tica usando GenAI, disfrutar de un flujo guiado y recibir notificaciones al finalizar la dockerizaci3n. - -- **Soporte y flujos dedicados para autodiagn3sticos** -El flujo de tickets de autodiagn3stico se encuentra completamente separado del soporte tradicional. Ejecutar un autodiagn3stico abre un drawer dedicado, genera el ticket en un inbox especial y permite ver, tratar y filtrar tickets de autodiagn3stico en una nueva pantalla vinculada al workload. Esto mejora la visibilidad del soporte y la experiencia de usuario de los chequeos autom3ticos de salud. - ---- - -## ✨ Mejoras - -- **Selecci3n autom3tica del entorno al crear Project** -Al crear un nuevo entorno desde el formulario de Proyecto, el selector de entornos ahora resalta autom3ticamente el entorno creado. El bot3n de creaci3n r3pida junto al selector es visible solo para usuarios con permiso de configuraci3n, mejorando la seguridad y la usabilidad. - -- **Visibilidad mejorada del estado de Addons** -Ahora los addons deprecados muestran una insignia visual Deprecated tanto en el listado como en el detalle del drawer, ayudando a evitar stacks obsoletos y a reducir riesgos. - -- **Editor avanzado de YAML para configurar Addons** -La edici3n de valores YAML personalizados en addons se realiza con un editor de c3digo avanzado, igual que en Extra Charts, lo que aporta mayor legibilidad, menos errores y una experiencia m3s c3moda para usuarios t3cnicos. - -- **Visibilidad de upgrades programados en los clusters** -Cuando un cluster tiene un upgrade pendiente o programado, ahora se muestra un badge y un destacado visual en la card del Dashboard correspondiente, permitiendo anticipar cambios y tomar medidas preventivas. - -- **Indicadores de campos obligatorios en formularios** -Todos los formularios gen3ricos ahora muestran de manera clara los campos obligatorios, facilitando al usuario saber qu3 completar para continuar. - -- **Interfaz de Dockertron en Projects m3s intuitiva** -Se mejoraron etiquetas, botones y el orden en la integraci3n de Dockertron en el formulario de Project. Los nuevos labels son m3s claros, el bot3n para proyectos vac5s es m3s visible y el campo Dockerfile aparece primero para mejor usabilidad. - -- **Tabla de Addons ahora muestra los deprecados** -La gesti3n de addons incluye la visualizaci3n de los que est3n deprecados, facilitando la planificaci3n del ciclo de vida. - -- **Fixtures segregados por addon** -Ahora los fixtures se encuentran separados por addon, facilitando el desarrollo futuro de nuevos addons como Loki. - -- **An3lisis de nueva propuesta para la card de Get Access** -Se analiz3 e implement3 parcialmente una propuesta para la card de acceso del dashboard, mejorando la claridad y usabilidad de los flujos de acceso. - ---- - -## 🐛 Correcciones - -- **Reseteo autom3tico de filtros al cambiar de cuenta** -Al cambiar de cuenta, los filtros de proyecto y entorno se restablecen por defecto, evitando datos inconsistentes o pantallas vac5as y garantizando que siempre se muestren recursos v3lidos. - -- **Soluci3n a truncado de nombres de recursos** -Al crear m3ltiples CronJobs u otros recursos con nombres largos, ahora se acorta el prefijo Project-Environment en vez del nombre del recurso, asegurando que todos se creen correctamente y sin reemplazos indeseados. - -- **Estado de alias corregido para Web Services eliminados** -Los alias de servicios web eliminados en el Dashboard ahora reflejan el estado correcto, evitando mostrar 'Deleted' de manera err3nea. - -- **Correcci3n del error 400 al cambiar dominio en entornos** -Al cambiar el dominio de un Environment, las URLs de los servicios se actualizan, se dispara un nuevo release y deployment, y se evita el error 400 por falta de cambios. - -- **Subnet p3blica correcta en replica de lectura Aurora** -Se resolvieron problemas de configuraci3n en la subnet de las replicas de lectura de Aurora, asegurando que la base de datos quede expuesta correctamente si es necesario. - -- **Permitir apagar clusters con protecci3n de dependency** -Ahora los clusters pueden apagarse correctamente sin advertencias err3neas de protecci3n ante eliminaci3n de dependencias. - -- **Soluci3n al error de transici3n en ProjectEnv al encender un cluster** -Se corrigi6 el error que imped6a encender clusters por una transici3n pendiente en projectEnv. Ahora crear vol6menes est3 correctamente restringido cuando el cluster est3 apagado. - -- **Redirecci3n correcta tras crear proyecto con Dockertron** -Al finalizar la creaci3n de un proyecto con Dockertron activo, ahora se redirige autom3ticamente a la pantalla de ejecuciones de Dockertron mostrando el proyecto reci6n creado, asegurando un flujo predecible y sin confusi3n. - ---- From 5fcd0743d7a30d04053a5d6a60ad9fcad4500b90 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 18:08:52 -0300 Subject: [PATCH 17/45] Publish version 2.7.0 2026-03-16 en --- .../changelog/en/2026-03-16-version-2.7.0.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..aec64f5a3 --- /dev/null +++ b/content/changelog/en/2026-03-16-version-2.7.0.md @@ -0,0 +1,98 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 16, 2026 + +--- + +## 🚀 New Features + +- **Loki v2 Addon** +Deploy the new Loki v2 addon using Grafana Alloy, supporting the latest versions and providing parallel operation with the existing Loki. Users can now upgrade without data loss, benefit from improved stability, and enjoy the latest log collection features. + +- **Headlamp Addon Integration** +Enable access to the Headlamp IDE directly from the Addons section with automatic authentication. Users can seamlessly open Headlamp with the correct permissions via an integrated token, improving cluster management workflows. + +- **Automated Dockerization in Project Creation** +Integrate Dockertron directly into the project creation form, allowing users to generate a Dockerfile using AI if one is missing. This accelerates onboarding and streamlines the initial deployment process for new projects. + +- **Detected Projects Analysis in Dockertron** +Dockertron now scans GitHub repositories and lists all detected application projects, letting users select which project to containerize. This optimization supports multi-project and monorepo environments. + +- **Autodiagnosis Support Tickets Separation** +Autodiagnosis support tickets are now routed into a dedicated inbox, improving support triage and tracking. A new interface displays autodiagnosis tickets, filtered by workload, and provides a focused user experience separate from standard support requests. + +- **Headlamp Addon Creation and Endpoint** +Easily create and manage the Headlamp addon, including secure access endpoints for each role and direct UI integration, simplifying advanced cluster operations. + +--- + +## ✨ Improvements + +- **Improved Project Creation Experience with Dockertron** +The UI for Dockertron integration within project creation has been enhanced for clarity and usability. Button texts are more descriptive, colors are adjusted for better visibility, and Dockerfile fields have been reordered for a more intuitive workflow. + +- **Project Creation Redirection Flow** +After creating a project with Dockertron enabled, users are now redirected automatically to the Dockertron executions screen with the newly created project loaded, ensuring a seamless workflow. + +- **Project and Environment Selector Enhancement** +When creating a project, the environment selector now pre-selects the newly created environment and only shows the quick create button to authorized users, streamlining project setup and improving security controls. + +- **Addons: Deprecated Tag Visibility** +Addons now display a "Deprecated" label when applicable in both the list and detail drawers, helping users identify legacy technology and plan necessary migrations. + +- **Cluster Upgrade Scheduling Indicator** +Clusters with a pending or scheduled upgrade now show a clear visual indicator on their dashboard card, allowing operators to plan maintenance proactively and avoid missed upgrades. + +- **Advanced YAML Editing for Addons** +Custom YAML value fields for addons now use a dedicated code editor, improving readability and reducing formatting errors during advanced configuration. + +- **Mandatory Field Indicators on Forms** +All forms consistently display a visual indicator (asterisk) for mandatory fields, making form completion clearer and reducing user errors. + +- **Inbox and Autodiagnosis Ticket Workflow** +Support for a dedicated autodiagnosis inbox and frontend separation makes it easier to manage, filter, and review autodiagnosis interactions without mixing them with other support requests. + +- **Project Filters Cleared on Account Switch** +Switching between accounts now automatically clears project and environment filters, preventing confusing states and ensuring accurate data display. + +- **Dockertron UI Decoupling and Enhancements** +The Dockertron UI no longer relies on the Project layout, making it more flexible and future-proof. + +- **Addons Documentation for IA Integration** +Comprehensive documentation is now available for the Addon creation flow, enabling AI platforms like Claude to participate in addon implementation tasks with accuracy. + +- **Cluster Dashboard "Get Access" Card Redesign** +The "Get Access" card on the Dashboard has been visually redesigned for improved accessibility and ease of use. + +- **Dockertron: Display All Process Data** +Users can now view all Dockertron processes directly in the application, streamlining debugging and process management. + +- **Fixture Separation by Addon** +Fixtures are now separated by addon, improving compatibility with upcoming features such as Loki integration and simplifying future addon development. + +--- + +## 🐛 Bug Fixes + +- **Resource Name Truncation in Multiple Deployments** +Resolved an issue where long resource names (e.g., for cronjobs) were truncated, leading to name collisions and missed deployments. Now, combined project and environment names are shortened instead, preserving unique identifiers. + +- **Alias Status Display in Dashboard after Web Service Deletion** +Deleting a web service alias now correctly updates its status in the Dashboard, reflecting removal as expected without lingering indicators. + +- **Error 400 when Changing Domain in Environment** +Switching the domain of an Environment no longer triggers a 400 error. URL updates and deployments now proceed correctly, and all relevant services reflect the new domain. + +- **Cluster Shutdown Blocked by Deletion Protection** +Fixed an issue preventing cluster shutdown due to incorrect deletion protection validation on dependencies, allowing clusters to be stopped without improper blocks. + +- **Cluster Startup Blocked by Project Environment Transition Error** +Users can now start clusters even if a project environment was left in an incorrect updating state, solving issues with volumes created during cluster shutdowns. + +--- From cef7410749182c6ffcacc56de8c452c7bb212172 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 18:08:55 -0300 Subject: [PATCH 18/45] Publish version 2.7.0 2026-03-16 esp --- .../changelog/es/2026-03-16-version-2.7.0.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..7d02f2082 --- /dev/null +++ b/content/changelog/es/2026-03-16-version-2.7.0.md @@ -0,0 +1,98 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` · 16 de marzo de 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Addon Loki v2** +Ahora puedes desplegar el nuevo addon Loki v2 utilizando Grafana Alloy, manteniendo soporte en paralelo con el Loki existente. Los usuarios cuentan con mayor estabilidad, mejoras en la recolección de logs y pueden migrar sin pérdida de información. + +- **Integración de Headlamp como Addon** +El acceso a Headlamp IDE está integrado en la sección de Addons con autenticación automática mediante token. Puedes acceder a Headlamp directamente con tus permisos sin pasos manuales, optimizando la administración de clusters. + +- **Dockerización automática en la creación de Project** +El formulario de creación de proyectos ahora integra Dockertron, permitiendo generar el Dockerfile de forma automática con IA si no existe. Esto agiliza el alta de proyectos y simplifica su despliegue inicial. + +- **Análisis de proyectos detectados en Dockertron** +Dockertron ahora escanea repositorios de GitHub y muestra todos los proyectos detectados, permitiendo elegir cuál containerizar. Esta mejora soporta monorepos y escenarios multi-proyecto. + +- **Separación de tickets de soporte para autodiagnóstico** +Los tickets de autodiagnóstico son canalizados a un inbox exclusivo, mejorando el triage y seguimiento de incidencias. Se agrega una nueva pantalla para visualizar estos tickets filtrados por workload, separando el flujo del soporte tradicional. + +- **Creación y endpoint seguro para Addon Headlamp** +Puedes crear y gestionar el addon de Headlamp con endpoints seguros por rol y acceso integrado desde la UI, facilitando operaciones avanzadas sobre el cluster. + +--- + +## ✨ Mejoras + +- **Experiencia mejorada en la creación de proyectos con Dockertron** +La interfaz para la integración de Dockertron en la creación de proyectos se renovó para mayor claridad. Se mejoraron los textos de los botones, los colores para dar mayor visibilidad y el orden de los campos para facilitar la carga del Dockerfile. + +- **Redirección automática tras crear proyecto con Dockertron** +Al finalizar la creación de un proyecto con Dockertron activo, ahora se redirige automáticamente a la pantalla de ejecuciones de Dockertron con el proyecto recién creado cargado para una experiencia más fluida. + +- **Mejoras en el selector de entorno y proyecto** +El selector de entorno en la creación de proyectos ahora preselecciona automáticamente el entorno recién creado y el botón de creación rápida solo se muestra a usuarios autorizados, optimizando el onboarding y reforzando la seguridad. + +- **Visibilidad de addons "deprecados"** +Ahora los addons incluyen una etiqueta visual "Deprecated" cuando corresponde, tanto en el listado como en el detalle, ayudando a identificar tecnología obsoleta y planificar migraciones. + +- **Indicador de upgrade programado en clusters** +Las tarjetas de clusters muestran ahora un indicador visual claro cuando tienen un upgrade pendiente o programado, permitiendo anticipar mantenimientos y evitar faltas de actualización. + +- **Edición avanzada de YAML en addons** +El campo de valores YAML personalizados de los addons ahora utiliza un editor de código dedicado, mejorando la legibilidad y reduciendo errores de formato en configuraciones avanzadas. + +- **Indicadores de obligatorio en formularios** +Todos los formularios muestran ahora de manera consistente un asterisco junto a los campos obligatorios, haciendo más intuitivo el llenado y reduciendo errores de carga. + +- **Flujo separado de tickets y inbox de autodiagnóstico** +Se incorpora un inbox exclusivo para tickets de autodiagnóstico y una pantalla dedicada en frontend para su gestión, facilitando el seguimiento sin mezclar con otras solicitudes. + +- **Reseteo automático de filtros al cambiar de cuenta** +Al cambiar de cuenta, los filtros de proyecto y entorno se limpian automáticamente, evitando confusión y garantizando visualización precisa de los datos. + +- **Desacople y mejoras en la UI de Dockertron** +La interfaz de Dockertron deja de depender del layout de proyectos, ganando flexibilidad y escalabilidad futura. + +- **Documentación del flujo de Addons para integración con IA** +Ahora se dispone de documentación completa del flujo de creación de Addons, habilitando a plataformas de IA como Claude para implementar addons rápidamente y con precisión. + +- **Rediseño de la tarjeta "Get Access" en Dashboard** +La tarjeta "Get Access" del Dashboard fue rediseñada visualmente para mejorar accesibilidad y usabilidad. + +- **Visualización de todos los procesos Dockertron** +Ya es posible ver todos los procesos de Dockertron desde la aplicación, facilitando la gestión y resolución de problemas en los procesos de dockerización. + +- **Separación de fixtures por addon** +Los fixtures se organizan ahora por addon, facilitando la compatibilidad con integraciones futuras como Loki y simplificando desarrollos de nuevos addons. + +--- + +## 🐛 Correcciones + +- **Truncamiento de nombres de recursos en despliegues múltiples** +Se resolvió la truncación de nombres largos (por ejemplo, en cronjobs), que causaba colisiones y pérdidas de despliegue. Ahora se acorta la combinación de proyecto y entorno, manteniendo identificadores únicos. + +- **Visualización de alias en Dashboard tras eliminación de web service** +Al eliminar un alias de un web service, su estado en el Dashboard se actualiza correctamente sin indicadores erróneos. + +- **Error 400 al modificar dominio en Environment** +Ahora cambiar el dominio de un Environment ya no genera errores 400. Las URLs y deployments se actualizan correctamente y todos los services reflejan el nuevo dominio. + +- **Bloqueo al apagar cluster por protección de borrado** +Se corrigió un error que impedía apagar clusters debido a una validación incorrecta de la protección contra borrado en dependencias. + +- **Bloqueo al encender cluster por transición de project environment** +Los clusters pueden encenderse normalmente, incluso si un project environment quedó en estado incorrecto durante apagados o creación de volúmenes. + +--- From a57fe5093a1536dc530c4bb56edbd234221d589e Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 19:37:02 -0300 Subject: [PATCH 19/45] Remove version 2.7.0 --- .../changelog/en/2026-03-16-version-2.7.0.md | 98 ------------------- .../changelog/es/2026-03-16-version-2.7.0.md | 98 ------------------- 2 files changed, 196 deletions(-) delete mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md delete mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md deleted file mode 100644 index aec64f5a3..000000000 --- a/content/changelog/en/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 16, 2026 - ---- - -## 🚀 New Features - -- **Loki v2 Addon** -Deploy the new Loki v2 addon using Grafana Alloy, supporting the latest versions and providing parallel operation with the existing Loki. Users can now upgrade without data loss, benefit from improved stability, and enjoy the latest log collection features. - -- **Headlamp Addon Integration** -Enable access to the Headlamp IDE directly from the Addons section with automatic authentication. Users can seamlessly open Headlamp with the correct permissions via an integrated token, improving cluster management workflows. - -- **Automated Dockerization in Project Creation** -Integrate Dockertron directly into the project creation form, allowing users to generate a Dockerfile using AI if one is missing. This accelerates onboarding and streamlines the initial deployment process for new projects. - -- **Detected Projects Analysis in Dockertron** -Dockertron now scans GitHub repositories and lists all detected application projects, letting users select which project to containerize. This optimization supports multi-project and monorepo environments. - -- **Autodiagnosis Support Tickets Separation** -Autodiagnosis support tickets are now routed into a dedicated inbox, improving support triage and tracking. A new interface displays autodiagnosis tickets, filtered by workload, and provides a focused user experience separate from standard support requests. - -- **Headlamp Addon Creation and Endpoint** -Easily create and manage the Headlamp addon, including secure access endpoints for each role and direct UI integration, simplifying advanced cluster operations. - ---- - -## ✨ Improvements - -- **Improved Project Creation Experience with Dockertron** -The UI for Dockertron integration within project creation has been enhanced for clarity and usability. Button texts are more descriptive, colors are adjusted for better visibility, and Dockerfile fields have been reordered for a more intuitive workflow. - -- **Project Creation Redirection Flow** -After creating a project with Dockertron enabled, users are now redirected automatically to the Dockertron executions screen with the newly created project loaded, ensuring a seamless workflow. - -- **Project and Environment Selector Enhancement** -When creating a project, the environment selector now pre-selects the newly created environment and only shows the quick create button to authorized users, streamlining project setup and improving security controls. - -- **Addons: Deprecated Tag Visibility** -Addons now display a "Deprecated" label when applicable in both the list and detail drawers, helping users identify legacy technology and plan necessary migrations. - -- **Cluster Upgrade Scheduling Indicator** -Clusters with a pending or scheduled upgrade now show a clear visual indicator on their dashboard card, allowing operators to plan maintenance proactively and avoid missed upgrades. - -- **Advanced YAML Editing for Addons** -Custom YAML value fields for addons now use a dedicated code editor, improving readability and reducing formatting errors during advanced configuration. - -- **Mandatory Field Indicators on Forms** -All forms consistently display a visual indicator (asterisk) for mandatory fields, making form completion clearer and reducing user errors. - -- **Inbox and Autodiagnosis Ticket Workflow** -Support for a dedicated autodiagnosis inbox and frontend separation makes it easier to manage, filter, and review autodiagnosis interactions without mixing them with other support requests. - -- **Project Filters Cleared on Account Switch** -Switching between accounts now automatically clears project and environment filters, preventing confusing states and ensuring accurate data display. - -- **Dockertron UI Decoupling and Enhancements** -The Dockertron UI no longer relies on the Project layout, making it more flexible and future-proof. - -- **Addons Documentation for IA Integration** -Comprehensive documentation is now available for the Addon creation flow, enabling AI platforms like Claude to participate in addon implementation tasks with accuracy. - -- **Cluster Dashboard "Get Access" Card Redesign** -The "Get Access" card on the Dashboard has been visually redesigned for improved accessibility and ease of use. - -- **Dockertron: Display All Process Data** -Users can now view all Dockertron processes directly in the application, streamlining debugging and process management. - -- **Fixture Separation by Addon** -Fixtures are now separated by addon, improving compatibility with upcoming features such as Loki integration and simplifying future addon development. - ---- - -## 🐛 Bug Fixes - -- **Resource Name Truncation in Multiple Deployments** -Resolved an issue where long resource names (e.g., for cronjobs) were truncated, leading to name collisions and missed deployments. Now, combined project and environment names are shortened instead, preserving unique identifiers. - -- **Alias Status Display in Dashboard after Web Service Deletion** -Deleting a web service alias now correctly updates its status in the Dashboard, reflecting removal as expected without lingering indicators. - -- **Error 400 when Changing Domain in Environment** -Switching the domain of an Environment no longer triggers a 400 error. URL updates and deployments now proceed correctly, and all relevant services reflect the new domain. - -- **Cluster Shutdown Blocked by Deletion Protection** -Fixed an issue preventing cluster shutdown due to incorrect deletion protection validation on dependencies, allowing clusters to be stopped without improper blocks. - -- **Cluster Startup Blocked by Project Environment Transition Error** -Users can now start clusters even if a project environment was left in an incorrect updating state, solving issues with volumes created during cluster shutdowns. - ---- diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md deleted file mode 100644 index 7d02f2082..000000000 --- a/content/changelog/es/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Versión 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`release menor` · 16 de marzo de 2026 - ---- - -## 🚀 Nuevas funcionalidades - -- **Addon Loki v2** -Ahora puedes desplegar el nuevo addon Loki v2 utilizando Grafana Alloy, manteniendo soporte en paralelo con el Loki existente. Los usuarios cuentan con mayor estabilidad, mejoras en la recolección de logs y pueden migrar sin pérdida de información. - -- **Integración de Headlamp como Addon** -El acceso a Headlamp IDE está integrado en la sección de Addons con autenticación automática mediante token. Puedes acceder a Headlamp directamente con tus permisos sin pasos manuales, optimizando la administración de clusters. - -- **Dockerización automática en la creación de Project** -El formulario de creación de proyectos ahora integra Dockertron, permitiendo generar el Dockerfile de forma automática con IA si no existe. Esto agiliza el alta de proyectos y simplifica su despliegue inicial. - -- **Análisis de proyectos detectados en Dockertron** -Dockertron ahora escanea repositorios de GitHub y muestra todos los proyectos detectados, permitiendo elegir cuál containerizar. Esta mejora soporta monorepos y escenarios multi-proyecto. - -- **Separación de tickets de soporte para autodiagnóstico** -Los tickets de autodiagnóstico son canalizados a un inbox exclusivo, mejorando el triage y seguimiento de incidencias. Se agrega una nueva pantalla para visualizar estos tickets filtrados por workload, separando el flujo del soporte tradicional. - -- **Creación y endpoint seguro para Addon Headlamp** -Puedes crear y gestionar el addon de Headlamp con endpoints seguros por rol y acceso integrado desde la UI, facilitando operaciones avanzadas sobre el cluster. - ---- - -## ✨ Mejoras - -- **Experiencia mejorada en la creación de proyectos con Dockertron** -La interfaz para la integración de Dockertron en la creación de proyectos se renovó para mayor claridad. Se mejoraron los textos de los botones, los colores para dar mayor visibilidad y el orden de los campos para facilitar la carga del Dockerfile. - -- **Redirección automática tras crear proyecto con Dockertron** -Al finalizar la creación de un proyecto con Dockertron activo, ahora se redirige automáticamente a la pantalla de ejecuciones de Dockertron con el proyecto recién creado cargado para una experiencia más fluida. - -- **Mejoras en el selector de entorno y proyecto** -El selector de entorno en la creación de proyectos ahora preselecciona automáticamente el entorno recién creado y el botón de creación rápida solo se muestra a usuarios autorizados, optimizando el onboarding y reforzando la seguridad. - -- **Visibilidad de addons "deprecados"** -Ahora los addons incluyen una etiqueta visual "Deprecated" cuando corresponde, tanto en el listado como en el detalle, ayudando a identificar tecnología obsoleta y planificar migraciones. - -- **Indicador de upgrade programado en clusters** -Las tarjetas de clusters muestran ahora un indicador visual claro cuando tienen un upgrade pendiente o programado, permitiendo anticipar mantenimientos y evitar faltas de actualización. - -- **Edición avanzada de YAML en addons** -El campo de valores YAML personalizados de los addons ahora utiliza un editor de código dedicado, mejorando la legibilidad y reduciendo errores de formato en configuraciones avanzadas. - -- **Indicadores de obligatorio en formularios** -Todos los formularios muestran ahora de manera consistente un asterisco junto a los campos obligatorios, haciendo más intuitivo el llenado y reduciendo errores de carga. - -- **Flujo separado de tickets y inbox de autodiagnóstico** -Se incorpora un inbox exclusivo para tickets de autodiagnóstico y una pantalla dedicada en frontend para su gestión, facilitando el seguimiento sin mezclar con otras solicitudes. - -- **Reseteo automático de filtros al cambiar de cuenta** -Al cambiar de cuenta, los filtros de proyecto y entorno se limpian automáticamente, evitando confusión y garantizando visualización precisa de los datos. - -- **Desacople y mejoras en la UI de Dockertron** -La interfaz de Dockertron deja de depender del layout de proyectos, ganando flexibilidad y escalabilidad futura. - -- **Documentación del flujo de Addons para integración con IA** -Ahora se dispone de documentación completa del flujo de creación de Addons, habilitando a plataformas de IA como Claude para implementar addons rápidamente y con precisión. - -- **Rediseño de la tarjeta "Get Access" en Dashboard** -La tarjeta "Get Access" del Dashboard fue rediseñada visualmente para mejorar accesibilidad y usabilidad. - -- **Visualización de todos los procesos Dockertron** -Ya es posible ver todos los procesos de Dockertron desde la aplicación, facilitando la gestión y resolución de problemas en los procesos de dockerización. - -- **Separación de fixtures por addon** -Los fixtures se organizan ahora por addon, facilitando la compatibilidad con integraciones futuras como Loki y simplificando desarrollos de nuevos addons. - ---- - -## 🐛 Correcciones - -- **Truncamiento de nombres de recursos en despliegues múltiples** -Se resolvió la truncación de nombres largos (por ejemplo, en cronjobs), que causaba colisiones y pérdidas de despliegue. Ahora se acorta la combinación de proyecto y entorno, manteniendo identificadores únicos. - -- **Visualización de alias en Dashboard tras eliminación de web service** -Al eliminar un alias de un web service, su estado en el Dashboard se actualiza correctamente sin indicadores erróneos. - -- **Error 400 al modificar dominio en Environment** -Ahora cambiar el dominio de un Environment ya no genera errores 400. Las URLs y deployments se actualizan correctamente y todos los services reflejan el nuevo dominio. - -- **Bloqueo al apagar cluster por protección de borrado** -Se corrigió un error que impedía apagar clusters debido a una validación incorrecta de la protección contra borrado en dependencias. - -- **Bloqueo al encender cluster por transición de project environment** -Los clusters pueden encenderse normalmente, incluso si un project environment quedó en estado incorrecto durante apagados o creación de volúmenes. - ---- From 9e1825b9d80db55fd51243114dc3fb39b6b1f0ab Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 19:38:18 -0300 Subject: [PATCH 20/45] Publish version 2.7.0 2026-03-16 en --- .../changelog/en/2026-03-16-version-2.7.0.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..a34dc5e73 --- /dev/null +++ b/content/changelog/en/2026-03-16-version-2.7.0.md @@ -0,0 +1,84 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 16, 2026 + + +## 🚀 New Features + +- **Loki V2 Addon** +You can now deploy the new Loki V2 addon with Grafana Alloy, resolving recurrent issues with previous Loki versions and future-proofing your logging stack. Both old and new Loki addons are supported in parallel, with Loki V2 taking priority as the default datasource. Users are notified about the migration options and extended log retention. + +- **Integrated Headlamp Access via Addon Link** +Integrated Headlamp access is now available directly through the addon link, with seamless token-based authentication and clear UX indication of token validity. Access the cluster without manual authentication steps, improving operation speed and security. + +- **Headlamp Addon** +You can now create and manage the Headlamp IDE directly from the addons catalog, including streamlined access to its frontend and automatic role-based token generation for secure access. + +- **Dedicated Autodiagnostic Inbox and UI** +SleakOps now separates autodiagnostic tickets from support tickets. Triggering an autodiagnostic action opens a dedicated drawer and creates a ticket in a new, dedicated inbox, with a specialized screen to display and filter these incidents by resource. + +## ✨ Improvements + +- **Dockertron in Project Creation** +You can now generate a Dockerfile automatically with Dockertron directly during project creation. This makes onboarding new applications easier and reduces manual steps. The form dynamically adapts if you choose to use Dockertron. + +- **Dockertron UI Enhancements in Project Module** +The Project interface for Dockertron has been refined: the Dockerfile field comes first, access buttons and table visuals have been sharpened, and button texts clarify their purpose, improving usability for containerization workflows. + +- **Project Creation Redirection after Dockertron** +After creating a project with Dockertron activated, users are now correctly redirected to the Dockertron executions screen, enabling immediate visibility of the containerization process and its results. + +- **Display and Management of Dockertron Processes** +All Dockertron processes are now viewable from a dedicated screen, allowing users to track the progress and history of containerization workflows. + +- **Component-Agnostic Layout for Dockertron** +Dockertron’s interface is now agnostic to the Project layout, enabling broader integration and future enhancements. + +- **Environment Selector Improvements in Project Creation** +When creating a new environment within the Project form, the selector now automatically selects the new environment and only displays quick-access options for users with proper permissions, improving efficiency and security. + +- **Obligatory Field Indicators in Forms** +All generic forms now display clear visual markers (asterisks) on required fields, reducing input errors and enhancing the filling experience. + +- **Enhanced Visibility for Cluster Upgrade Scheduling** +Cluster cards in the dashboard now highlight when an upgrade is scheduled or pending, providing better planning and operational clarity. + +- **Deprecation Badges for Addons** +The addons list and detailed views now clearly label deprecated addons, helping you avoid obsolete installations and plan migrations efficiently. + +- **Advanced YAML Editor for Addon Configuration** +Advanced addon configuration now uses a code editor for YAML values, improving readability and reducing syntax errors, consistent with the Extra Charts editor experience. + +- **Clear Project and Environment Filters on Account Switch** +Switching accounts now automatically resets project and environment filters, ensuring users always see relevant data and reducing confusion. + +- **Improved Get Access Card Proposal in Dashboard** +The Dashboard’s “Get Access” card has a new proposed design for clearer resource access management (visual update). + + +## 🐛 Bug Fixes + +- **Resource Name Truncation During Creation** +Resolved an issue where resources (such as CronJobs) with long names were truncated incorrectly, resulting in conflicts. Names are now properly shortened, preserving unique resource identities. + +- **Incorrect Alias State for Deleted Web Services** +Fixed a bug where deleted web service aliases continued to display as 'Deleted' due to backend state mismatch. The dashboard now accurately reflects alias removal and current state. + +- **Error 400 When Changing Domains in Environments** +Resolved a bug that caused a 400 error when changing the domain of an environment. Service URLs and releases are now updated properly, and deployments succeed as expected. + +- **Aurora Read Replica Not Public** +Ensured Aurora read replicas are now correctly configured as public, aligning with the intended subnet and public access settings. + +- **Cluster Fails to Start Due to ProjectEnv in Transition** +Fixed a situation where a cluster could not be started if a project environment remained stuck in transition after attempting to create a volume while the cluster was shutting down. + +- **Deletion Protection Validation Blocks Cluster Shutdown** +Fixed an incorrect validation that prevented cluster shutdown due to deletion protection on dependencies. Clusters can now be stopped as expected. + From c264667c1c181685d5bd870231ac97024137fd77 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 19:38:20 -0300 Subject: [PATCH 21/45] Publish version 2.7.0 2026-03-16 esp --- .../changelog/es/2026-03-16-version-2.7.0.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..867b77ff0 --- /dev/null +++ b/content/changelog/es/2026-03-16-version-2.7.0.md @@ -0,0 +1,84 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` · 16 de marzo de 2026 + + +## 🚀 Nuevas funcionalidades + +- **Addon Loki V2** +Ahora es posible desplegar el nuevo addon Loki V2 junto a Grafana Alloy, resolviendo errores recurrentes de versiones previas y asegurando compatibilidad futura para logs. Se permite utilizar ambos addons (Loki anterior y Loki V2) en paralelo, priorizando Loki V2 como datasource por defecto. Los usuarios reciben notificaciones sobre la migración y opciones de retención extendida de logs. + +- **Acceso integrado a Headlamp desde el enlace de addon** +Ya es posible acceder a Headlamp directamente desde el link en Addons, con autenticación automática vía token y avisos claros sobre la vigencia del acceso. Esto agiliza la operación y refuerza la seguridad al eliminar pasos manuales de autenticación. + +- **Addon Headlamp** +Ahora puedes crear y administrar el IDE Headlamp directamente desde el catálogo de addons. Incluye acceso simplificado al frontend y generación automática del token de acceso basado en roles de usuario. + +- **Inbox y pantalla dedicada para autodiagnóstico** +SleakOps separa ahora los tickets de autodiagnóstico de los de soporte. Al ejecutar acciones de autodiagnóstico, se abre un drawer exclusivo y se crea un ticket en un nuevo inbox dedicado, junto con una pantalla especializada para visualizar y filtrar estos incidentes por recurso. + +## ✨ Mejoras + +- **Integración de Dockertron en la creación de proyectos** +Ahora puedes generar automáticamente el Dockerfile de un proyecto usando Dockertron directamente desde el formulario de creación, facilitando la incorporación de nuevas aplicaciones y reduciendo pasos manuales. El formulario se adapta dinámicamente si decides usar Dockertron. + +- **Mejoras en la interfaz de Dockertron en el módulo de Proyectos** +La interfaz de Dockertron en Proyectos fue refinada: el campo Dockerfile aparece primero, se mejoraron botones y colores, y los textos ahora dejan clara su funcionalidad, optimizando la experiencia de contenerización. + +- **Redirección tras crear un proyecto usando Dockertron** +Al finalizar la creación de un proyecto con Dockertron activo, el usuario es redirigido correctamente a la pantalla de ejecuciones de Dockertron, permitiendo ver el proceso y resultados al instante. + +- **Visualización y gestión de procesos Dockertron** +Ahora puedes ver todos los procesos de Dockertron en una pantalla dedicada para monitorear el progreso e historial de la contenerización. + +- **Layout agnóstico de Dockertron** +La interfaz de Dockertron ahora es agnóstica del layout de Proyectos, permitiendo integraciones y mejoras futuras más flexibles. + +- **Mejoras en el selector de environment al crear proyectos** +Al crear un nuevo entorno desde el formulario de Proyectos, el selector carga automáticamente el nuevo environment y solo muestra la opción rápida a quienes tienen permisos, optimizando eficiencia y seguridad. + +- **Indicadores de campos obligatorios en formularios** +Todos los formularios genéricos ahora muestran un asterisco en los campos requeridos, mejorando la claridad y reduciendo errores al completar información. + +- **Mayor visibilidad de upgrades programados en clusters** +Las tarjetas de clusters en el dashboard ahora resaltan visualmente la existencia de upgrades pendientes o programados, permitiendo mejor planificación y anticipación operativa. + +- **Indicadores deprecados para Addons** +Los listados y detalles de addons muestran una etiqueta "Deprecated" para identificar fácilmente cuáles están obsoletos y ayudar a planificar migraciones adecuadas. + +- **Editor avanzado de YAML para configuración de addons** +La configuración avanzada de addons ahora utiliza un editor de código para valores YAML, facilitando la lectura y previniendo errores, consistente con la experiencia usada en Extra Charts. + +- **Reseteo automático de filtros de proyecto y entorno en cambio de cuenta** +Al cambiar de cuenta, los filtros de proyectos y entornos se limpian automáticamente, mostrando siempre información relevante y evitando confusiones. + +- **Nueva propuesta visual para la tarjeta "Get Access" en el Dashboard** +Se propone un nuevo diseño visual para la tarjeta "Get Access" que mejora la gestión de accesos del dashboard (actualización visual). + + +## 🐛 Correcciones + +- **Corrección en truncado de nombres de recursos al crearlos** +Solucionado el problema donde recursos (como CronJobs) con nombres largos eran truncados incorrectamente, generando conflictos. Ahora el truncado respeta la identidad y unicidad de cada recurso. + +- **Estado incorrecto de alias eliminados de web services** +Resuelto un bug donde los alias eliminados seguían figurando como 'Deleted' por un error de sincronización en backend. El dashboard ahora refleja con precisión el estado actual de los alias. + +- **Error 400 al cambiar dominio en entornos** +Se corrigió el error que impedía cambiar el dominio de un environment por un fallo 400, asegurando que las URLs y los Releases se actualicen correctamente y los deployments sean exitosos. + +- **Read Replica pública en Aurora** +Las Read Replicas en Aurora ahora se configuran correctamente como públicas de acuerdo al subnet y acceso esperado. + +- **Cluster bloqueado al iniciar por projectEnv en transición** +Se solucionó un escenario donde el cluster quedaba bloqueado al arrancar si un projectEnv permanecía en estado de transición tras intentar crear un volumen durante el apagado. + +- **Protección de borrado impedía apagado de clusters** +Corregida la validación errónea que impedía apagar el cluster debido a la protección de borrado en dependencias. Ahora es posible apagar los clusters normalmente. + From 8eb09c9fbacd2fc537ce58f71f89b59797af1f0a Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 20:20:10 -0300 Subject: [PATCH 22/45] Remove version 2.7.0 --- .../changelog/en/2026-03-16-version-2.7.0.md | 84 ------------------- .../changelog/es/2026-03-16-version-2.7.0.md | 84 ------------------- 2 files changed, 168 deletions(-) delete mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md delete mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md deleted file mode 100644 index a34dc5e73..000000000 --- a/content/changelog/en/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 16, 2026 - - -## 🚀 New Features - -- **Loki V2 Addon** -You can now deploy the new Loki V2 addon with Grafana Alloy, resolving recurrent issues with previous Loki versions and future-proofing your logging stack. Both old and new Loki addons are supported in parallel, with Loki V2 taking priority as the default datasource. Users are notified about the migration options and extended log retention. - -- **Integrated Headlamp Access via Addon Link** -Integrated Headlamp access is now available directly through the addon link, with seamless token-based authentication and clear UX indication of token validity. Access the cluster without manual authentication steps, improving operation speed and security. - -- **Headlamp Addon** -You can now create and manage the Headlamp IDE directly from the addons catalog, including streamlined access to its frontend and automatic role-based token generation for secure access. - -- **Dedicated Autodiagnostic Inbox and UI** -SleakOps now separates autodiagnostic tickets from support tickets. Triggering an autodiagnostic action opens a dedicated drawer and creates a ticket in a new, dedicated inbox, with a specialized screen to display and filter these incidents by resource. - -## ✨ Improvements - -- **Dockertron in Project Creation** -You can now generate a Dockerfile automatically with Dockertron directly during project creation. This makes onboarding new applications easier and reduces manual steps. The form dynamically adapts if you choose to use Dockertron. - -- **Dockertron UI Enhancements in Project Module** -The Project interface for Dockertron has been refined: the Dockerfile field comes first, access buttons and table visuals have been sharpened, and button texts clarify their purpose, improving usability for containerization workflows. - -- **Project Creation Redirection after Dockertron** -After creating a project with Dockertron activated, users are now correctly redirected to the Dockertron executions screen, enabling immediate visibility of the containerization process and its results. - -- **Display and Management of Dockertron Processes** -All Dockertron processes are now viewable from a dedicated screen, allowing users to track the progress and history of containerization workflows. - -- **Component-Agnostic Layout for Dockertron** -Dockertron’s interface is now agnostic to the Project layout, enabling broader integration and future enhancements. - -- **Environment Selector Improvements in Project Creation** -When creating a new environment within the Project form, the selector now automatically selects the new environment and only displays quick-access options for users with proper permissions, improving efficiency and security. - -- **Obligatory Field Indicators in Forms** -All generic forms now display clear visual markers (asterisks) on required fields, reducing input errors and enhancing the filling experience. - -- **Enhanced Visibility for Cluster Upgrade Scheduling** -Cluster cards in the dashboard now highlight when an upgrade is scheduled or pending, providing better planning and operational clarity. - -- **Deprecation Badges for Addons** -The addons list and detailed views now clearly label deprecated addons, helping you avoid obsolete installations and plan migrations efficiently. - -- **Advanced YAML Editor for Addon Configuration** -Advanced addon configuration now uses a code editor for YAML values, improving readability and reducing syntax errors, consistent with the Extra Charts editor experience. - -- **Clear Project and Environment Filters on Account Switch** -Switching accounts now automatically resets project and environment filters, ensuring users always see relevant data and reducing confusion. - -- **Improved Get Access Card Proposal in Dashboard** -The Dashboard’s “Get Access” card has a new proposed design for clearer resource access management (visual update). - - -## 🐛 Bug Fixes - -- **Resource Name Truncation During Creation** -Resolved an issue where resources (such as CronJobs) with long names were truncated incorrectly, resulting in conflicts. Names are now properly shortened, preserving unique resource identities. - -- **Incorrect Alias State for Deleted Web Services** -Fixed a bug where deleted web service aliases continued to display as 'Deleted' due to backend state mismatch. The dashboard now accurately reflects alias removal and current state. - -- **Error 400 When Changing Domains in Environments** -Resolved a bug that caused a 400 error when changing the domain of an environment. Service URLs and releases are now updated properly, and deployments succeed as expected. - -- **Aurora Read Replica Not Public** -Ensured Aurora read replicas are now correctly configured as public, aligning with the intended subnet and public access settings. - -- **Cluster Fails to Start Due to ProjectEnv in Transition** -Fixed a situation where a cluster could not be started if a project environment remained stuck in transition after attempting to create a volume while the cluster was shutting down. - -- **Deletion Protection Validation Blocks Cluster Shutdown** -Fixed an incorrect validation that prevented cluster shutdown due to deletion protection on dependencies. Clusters can now be stopped as expected. - diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md deleted file mode 100644 index 867b77ff0..000000000 --- a/content/changelog/es/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Versión 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`release menor` · 16 de marzo de 2026 - - -## 🚀 Nuevas funcionalidades - -- **Addon Loki V2** -Ahora es posible desplegar el nuevo addon Loki V2 junto a Grafana Alloy, resolviendo errores recurrentes de versiones previas y asegurando compatibilidad futura para logs. Se permite utilizar ambos addons (Loki anterior y Loki V2) en paralelo, priorizando Loki V2 como datasource por defecto. Los usuarios reciben notificaciones sobre la migración y opciones de retención extendida de logs. - -- **Acceso integrado a Headlamp desde el enlace de addon** -Ya es posible acceder a Headlamp directamente desde el link en Addons, con autenticación automática vía token y avisos claros sobre la vigencia del acceso. Esto agiliza la operación y refuerza la seguridad al eliminar pasos manuales de autenticación. - -- **Addon Headlamp** -Ahora puedes crear y administrar el IDE Headlamp directamente desde el catálogo de addons. Incluye acceso simplificado al frontend y generación automática del token de acceso basado en roles de usuario. - -- **Inbox y pantalla dedicada para autodiagnóstico** -SleakOps separa ahora los tickets de autodiagnóstico de los de soporte. Al ejecutar acciones de autodiagnóstico, se abre un drawer exclusivo y se crea un ticket en un nuevo inbox dedicado, junto con una pantalla especializada para visualizar y filtrar estos incidentes por recurso. - -## ✨ Mejoras - -- **Integración de Dockertron en la creación de proyectos** -Ahora puedes generar automáticamente el Dockerfile de un proyecto usando Dockertron directamente desde el formulario de creación, facilitando la incorporación de nuevas aplicaciones y reduciendo pasos manuales. El formulario se adapta dinámicamente si decides usar Dockertron. - -- **Mejoras en la interfaz de Dockertron en el módulo de Proyectos** -La interfaz de Dockertron en Proyectos fue refinada: el campo Dockerfile aparece primero, se mejoraron botones y colores, y los textos ahora dejan clara su funcionalidad, optimizando la experiencia de contenerización. - -- **Redirección tras crear un proyecto usando Dockertron** -Al finalizar la creación de un proyecto con Dockertron activo, el usuario es redirigido correctamente a la pantalla de ejecuciones de Dockertron, permitiendo ver el proceso y resultados al instante. - -- **Visualización y gestión de procesos Dockertron** -Ahora puedes ver todos los procesos de Dockertron en una pantalla dedicada para monitorear el progreso e historial de la contenerización. - -- **Layout agnóstico de Dockertron** -La interfaz de Dockertron ahora es agnóstica del layout de Proyectos, permitiendo integraciones y mejoras futuras más flexibles. - -- **Mejoras en el selector de environment al crear proyectos** -Al crear un nuevo entorno desde el formulario de Proyectos, el selector carga automáticamente el nuevo environment y solo muestra la opción rápida a quienes tienen permisos, optimizando eficiencia y seguridad. - -- **Indicadores de campos obligatorios en formularios** -Todos los formularios genéricos ahora muestran un asterisco en los campos requeridos, mejorando la claridad y reduciendo errores al completar información. - -- **Mayor visibilidad de upgrades programados en clusters** -Las tarjetas de clusters en el dashboard ahora resaltan visualmente la existencia de upgrades pendientes o programados, permitiendo mejor planificación y anticipación operativa. - -- **Indicadores deprecados para Addons** -Los listados y detalles de addons muestran una etiqueta "Deprecated" para identificar fácilmente cuáles están obsoletos y ayudar a planificar migraciones adecuadas. - -- **Editor avanzado de YAML para configuración de addons** -La configuración avanzada de addons ahora utiliza un editor de código para valores YAML, facilitando la lectura y previniendo errores, consistente con la experiencia usada en Extra Charts. - -- **Reseteo automático de filtros de proyecto y entorno en cambio de cuenta** -Al cambiar de cuenta, los filtros de proyectos y entornos se limpian automáticamente, mostrando siempre información relevante y evitando confusiones. - -- **Nueva propuesta visual para la tarjeta "Get Access" en el Dashboard** -Se propone un nuevo diseño visual para la tarjeta "Get Access" que mejora la gestión de accesos del dashboard (actualización visual). - - -## 🐛 Correcciones - -- **Corrección en truncado de nombres de recursos al crearlos** -Solucionado el problema donde recursos (como CronJobs) con nombres largos eran truncados incorrectamente, generando conflictos. Ahora el truncado respeta la identidad y unicidad de cada recurso. - -- **Estado incorrecto de alias eliminados de web services** -Resuelto un bug donde los alias eliminados seguían figurando como 'Deleted' por un error de sincronización en backend. El dashboard ahora refleja con precisión el estado actual de los alias. - -- **Error 400 al cambiar dominio en entornos** -Se corrigió el error que impedía cambiar el dominio de un environment por un fallo 400, asegurando que las URLs y los Releases se actualicen correctamente y los deployments sean exitosos. - -- **Read Replica pública en Aurora** -Las Read Replicas en Aurora ahora se configuran correctamente como públicas de acuerdo al subnet y acceso esperado. - -- **Cluster bloqueado al iniciar por projectEnv en transición** -Se solucionó un escenario donde el cluster quedaba bloqueado al arrancar si un projectEnv permanecía en estado de transición tras intentar crear un volumen durante el apagado. - -- **Protección de borrado impedía apagado de clusters** -Corregida la validación errónea que impedía apagar el cluster debido a la protección de borrado en dependencias. Ahora es posible apagar los clusters normalmente. - From a4ef28ae45370f19a1e1e209624024c5511e3506 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:21:53 -0300 Subject: [PATCH 23/45] Publish version 2.7.0 2026-03-16 en --- .../changelog/en/2026-03-16-version-2.7.0.md | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..e2563db72 --- /dev/null +++ b/content/changelog/en/2026-03-16-version-2.7.0.md @@ -0,0 +1,75 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 16, 2026 + +--- + +## 🚀 New Features + +- **Integrated Headlamp Addon with Secure Access** + Users can now install Headlamp as an addon and access its dashboard directly from SleakOps, with automatic authentication via generated tokens based on their role. This simplifies cluster monitoring without extra logins and enhances security. + +- **Loki v2 Addon with Alloy Support and Deprecation Handling** + Loki v2 is now available as a new addon, deployed with Grafana Alloy for improved log collection and reliability. Existing Loki installations remain supported for seamless migration, and deprecated addons are clearly flagged both in the list and details view to inform upgrade decisions. + +- **Dedicated Inbox and Enhanced Workflow for Autodiagnosis** + Autodiagnosis tickets now have a dedicated inbox, improving workflow separation and triage. A new Autodiagnosis Tickets screen allows focused management, with resource filters and direct access from Workload actions. The autodiagnosis drawer provides a consistent, expandable UI for reviewing and managing these tickets. + +--- + +## ✨ Improvements + +- **Cluster Upgrade Status Visibility** + Cluster cards in the dashboard now feature a visual indicator when an upgrade is scheduled or pending, helping users anticipate and plan maintenance activities proactively. + +- **Dockertron Integration and UI Enhancements in Project Creation** + The Project creation form now offers an integrated Dockertron option to generate Dockerfiles using GenAI if one is missing, reducing configuration friction. Interface updates improve clarity, component order, and feedback during the process, while users are now redirected correctly to Dockertron on completion. + +- **Dynamic Project Detection and Selection in Dockertron** + Dockertron now detects and displays multiple candidate projects from your GitHub repository, allowing users to choose which one to containerize with precise confirmation and feedback before generating Dockerfiles. + +- **Separation of Sample Data by Addon** + Fixtures (sample data) are now organized by addon to lay groundwork for future addons like Loki, improving scalability and maintainability. + +- **Mandatory Field Indicators in Forms** + All generic forms now clearly indicate mandatory fields with an asterisk next to their label, ensuring users can easily distinguish required from optional fields and reducing submission errors. + +- **Environment Selector Optimization in Project Form** + After creating an environment from the Project form, the newly created environment is automatically pre-selected to maintain user context. The quick-create button next to the selector respects user permissions, enhancing security and workflow. + +- **Custom YAML Editor Enhancement** + Advanced addon configuration now offers a code editor for Custom YAML values, replacing plain text fields for improved readability, error reduction, and a consistent editing experience. + +--- + +## 🐛 Bug Fixes + +- **Correct Resource Name Truncation for Bulk Creation** + Fixed an issue where long resource names (such as CronJobs) were truncated incorrectly, potentially resulting in duplicate names and only one resource being created. The system now appropriately truncates the combined Project/Environment prefix and preserves unique resource identifiers. + +- **Accurate Alias State Display for Deleted Web Service Domains** + The dashboard now properly updates the state of deleted web service aliases, ensuring that removed aliases do not appear as 'Deleted' erroneously due to backend state mismatches. + +- **Domain Change Handling without Error in Environment Recycling** + Fixed a bug that caused error 400 when changing the domain of an Environment. Domain updates now trigger the correct redeployment and service URL updates, ensuring reliable rollouts for both root and non-root environments. + +- **Aurora Read Replica Now Properly Public** + Corrected an issue with Aurora read replicas unintentionally not being public due to subnet misconfiguration. + +- **Process and Environment Filters Reset on Account Switch** + Switching accounts now clears project and environment filters, preventing inconsistent or empty screens caused by stale filter states—improving navigation and data integrity across account contexts. + +- **Cluster Shutdown and Power-On Flow Fixes** + - Clusters can now be powered down even if a dependency is protected against deletion, by revising undesired deletion protection validations. + - Addressed a transition error when powering on a cluster with project environments stuck in the 'Updating' state, ensuring correct status management and preventing clusters from being stuck offline. + +- **Project Creation Flow Redirect** + Resolved an issue where users were not properly redirected to Dockertron's execution page after creating a project with Dockertron enabled, ensuring a smooth user journey. + +--- From c89a276d72f685a34b709db907f9271e91a5082b Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:21:56 -0300 Subject: [PATCH 24/45] Publish version 2.7.0 2026-03-16 esp --- .../changelog/es/2026-03-16-version-2.7.0.md | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md new file mode 100644 index 000000000..35a8f626f --- /dev/null +++ b/content/changelog/es/2026-03-16-version-2.7.0.md @@ -0,0 +1,75 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` · 16 de marzo de 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Addon de Headlamp integrado con acceso seguro** + Ahora es posible instalar Headlamp como addon y acceder a su dashboard directamente desde SleakOps, con autenticación automática mediante tokens generados según el rol del usuario. Esto simplifica el monitoreo del cluster sin requerir logins adicionales y refuerza la seguridad. + +- **Addon Loki v2 con soporte Alloy y manejo de deprecados** + Loki v2 ya está disponible como nuevo addon, desplegado junto con Grafana Alloy para una recolección de logs más confiable. El Loki anterior sigue estando soportado para facilitar la migración, y los addons marcados como obsoletos se muestran claramente tanto en el listado como en los detalles para tomar decisiones de mejora. + +- **Inbox dedicado y flujos mejorados para autodiagnósticos** + Los tickets de autodiagnóstico ahora cuentan con un inbox dedicado que optimiza la separación y el triage. Existe una nueva pantalla específica para tickets de autodiagnóstico con filtros por recurso y acceso directo desde las acciones de los Workloads. El drawer de autodiagnóstico brinda una UI consistente y ampliable para revisar y administrar estos casos. + +--- + +## ✨ Mejoras + +- **Visibilidad del estado de upgrade de clusters** + Las tarjetas de cluster en el dashboard ahora muestran un indicador visual cuando hay un upgrade programado o pendiente, ayudando a la planificación y el mantenimiento preventivo. + +- **Integración de Dockertron y mejoras de UI en creación de Proyectos** + El formulario de creación de proyecto ahora ofrece la opción de usar Dockertron integrado para generar Dockerfiles vía GenAI cuando no existe uno, reduciendo la fricción en la configuración. Las mejoras de interfaz aportan mayor claridad, mejor orden de componentes y feedback visual durante el flujo, incluyendo la redirección automática a Dockertron al finalizar. + +- **Detección y selección dinámica de proyectos en Dockertron** + Dockertron ahora detecta y muestra múltiples proyectos candidatos en el repositorio de GitHub, permitiendo al usuario elegir cuál containerizar con confirmación precisa y feedback antes de generar los Dockerfiles. + +- **Separación de datos de muestra por addon** + Los fixtures (datos de ejemplo) están organizados por addon, sentando las bases para futuras integraciones como Loki y facilitando la escalabilidad y el mantenimiento. + +- **Indicadores de campos obligatorios en formularios** + Ahora, todos los formularios genéricos indican claramente los campos obligatorios con un asterisco junto a su etiqueta, facilitando la identificación de información requerida y reduciendo errores al momento de completar datos. + +- **Optimización del selector de environment en el formulario de Proyecto** + Al crear un entorno desde el formulario de Proyecto, el nuevo environment queda preseleccionado para mantener el contexto del usuario. El botón de creación rápida junto al selector respeta los permisos del usuario, reforzando la seguridad y la experiencia. + +- **Mejora en el editor de YAML personalizado** + La configuración avanzada de addons ahora utiliza un editor de código para valores YAML personalizados, reemplazando el campo de texto plano para mejorar la legibilidad, reducir errores y estandarizar la experiencia de edición. + +--- + +## 🐛 Correcciones + +- **Corrección de truncado de nombres de recursos en creación masiva** + Se solucionó un error que truncaba de forma incorrecta nombres largos de recursos (como CronJobs), lo que podía provocar nombres duplicados y que solo se creara un recurso. Ahora, el sistema recorta solo el prefijo de Proyecto/Environment, manteniendo el identificador único de cada recurso. + +- **Visualización precisa del estado de alias eliminados en servicios web** + El dashboard ahora refleja correctamente el estado de alias eliminados de servicios web, y no muestra alias borrados como 'Deleted' debido a inconsistencias en el backend. + +- **Cambio de dominio sin error en reciclado de Environment** + Se corrigió un bug que generaba un error 400 al cambiar el dominio de un Environment. El sistema ahora ejecuta correctamente el redeployment y la actualización de URLs de servicios, para environments root y no-root. + +- **Read Replica de Aurora ahora correctamente pública** + Se corrigió la configuración de subnet en las read replicas de Aurora para que sean realmente públicas. + +- **Reinicio de filtros de proyecto y entorno al cambiar de cuenta** + Al cambiar de cuenta, los filtros de proyecto y entorno se limpian automáticamente, evitando inconsistencias o pantallas vacías por filtros residuales y garantizando la integridad de la navegación y los datos. + +- **Correcciones en apagado y encendido de clusters** + - Ahora es posible apagar clusters incluso si una dependency tiene protección contra eliminación, revisando validaciones no deseadas. + - Se corrigió el error de transición al intentar encender un cluster con project environments atascados en estado 'Updating', posibilitando su activación correcta y evitando bloqueos. + +- **Redirección en el flujo de creación de Proyectos** + Se resolvió un issue donde, al terminar la creación de un proyecto con Dockertron activado, el usuario no era redirigido como correspondía a la pantalla de ejecuciones de Dockertron, asegurando un recorrido fluido. + +--- From 5576e719d3b2e63fb9314f0f65af0748d4697d0d Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 20:37:14 -0300 Subject: [PATCH 25/45] Remove version 2.7.0 --- .../changelog/en/2026-03-16-version-2.7.0.md | 75 ------------------- .../changelog/es/2026-03-16-version-2.7.0.md | 75 ------------------- 2 files changed, 150 deletions(-) delete mode 100644 content/changelog/en/2026-03-16-version-2.7.0.md delete mode 100644 content/changelog/es/2026-03-16-version-2.7.0.md diff --git a/content/changelog/en/2026-03-16-version-2.7.0.md b/content/changelog/en/2026-03-16-version-2.7.0.md deleted file mode 100644 index e2563db72..000000000 --- a/content/changelog/en/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 16, 2026 - ---- - -## 🚀 New Features - -- **Integrated Headlamp Addon with Secure Access** - Users can now install Headlamp as an addon and access its dashboard directly from SleakOps, with automatic authentication via generated tokens based on their role. This simplifies cluster monitoring without extra logins and enhances security. - -- **Loki v2 Addon with Alloy Support and Deprecation Handling** - Loki v2 is now available as a new addon, deployed with Grafana Alloy for improved log collection and reliability. Existing Loki installations remain supported for seamless migration, and deprecated addons are clearly flagged both in the list and details view to inform upgrade decisions. - -- **Dedicated Inbox and Enhanced Workflow for Autodiagnosis** - Autodiagnosis tickets now have a dedicated inbox, improving workflow separation and triage. A new Autodiagnosis Tickets screen allows focused management, with resource filters and direct access from Workload actions. The autodiagnosis drawer provides a consistent, expandable UI for reviewing and managing these tickets. - ---- - -## ✨ Improvements - -- **Cluster Upgrade Status Visibility** - Cluster cards in the dashboard now feature a visual indicator when an upgrade is scheduled or pending, helping users anticipate and plan maintenance activities proactively. - -- **Dockertron Integration and UI Enhancements in Project Creation** - The Project creation form now offers an integrated Dockertron option to generate Dockerfiles using GenAI if one is missing, reducing configuration friction. Interface updates improve clarity, component order, and feedback during the process, while users are now redirected correctly to Dockertron on completion. - -- **Dynamic Project Detection and Selection in Dockertron** - Dockertron now detects and displays multiple candidate projects from your GitHub repository, allowing users to choose which one to containerize with precise confirmation and feedback before generating Dockerfiles. - -- **Separation of Sample Data by Addon** - Fixtures (sample data) are now organized by addon to lay groundwork for future addons like Loki, improving scalability and maintainability. - -- **Mandatory Field Indicators in Forms** - All generic forms now clearly indicate mandatory fields with an asterisk next to their label, ensuring users can easily distinguish required from optional fields and reducing submission errors. - -- **Environment Selector Optimization in Project Form** - After creating an environment from the Project form, the newly created environment is automatically pre-selected to maintain user context. The quick-create button next to the selector respects user permissions, enhancing security and workflow. - -- **Custom YAML Editor Enhancement** - Advanced addon configuration now offers a code editor for Custom YAML values, replacing plain text fields for improved readability, error reduction, and a consistent editing experience. - ---- - -## 🐛 Bug Fixes - -- **Correct Resource Name Truncation for Bulk Creation** - Fixed an issue where long resource names (such as CronJobs) were truncated incorrectly, potentially resulting in duplicate names and only one resource being created. The system now appropriately truncates the combined Project/Environment prefix and preserves unique resource identifiers. - -- **Accurate Alias State Display for Deleted Web Service Domains** - The dashboard now properly updates the state of deleted web service aliases, ensuring that removed aliases do not appear as 'Deleted' erroneously due to backend state mismatches. - -- **Domain Change Handling without Error in Environment Recycling** - Fixed a bug that caused error 400 when changing the domain of an Environment. Domain updates now trigger the correct redeployment and service URL updates, ensuring reliable rollouts for both root and non-root environments. - -- **Aurora Read Replica Now Properly Public** - Corrected an issue with Aurora read replicas unintentionally not being public due to subnet misconfiguration. - -- **Process and Environment Filters Reset on Account Switch** - Switching accounts now clears project and environment filters, preventing inconsistent or empty screens caused by stale filter states—improving navigation and data integrity across account contexts. - -- **Cluster Shutdown and Power-On Flow Fixes** - - Clusters can now be powered down even if a dependency is protected against deletion, by revising undesired deletion protection validations. - - Addressed a transition error when powering on a cluster with project environments stuck in the 'Updating' state, ensuring correct status management and preventing clusters from being stuck offline. - -- **Project Creation Flow Redirect** - Resolved an issue where users were not properly redirected to Dockertron's execution page after creating a project with Dockertron enabled, ensuring a smooth user journey. - ---- diff --git a/content/changelog/es/2026-03-16-version-2.7.0.md b/content/changelog/es/2026-03-16-version-2.7.0.md deleted file mode 100644 index 35a8f626f..000000000 --- a/content/changelog/es/2026-03-16-version-2.7.0.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Versión 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`release menor` · 16 de marzo de 2026 - ---- - -## 🚀 Nuevas funcionalidades - -- **Addon de Headlamp integrado con acceso seguro** - Ahora es posible instalar Headlamp como addon y acceder a su dashboard directamente desde SleakOps, con autenticación automática mediante tokens generados según el rol del usuario. Esto simplifica el monitoreo del cluster sin requerir logins adicionales y refuerza la seguridad. - -- **Addon Loki v2 con soporte Alloy y manejo de deprecados** - Loki v2 ya está disponible como nuevo addon, desplegado junto con Grafana Alloy para una recolección de logs más confiable. El Loki anterior sigue estando soportado para facilitar la migración, y los addons marcados como obsoletos se muestran claramente tanto en el listado como en los detalles para tomar decisiones de mejora. - -- **Inbox dedicado y flujos mejorados para autodiagnósticos** - Los tickets de autodiagnóstico ahora cuentan con un inbox dedicado que optimiza la separación y el triage. Existe una nueva pantalla específica para tickets de autodiagnóstico con filtros por recurso y acceso directo desde las acciones de los Workloads. El drawer de autodiagnóstico brinda una UI consistente y ampliable para revisar y administrar estos casos. - ---- - -## ✨ Mejoras - -- **Visibilidad del estado de upgrade de clusters** - Las tarjetas de cluster en el dashboard ahora muestran un indicador visual cuando hay un upgrade programado o pendiente, ayudando a la planificación y el mantenimiento preventivo. - -- **Integración de Dockertron y mejoras de UI en creación de Proyectos** - El formulario de creación de proyecto ahora ofrece la opción de usar Dockertron integrado para generar Dockerfiles vía GenAI cuando no existe uno, reduciendo la fricción en la configuración. Las mejoras de interfaz aportan mayor claridad, mejor orden de componentes y feedback visual durante el flujo, incluyendo la redirección automática a Dockertron al finalizar. - -- **Detección y selección dinámica de proyectos en Dockertron** - Dockertron ahora detecta y muestra múltiples proyectos candidatos en el repositorio de GitHub, permitiendo al usuario elegir cuál containerizar con confirmación precisa y feedback antes de generar los Dockerfiles. - -- **Separación de datos de muestra por addon** - Los fixtures (datos de ejemplo) están organizados por addon, sentando las bases para futuras integraciones como Loki y facilitando la escalabilidad y el mantenimiento. - -- **Indicadores de campos obligatorios en formularios** - Ahora, todos los formularios genéricos indican claramente los campos obligatorios con un asterisco junto a su etiqueta, facilitando la identificación de información requerida y reduciendo errores al momento de completar datos. - -- **Optimización del selector de environment en el formulario de Proyecto** - Al crear un entorno desde el formulario de Proyecto, el nuevo environment queda preseleccionado para mantener el contexto del usuario. El botón de creación rápida junto al selector respeta los permisos del usuario, reforzando la seguridad y la experiencia. - -- **Mejora en el editor de YAML personalizado** - La configuración avanzada de addons ahora utiliza un editor de código para valores YAML personalizados, reemplazando el campo de texto plano para mejorar la legibilidad, reducir errores y estandarizar la experiencia de edición. - ---- - -## 🐛 Correcciones - -- **Corrección de truncado de nombres de recursos en creación masiva** - Se solucionó un error que truncaba de forma incorrecta nombres largos de recursos (como CronJobs), lo que podía provocar nombres duplicados y que solo se creara un recurso. Ahora, el sistema recorta solo el prefijo de Proyecto/Environment, manteniendo el identificador único de cada recurso. - -- **Visualización precisa del estado de alias eliminados en servicios web** - El dashboard ahora refleja correctamente el estado de alias eliminados de servicios web, y no muestra alias borrados como 'Deleted' debido a inconsistencias en el backend. - -- **Cambio de dominio sin error en reciclado de Environment** - Se corrigió un bug que generaba un error 400 al cambiar el dominio de un Environment. El sistema ahora ejecuta correctamente el redeployment y la actualización de URLs de servicios, para environments root y no-root. - -- **Read Replica de Aurora ahora correctamente pública** - Se corrigió la configuración de subnet en las read replicas de Aurora para que sean realmente públicas. - -- **Reinicio de filtros de proyecto y entorno al cambiar de cuenta** - Al cambiar de cuenta, los filtros de proyecto y entorno se limpian automáticamente, evitando inconsistencias o pantallas vacías por filtros residuales y garantizando la integridad de la navegación y los datos. - -- **Correcciones en apagado y encendido de clusters** - - Ahora es posible apagar clusters incluso si una dependency tiene protección contra eliminación, revisando validaciones no deseadas. - - Se corrigió el error de transición al intentar encender un cluster con project environments atascados en estado 'Updating', posibilitando su activación correcta y evitando bloqueos. - -- **Redirección en el flujo de creación de Proyectos** - Se resolvió un issue donde, al terminar la creación de un proyecto con Dockertron activado, el usuario no era redirigido como correspondía a la pantalla de ejecuciones de Dockertron, asegurando un recorrido fluido. - ---- From 4d987967b7af4c4f5352d2d9724e901bae64038f Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:39:38 -0300 Subject: [PATCH 26/45] Publish version 2.7.0 2026-03-17 en --- .../changelog/en/2026-03-17-version-2.7.0.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 content/changelog/en/2026-03-17-version-2.7.0.md diff --git a/content/changelog/en/2026-03-17-version-2.7.0.md b/content/changelog/en/2026-03-17-version-2.7.0.md new file mode 100644 index 000000000..49cc06e2a --- /dev/null +++ b/content/changelog/en/2026-03-17-version-2.7.0.md @@ -0,0 +1,95 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 17, 2026 + +--- + +## 🚀 New Features + +- **Integrated Headlamp Addon with Token-based Access** +You can now install the Headlamp IDE as an addon and access it directly from SleakOps with automatic token-based authentication, removing the need for manual logins and improving operational efficiency. + +- **Loki v2 Addon with Improved Reliability** +Loki v2 is now available as a new addon, leveraging Grafana Alloy for log collection and including critical stability fixes. Both the classic Loki and Loki v2 can be installed in parallel; by default, queries will prioritize Loki v2. Users are notified of this major update and can keep the previous Loki active for data retention during migration. + +- **Headlamp Addon Link: One-Click Authenticated Access** +The Headlamp addon link now generates and reuses access tokens automatically, allowing direct, role-based entry into the Headlamp UI from your cluster’s addon list, with no manual authentication required. + +- **Dedicated Autodiagnostics Ticketing and Console Screen** +Autodiagnostic tickets are now managed through a separate workflow, with a dedicated ticket inbox, expanded drawer view for diagnostics, and a new console screen to review, filter, and manage these tickets by workload. This separation makes it easier to track health checks independently from support tickets and enhances team productivity. + +- **Addon Deprecation Status Visualization** +Addons marked as deprecated now clearly display a "Deprecated" badge in both the addons list and detail drawer. This helps users plan migrations, avoid installing outdated components, and make informed upgrade decisions. + +- **AI-Driven Addon Documentation for Extensibility** +Comprehensive documentation is now available to enable rapid creation and integration of new addons using AI workflows. This guides both EKS and Helm releases, streamlining the process of adding and managing extensible dependencies. + +- **Select Environment on Project Creation with Role-Based Quick Add** +When creating a project, the environment selector now automatically preselects the environment just created, and the quick-add button beside the selector is only visible to users with "Settings" permissions. This speeds up project setup and enforces RBAC security on environment creation. + +--- + +## ✨ Improvements + +- **Complete Dockertron Integration in Project Creation** +You can now generate a Dockerfile via Dockertron directly when creating a project. The workflow includes improved UI clarity, dynamic quiz input for GenAI, project saving before starting Dockerization, and automatic feedback and redirection upon completion for a seamless onboarding experience. + +- **Enhanced Dockertron Project Detection and Selection** +Dockertron now analyzes entire GitHub repositories and presents all detected subprojects for selection, allowing you to choose exactly which application to containerize. This reduces manual steps and increases automation coverage, especially for monorepos. + +- **Backend Notification Upon Dockerization Completion** +You will now receive a notification in SleakOps whenever a Dockerization process started by Dockertron concludes, informing you of both successful and failed attempts, so you no longer need to check status manually. + +- **Improved Dockertron Project List UI and User Workflow** +The Dockertron user interface within Projects has been refined: clearer action buttons, better field ordering, enhanced button visibility, and an interface now decoupled from Project layout for a smoother and more intuitive experience. + +- **API: Comprehensive Dockertron Process Listing** +The backend API now exposes a complete list of Dockertron processes for users, enabling better tracking, visibility, and audit of all automated Dockerfile generations associated with your projects. + +- **Cluster Upgrade Scheduling Visibility in Dashboard** +Clusters with pending or scheduled upgrades now show a prominent indicator directly on the dashboard card, alerting operators to upcoming maintenance and helping with operational planning. + +- **"Get Access" Card Improvements** +The "Get Access" dashboard card has been analyzed and improved based on latest UX proposals, enhancing access flows for end users. + +- **Custom YAML Values Editor for Addons** +The custom YAML values field in addon configuration now uses a full-featured, multiline code editor, offering better readability, indentation, and error reduction compared to text input fields. + +- **Clear Required Field Indicators in All Forms** +All generic forms now display a clear visual indicator (asterisk) for mandatory fields, making it easier to see what information is required and reducing submission errors. + +--- + +## 🐛 Bug Fixes + +- **Resource Name Truncation when Creating CronJobs** +CronJobs with long Project and Environment names now retain their full resource name, preventing accidental overwriting or failed job deployments. + +- **Correct Alias State for Deleted Web Service Domains** +The dashboard now accurately reflects the state of web service aliases after deletion, ensuring deleted domains are displayed properly and reducing configuration errors. + +- **No Redirection after Project Creation with Dockertron** +After completing project creation with Dockertron, users are now correctly redirected to the Dockertron executions page, displaying the just-created project. + +- **Required Field Filters Reset on Account Switch** +Project and environment filters are properly cleared when switching accounts, preventing leftover filters from previous accounts and ensuring consistent resource views. + +- **Domain Change in Environment No Longer Causes 400 Errors** +Environments can now have their domain changed without triggering a 400 error, and service URLs update correctly, ensuring new deployment releases are recognized as valid changes. + +- **Aurora Read Replica Subnet Fix** +Aurora public read replicas are now correctly provisioned in the right subnet, resolving connectivity problems reported by users. + +- **Shutdown Blocked by Dependency Deletion Protection Resolved** +Cluster shutdowns are no longer blocked incorrectly by deletion protection on dependencies, allowing users to power off clusters smoothly when needed. + +- **Fix ProjectEnv Transition Error When Powering On Cluster** +Powering on a cluster is now reliable, even after a project environment was left in a transitional state, preventing clusters from being stuck due to volume operations. + +--- From a7f2d94d8615e50b99a159c6b874096899cdee48 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:39:40 -0300 Subject: [PATCH 27/45] Publish version 2.7.0 2026-03-17 esp --- .../changelog/es/2026-03-17-version-2.7.0.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 content/changelog/es/2026-03-17-version-2.7.0.md diff --git a/content/changelog/es/2026-03-17-version-2.7.0.md b/content/changelog/es/2026-03-17-version-2.7.0.md new file mode 100644 index 000000000..ca2af43ef --- /dev/null +++ b/content/changelog/es/2026-03-17-version-2.7.0.md @@ -0,0 +1,95 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` · 17 de marzo de 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Integración del addon Headlamp con acceso mediante token** +Ahora puedes instalar el IDE Headlamp como un addon y acceder directamente desde SleakOps utilizando autenticación automática por token, eliminando el ingreso manual y mejorando la eficiencia operativa. + +- **Addon Loki v2 con mayor confiabilidad** +Loki v2 ya está disponible como nuevo addon, empleando Grafana Alloy para la recolección de logs e incluyendo importantes mejoras de estabilidad. Se pueden instalar ambos Loki (clásico y v2) en paralelo; por defecto, las consultas priorizarán Loki v2. Se notifica a los usuarios sobre este gran cambio, permitiendo mantener el Loki anterior activo durante el período de migración para retención de datos. + +- **Enlace de Headlamp: acceso autenticado con un click** +El enlace de Headlamp ahora genera y reutiliza automáticamente tokens de acceso, permitiendo entrar a la interfaz de Headlamp desde el listado de addons del cluster de manera directa con los permisos del usuario, sin autenticación manual. + +- **Gestión y pantalla dedicada para tickets de autodiagnóstico** +Los tickets de autodiagnóstico ahora se gestionan mediante un flujo separado, con un inbox propio, drawer expandido para diagnósticos y nueva pantalla de consola para revisar, filtrar y administrar estas incidencias por workload. Esta separación facilita el seguimiento de chequeos de salud y mejora la productividad del equipo. + +- **Visualización del estado deprecado en addons** +Los addons marcados como obsoletos ahora muestran una etiqueta "Deprecated" tanto en el listado como en el detalle, ayudando a planificar migraciones, evitar la instalación de componentes desactualizados y tomar decisiones informadas de upgrade. + +- **Documentación AI-Driven para extender addons rápidamente** +Ahora hay documentación detallada para habilitar la creación e integración acelerada de nuevos addons con flujos de IA. Esta guía cubre tanto EKS como Helm Release, simplificando la gestión de dependencias y extensiones. + +- **Selección de entorno al crear proyecto y acceso rápido con permisos** +Al crear un proyecto, el selector de entorno ahora preselecciona automáticamente el entorno recién creado. El botón de creación rápida junto al selector solo es visible para usuarios con permisos de "Settings", acelerando la configuración y reforzando la seguridad RBAC. + +--- + +## ✨ Mejoras + +- **Integración completa de Dockertron en la creación de proyectos** +Ahora puedes generar un Dockerfile con Dockertron directamente desde el formulario de creación de proyecto. El flujo incluye mayor claridad en la interfaz, ingreso dinámico tipo quiz para GenAI, guardado seguro antes de dockerizar y feedback automático con redirección para una experiencia de onboarding mucho más fluida. + +- **Detección y selección mejorada de proyectos en Dockertron** +Dockertron ahora analiza repositorios completos de GitHub y presenta todos los subproyectos detectados para que decidas cuál deseas contenerizar. Esto reduce pasos manuales y potencia la automatización, especialmente en monorepositorios. + +- **Notificación al finalizar la dockerización en backend** +Ahora recibirás una notificación en SleakOps apenas finalice un proceso de dockerización iniciado con Dockertron, informando tanto éxitos como errores, para que no debas consultar manualmente el estado. + +- **Mejoras en la lista y flujo de trabajo de proyectos con Dockertron** +La interfaz de Dockertron en Projects ahora muestra botones de acción más claros, mejor orden de campos, botones más visibles y una UI desacoplada del layout anterior para una experiencia más ágil e intuitiva. + +- **API: listado completo de procesos Dockertron** +La API de backend expone ahora el listado completo de procesos Dockertron asociados a tus proyectos, facilitando el seguimiento y auditoría de todas las dockerizaciones automatizadas. + +- **Visibilidad de upgrades programados de clúster en Dashboard** +Los clústeres con upgrades pendientes o programados ahora muestran un indicador visual destacado directamente en la card del Dashboard, alertando sobre mantenimientos y mejorando la planificación operativa. + +- **Mejoras en la card "Get Access"** +Se analizaron y aplicaron mejoras en la card "Get Access" del Dashboard con base en las últimas propuestas de UX, optimizando los flujos de acceso para el usuario final. + +- **Editor avanzado de YAML para valores personalizados en addons** +El campo de valores YAML personalizados en la configuración de addons ahora utiliza un editor de código completo, permitiendo mejor legibilidad, indentación y menor riesgo de errores respecto al input textual previo. + +- **Indicadores claros de campos obligatorios en formularios** +Todos los formularios genéricos muestran ahora asteriscos u otro indicador visual junto al label de los campos obligatorios, facilitando completar la información requerida y reduciendo errores en envíos. + +--- + +## 🐛 Correcciones + +- **No se truncan los nombres de recursos al crear CronJobs** +Ahora los CronJobs con nombres extensos de proyecto y entorno mantienen el nombre completo del recurso, evitando sobreescrituras o fallos de despliegue. + +- **Estado correcto para alias de dominio de web services eliminados** +El Dashboard ahora refleja de manera precisa el estado de los alias de servicios web al eliminar dominios, evitando configuraciones inconsistentes. + +- **Redirección correcta tras crear proyecto con Dockertron** +Al finalizar la creación de un proyecto a través de Dockertron, ahora se redirige correctamente a la pantalla de ejecuciones de Dockertron mostrando el proyecto recién creado. + +- **Reseteo de filtros al cambiar de cuenta** +Los filtros de proyecto y entorno se limpian correctamente al cambiar de cuenta, evitando que filtros previos generen vistas inconsistentes o "pantallas vacías". + +- **Cambio de dominio en un entorno ya no produce errores 400** +Ahora puedes cambiar el dominio de un environment sin errores 400 y las URLs de los servicios se actualizan correctamente, reconociéndose como cambios válidos para un nuevo release. + +- **Corrección de subnet para read replica pública de Aurora** +Las replicas públicas de Aurora se aprovisionan ahora en la subnet correcta, resolviendo los problemas de conectividad reportados. + +- **Desbloqueo innecesario por deletion protection en apagado de clúster** +El apagado de clústeres ya no es bloqueado erróneamente por la protección de borrado en dependencias, permitiendo apagar clusters sin trabas. + +- **Error de transición de projectEnv al encender clúster resuelto** +Encender un clúster ahora es confiable incluso cuando un entorno de proyecto quedó en estado transitorio, evitando bloqueos debidos a operaciones de volúmenes. + +--- From 68d8dc3136d48df81e24133e9551c3d617883939 Mon Sep 17 00:00:00 2001 From: Matias Date: Fri, 20 Mar 2026 21:07:00 -0300 Subject: [PATCH 28/45] Reformat all changelogs --- content/changelog/en/2023-08-23-V1.0.0.md | 28 ----- .../changelog/en/2023-08-23-version-1.0.0.md | 38 ++++++ content/changelog/en/2023-08-29-V1.0.1.md | 18 --- .../changelog/en/2023-08-29-version-1.0.1.md | 20 +++ content/changelog/en/2023-09-04-V1.0.2.md | 22 ---- .../changelog/en/2023-09-04-version-1.0.2.md | 28 +++++ content/changelog/en/2023-09-25-V1.0.3.md | 23 ---- .../changelog/en/2023-09-25-version-1.0.3.md | 28 +++++ content/changelog/en/2023-10-11-V1.0.4.md | 23 ---- .../changelog/en/2023-10-11-version-1.0.4.md | 27 ++++ ...-V1.0.5.md => 2023-10-27-version-1.0.5.md} | 19 +-- content/changelog/en/2023-11-06-V1.1.0.md | 25 ---- .../changelog/en/2023-11-06-version-1.1.0.md | 30 +++++ content/changelog/en/2023-12-05-V1.1.1.md | 18 --- .../changelog/en/2023-12-05-version-1.1.1.md | 22 ++++ content/changelog/en/2024-01-05-V1.2.0.md | 26 ---- .../changelog/en/2024-01-05-version-1.2.0.md | 34 ++++++ content/changelog/en/2024-01-12-V1.2.1.md | 22 ---- .../changelog/en/2024-01-12-version-1.2.1.md | 27 ++++ content/changelog/en/2024-01-25-V1.2.2.md | 22 ---- .../changelog/en/2024-01-25-version-1.2.2.md | 28 +++++ content/changelog/en/2024-02-05-V1.2.3.md | 21 ---- .../changelog/en/2024-02-05-version-1.2.3.md | 26 ++++ content/changelog/en/2024-02-15-V1.2.4.md | 22 ---- .../changelog/en/2024-02-15-version-1.2.4.md | 27 ++++ content/changelog/en/2024-03-01-V1.3.0.md | 28 ----- .../changelog/en/2024-03-01-version-1.3.0.md | 39 ++++++ content/changelog/en/2024-03-06-V1.4.0.md | 25 ---- .../changelog/en/2024-03-06-version-1.4.0.md | 31 +++++ content/changelog/en/2024-04-11-V1.4.1.md | 24 ---- .../changelog/en/2024-04-11-version-1.4.1.md | 29 +++++ content/changelog/en/2024-04-25-V1.4.2.md | 21 ---- .../changelog/en/2024-04-25-version-1.4.2.md | 26 ++++ content/changelog/en/2024-05-13-V1.4.3.md | 25 ---- .../changelog/en/2024-05-13-version-1.4.3.md | 32 +++++ content/changelog/en/2024-05-23-V1.5.0.md | 27 ---- .../changelog/en/2024-05-23-version-1.5.0.md | 37 ++++++ content/changelog/en/2024-06-24-V1.5.1.md | 21 ---- .../changelog/en/2024-06-24-version-1.5.1.md | 26 ++++ content/changelog/en/2024-08-12-V1.6.0.md | 28 ----- .../changelog/en/2024-08-12-version-1.6.0.md | 37 ++++++ content/changelog/en/2024-08-22-V1.6.1.md | 22 ---- .../changelog/en/2024-08-22-version-1.6.1.md | 27 ++++ content/changelog/en/2024-09-19-V1.6.2.md | 24 ---- .../changelog/en/2024-09-19-version-1.6.2.md | 32 +++++ content/changelog/en/2024-09-27-V1.6.3.md | 20 --- .../changelog/en/2024-09-27-version-1.6.3.md | 24 ++++ content/changelog/en/2024-10-14-V1.7.0.md | 23 ---- .../changelog/en/2024-10-14-version-1.7.0.md | 30 +++++ content/changelog/en/2024-10-30-V1.7.1.md | 22 ---- .../changelog/en/2024-10-30-version-1.7.1.md | 28 +++++ content/changelog/en/2024-11-05-V1.7.2.md | 23 ---- .../changelog/en/2024-11-05-version-1.7.2.md | 30 +++++ content/changelog/en/2024-11-14-V1.7.3.md | 22 ---- .../changelog/en/2024-11-14-version-1.7.3.md | 26 ++++ content/changelog/en/2024-12-05-V1.7.4.md | 23 ---- .../changelog/en/2024-12-05-version-1.7.4.md | 31 +++++ content/changelog/en/2024-12-09-V1.7.5.md | 17 --- .../changelog/en/2024-12-09-version-1.7.5.md | 20 +++ content/changelog/en/2025-01-06-V1.7.6.md | 25 ---- .../changelog/en/2025-01-06-version-1.7.6.md | 35 ++++++ content/changelog/en/2025-02-05-V1.7.7.md | 25 ---- .../changelog/en/2025-02-05-version-1.7.7.md | 35 ++++++ content/changelog/en/2025-02-10-V1.7.8.md | 20 --- .../changelog/en/2025-02-10-version-1.7.8.md | 25 ++++ content/changelog/en/2025-02-17-V1.7.9.md | 24 ---- .../changelog/en/2025-02-17-version-1.7.9.md | 31 +++++ content/changelog/en/2025-04-01-V1.7.10.md | 30 ----- .../changelog/en/2025-04-01-version-1.7.10.md | 45 +++++++ content/changelog/en/2025-04-24-V1.7.11.md | 26 ---- .../changelog/en/2025-04-24-version-1.7.11.md | 35 ++++++ content/changelog/en/2025-05-14-V1.7.12.md | 23 ---- .../changelog/en/2025-05-14-version-1.7.12.md | 29 +++++ content/changelog/en/2025-06-02-V1.7.13.md | 27 ---- .../changelog/en/2025-06-02-version-1.7.13.md | 39 ++++++ content/changelog/en/2025-06-26-V1.7.14.md | 27 ---- .../changelog/en/2025-06-26-version-1.7.14.md | 37 ++++++ content/changelog/en/2025-07-07-V1.7.15.md | 27 ---- .../changelog/en/2025-07-07-version-1.7.15.md | 37 ++++++ content/changelog/en/2025-07-21-V1.7.16.md | 22 ---- .../changelog/en/2025-07-21-version-1.7.16.md | 27 ++++ content/changelog/en/2025-10-01-V2.0.0.md | 37 ------ .../changelog/en/2025-10-01-version-2.0.0.md | 59 +++++++++ content/changelog/en/2025-10-15-V2.0.1.md | 35 ------ .../changelog/en/2025-10-15-version-2.0.1.md | 53 ++++++++ content/changelog/en/2025-11-10-V2.1.0.md | 39 ------ .../changelog/en/2025-11-10-version-2.1.0.md | 63 ++++++++++ content/changelog/en/2025-11-13-V2.2.0.md | 23 ---- .../changelog/en/2025-11-13-version-2.2.0.md | 31 +++++ content/changelog/en/2025-11-18-V2.3.0.md | 28 ----- .../changelog/en/2025-11-18-version-2.3.0.md | 39 ++++++ content/changelog/en/2025-12-01-V2.3.1.md | 30 ----- .../changelog/en/2025-12-01-version-2.3.1.md | 43 +++++++ content/changelog/en/2025-12-19-V2.3.2.md | 44 ------- .../changelog/en/2025-12-19-version-2.3.2.md | 77 ++++++++++++ .../changelog/en/2026-01-20-version-2.4.0.md | 115 ++++++++++++------ .../changelog/en/2026-01-28-version-2.5.0.md | 35 ++++-- .../changelog/en/2026-02-04-version-2.5.1.md | 81 +++++++----- .../changelog/en/2026-02-23-version-2.6.0.md | 93 +++++++++----- .../changelog/en/2026-03-17-version-2.7.0.md | 95 --------------- content/changelog/es/2023-08-23-V1.0.0.md | 28 ----- .../changelog/es/2023-08-23-version-1.0.0.md | 38 ++++++ content/changelog/es/2023-08-29-V1.0.1.md | 17 --- .../changelog/es/2023-08-29-version-1.0.1.md | 20 +++ content/changelog/es/2023-09-04-V1.0.2.md | 22 ---- .../changelog/es/2023-09-04-version-1.0.2.md | 28 +++++ content/changelog/es/2023-09-25-V1.0.3.md | 23 ---- .../changelog/es/2023-09-25-version-1.0.3.md | 28 +++++ content/changelog/es/2023-10-11-V1.0.4.md | 23 ---- .../changelog/es/2023-10-11-version-1.0.4.md | 27 ++++ ...-V1.0.5.md => 2023-10-27-version-1.0.5.md} | 19 +-- content/changelog/es/2023-11-06-V1.1.0.md | 25 ---- .../changelog/es/2023-11-06-version-1.1.0.md | 30 +++++ content/changelog/es/2023-12-05-V1.1.1.md | 18 --- .../changelog/es/2023-12-05-version-1.1.1.md | 22 ++++ content/changelog/es/2024-01-05-V1.2.0.md | 26 ---- .../changelog/es/2024-01-05-version-1.2.0.md | 34 ++++++ content/changelog/es/2024-01-12-V1.2.1.md | 23 ---- .../changelog/es/2024-01-12-version-1.2.1.md | 27 ++++ content/changelog/es/2024-01-25-V1.2.2.md | 22 ---- .../changelog/es/2024-01-25-version-1.2.2.md | 28 +++++ content/changelog/es/2024-02-05-V1.2.3.md | 21 ---- .../changelog/es/2024-02-05-version-1.2.3.md | 26 ++++ content/changelog/es/2024-02-15-V1.2.4.md | 23 ---- .../changelog/es/2024-02-15-version-1.2.4.md | 27 ++++ content/changelog/es/2024-03-01-V1.3.0.md | 28 ----- .../changelog/es/2024-03-01-version-1.3.0.md | 39 ++++++ content/changelog/es/2024-03-06-V1.4.0.md | 26 ---- .../changelog/es/2024-03-06-version-1.4.0.md | 31 +++++ content/changelog/es/2024-04-11-V1.4.1.md | 25 ---- .../changelog/es/2024-04-11-version-1.4.1.md | 29 +++++ content/changelog/es/2024-04-25-V1.4.2.md | 22 ---- .../changelog/es/2024-04-25-version-1.4.2.md | 26 ++++ content/changelog/es/2024-05-13-V1.4.3.md | 26 ---- .../changelog/es/2024-05-13-version-1.4.3.md | 32 +++++ content/changelog/es/2024-05-23-V1.5.0.md | 28 ----- .../changelog/es/2024-05-23-version-1.5.0.md | 37 ++++++ content/changelog/es/2024-06-24-V1.5.1.md | 22 ---- .../changelog/es/2024-06-24-version-1.5.1.md | 26 ++++ content/changelog/es/2024-08-12-V1.6.0.md | 29 ----- .../changelog/es/2024-08-12-version-1.6.0.md | 37 ++++++ content/changelog/es/2024-08-22-V1.6.1.md | 23 ---- .../changelog/es/2024-08-22-version-1.6.1.md | 27 ++++ content/changelog/es/2024-09-19-V1.6.2.md | 25 ---- .../changelog/es/2024-09-19-version-1.6.2.md | 32 +++++ content/changelog/es/2024-09-27-V1.6.3.md | 21 ---- .../changelog/es/2024-09-27-version-1.6.3.md | 24 ++++ content/changelog/es/2024-10-14-V1.7.0.md | 24 ---- .../changelog/es/2024-10-14-version-1.7.0.md | 30 +++++ content/changelog/es/2024-10-30-V1.7.1.md | 23 ---- .../changelog/es/2024-10-30-version-1.7.1.md | 28 +++++ content/changelog/es/2024-11-05-V1.7.2.md | 23 ---- .../changelog/es/2024-11-05-version-1.7.2.md | 30 +++++ content/changelog/es/2024-11-14-V1.7.3.md | 22 ---- .../changelog/es/2024-11-14-version-1.7.3.md | 26 ++++ content/changelog/es/2024-12-05-V1.7.4.md | 23 ---- .../changelog/es/2024-12-05-version-1.7.4.md | 31 +++++ content/changelog/es/2024-12-09-V1.7.5.md | 17 --- .../changelog/es/2024-12-09-version-1.7.5.md | 20 +++ content/changelog/es/2025-01-06-V1.7.6.md | 25 ---- .../changelog/es/2025-01-06-version-1.7.6.md | 35 ++++++ content/changelog/es/2025-02-05-V1.7.7.md | 25 ---- .../changelog/es/2025-02-05-version-1.7.7.md | 35 ++++++ content/changelog/es/2025-02-10-V1.7.8.md | 20 --- .../changelog/es/2025-02-10-version-1.7.8.md | 25 ++++ content/changelog/es/2025-02-17-V1.7.9.md | 24 ---- .../changelog/es/2025-02-17-version-1.7.9.md | 31 +++++ content/changelog/es/2025-04-01-V1.7.10.md | 30 ----- .../changelog/es/2025-04-01-version-1.7.10.md | 45 +++++++ content/changelog/es/2025-04-24-V1.7.11.md | 26 ---- .../changelog/es/2025-04-24-version-1.7.11.md | 35 ++++++ content/changelog/es/2025-05-14-V1.7.12.md | 23 ---- .../changelog/es/2025-05-14-version-1.7.12.md | 29 +++++ content/changelog/es/2025-06-02-V1.7.13.md | 27 ---- .../changelog/es/2025-06-02-version-1.7.13.md | 39 ++++++ content/changelog/es/2025-06-26-V1.7.14.md | 26 ---- .../changelog/es/2025-06-26-version-1.7.14.md | 37 ++++++ content/changelog/es/2025-07-07-V1.7.15.md | 26 ---- .../changelog/es/2025-07-07-version-1.7.15.md | 37 ++++++ content/changelog/es/2025-07-21-V1.7.16.md | 21 ---- .../changelog/es/2025-07-21-version-1.7.16.md | 27 ++++ content/changelog/es/2025-10-01-V2.0.0.md | 37 ------ .../changelog/es/2025-10-01-version-2.0.0.md | 59 +++++++++ content/changelog/es/2025-10-15-V2.0.1.md | 34 ------ .../changelog/es/2025-10-15-version-2.0.1.md | 53 ++++++++ content/changelog/es/2025-11-10-V2.1.0.md | 39 ------ .../changelog/es/2025-11-10-version-2.1.0.md | 63 ++++++++++ content/changelog/es/2025-11-13-V2.2.0.md | 23 ---- .../changelog/es/2025-11-13-version-2.2.0.md | 31 +++++ content/changelog/es/2025-11-18-V2.3.0.md | 25 ---- .../changelog/es/2025-11-18-version-2.3.0.md | 39 ++++++ content/changelog/es/2025-12-01-V2.3.1.md | 27 ---- .../changelog/es/2025-12-01-version-2.3.1.md | 43 +++++++ content/changelog/es/2025-12-19-V2.3.2.md | 47 ------- .../changelog/es/2025-12-19-version-2.3.2.md | 77 ++++++++++++ .../changelog/es/2026-01-20-version-2.4.0.md | 115 +++++++++++------- .../changelog/es/2026-01-28-version-2.5.0.md | 34 ++++-- .../changelog/es/2026-02-04-version-2.5.1.md | 81 +++++++----- .../changelog/es/2026-02-23-version-2.6.0.md | 93 +++++++++----- .../changelog/es/2026-03-17-version-2.7.0.md | 95 --------------- 200 files changed, 3604 insertions(+), 2791 deletions(-) delete mode 100644 content/changelog/en/2023-08-23-V1.0.0.md create mode 100644 content/changelog/en/2023-08-23-version-1.0.0.md delete mode 100644 content/changelog/en/2023-08-29-V1.0.1.md create mode 100644 content/changelog/en/2023-08-29-version-1.0.1.md delete mode 100644 content/changelog/en/2023-09-04-V1.0.2.md create mode 100644 content/changelog/en/2023-09-04-version-1.0.2.md delete mode 100644 content/changelog/en/2023-09-25-V1.0.3.md create mode 100644 content/changelog/en/2023-09-25-version-1.0.3.md delete mode 100644 content/changelog/en/2023-10-11-V1.0.4.md create mode 100644 content/changelog/en/2023-10-11-version-1.0.4.md rename content/changelog/en/{2023-10-27-V1.0.5.md => 2023-10-27-version-1.0.5.md} (52%) delete mode 100644 content/changelog/en/2023-11-06-V1.1.0.md create mode 100644 content/changelog/en/2023-11-06-version-1.1.0.md delete mode 100644 content/changelog/en/2023-12-05-V1.1.1.md create mode 100644 content/changelog/en/2023-12-05-version-1.1.1.md delete mode 100644 content/changelog/en/2024-01-05-V1.2.0.md create mode 100644 content/changelog/en/2024-01-05-version-1.2.0.md delete mode 100644 content/changelog/en/2024-01-12-V1.2.1.md create mode 100644 content/changelog/en/2024-01-12-version-1.2.1.md delete mode 100644 content/changelog/en/2024-01-25-V1.2.2.md create mode 100644 content/changelog/en/2024-01-25-version-1.2.2.md delete mode 100644 content/changelog/en/2024-02-05-V1.2.3.md create mode 100644 content/changelog/en/2024-02-05-version-1.2.3.md delete mode 100644 content/changelog/en/2024-02-15-V1.2.4.md create mode 100644 content/changelog/en/2024-02-15-version-1.2.4.md delete mode 100644 content/changelog/en/2024-03-01-V1.3.0.md create mode 100644 content/changelog/en/2024-03-01-version-1.3.0.md delete mode 100644 content/changelog/en/2024-03-06-V1.4.0.md create mode 100644 content/changelog/en/2024-03-06-version-1.4.0.md delete mode 100644 content/changelog/en/2024-04-11-V1.4.1.md create mode 100644 content/changelog/en/2024-04-11-version-1.4.1.md delete mode 100644 content/changelog/en/2024-04-25-V1.4.2.md create mode 100644 content/changelog/en/2024-04-25-version-1.4.2.md delete mode 100644 content/changelog/en/2024-05-13-V1.4.3.md create mode 100644 content/changelog/en/2024-05-13-version-1.4.3.md delete mode 100644 content/changelog/en/2024-05-23-V1.5.0.md create mode 100644 content/changelog/en/2024-05-23-version-1.5.0.md delete mode 100644 content/changelog/en/2024-06-24-V1.5.1.md create mode 100644 content/changelog/en/2024-06-24-version-1.5.1.md delete mode 100644 content/changelog/en/2024-08-12-V1.6.0.md create mode 100644 content/changelog/en/2024-08-12-version-1.6.0.md delete mode 100644 content/changelog/en/2024-08-22-V1.6.1.md create mode 100644 content/changelog/en/2024-08-22-version-1.6.1.md delete mode 100644 content/changelog/en/2024-09-19-V1.6.2.md create mode 100644 content/changelog/en/2024-09-19-version-1.6.2.md delete mode 100644 content/changelog/en/2024-09-27-V1.6.3.md create mode 100644 content/changelog/en/2024-09-27-version-1.6.3.md delete mode 100644 content/changelog/en/2024-10-14-V1.7.0.md create mode 100644 content/changelog/en/2024-10-14-version-1.7.0.md delete mode 100644 content/changelog/en/2024-10-30-V1.7.1.md create mode 100644 content/changelog/en/2024-10-30-version-1.7.1.md delete mode 100644 content/changelog/en/2024-11-05-V1.7.2.md create mode 100644 content/changelog/en/2024-11-05-version-1.7.2.md delete mode 100644 content/changelog/en/2024-11-14-V1.7.3.md create mode 100644 content/changelog/en/2024-11-14-version-1.7.3.md delete mode 100644 content/changelog/en/2024-12-05-V1.7.4.md create mode 100644 content/changelog/en/2024-12-05-version-1.7.4.md delete mode 100644 content/changelog/en/2024-12-09-V1.7.5.md create mode 100644 content/changelog/en/2024-12-09-version-1.7.5.md delete mode 100644 content/changelog/en/2025-01-06-V1.7.6.md create mode 100644 content/changelog/en/2025-01-06-version-1.7.6.md delete mode 100644 content/changelog/en/2025-02-05-V1.7.7.md create mode 100644 content/changelog/en/2025-02-05-version-1.7.7.md delete mode 100644 content/changelog/en/2025-02-10-V1.7.8.md create mode 100644 content/changelog/en/2025-02-10-version-1.7.8.md delete mode 100644 content/changelog/en/2025-02-17-V1.7.9.md create mode 100644 content/changelog/en/2025-02-17-version-1.7.9.md delete mode 100644 content/changelog/en/2025-04-01-V1.7.10.md create mode 100644 content/changelog/en/2025-04-01-version-1.7.10.md delete mode 100644 content/changelog/en/2025-04-24-V1.7.11.md create mode 100644 content/changelog/en/2025-04-24-version-1.7.11.md delete mode 100644 content/changelog/en/2025-05-14-V1.7.12.md create mode 100644 content/changelog/en/2025-05-14-version-1.7.12.md delete mode 100644 content/changelog/en/2025-06-02-V1.7.13.md create mode 100644 content/changelog/en/2025-06-02-version-1.7.13.md delete mode 100644 content/changelog/en/2025-06-26-V1.7.14.md create mode 100644 content/changelog/en/2025-06-26-version-1.7.14.md delete mode 100644 content/changelog/en/2025-07-07-V1.7.15.md create mode 100644 content/changelog/en/2025-07-07-version-1.7.15.md delete mode 100644 content/changelog/en/2025-07-21-V1.7.16.md create mode 100644 content/changelog/en/2025-07-21-version-1.7.16.md delete mode 100644 content/changelog/en/2025-10-01-V2.0.0.md create mode 100644 content/changelog/en/2025-10-01-version-2.0.0.md delete mode 100644 content/changelog/en/2025-10-15-V2.0.1.md create mode 100644 content/changelog/en/2025-10-15-version-2.0.1.md delete mode 100644 content/changelog/en/2025-11-10-V2.1.0.md create mode 100644 content/changelog/en/2025-11-10-version-2.1.0.md delete mode 100644 content/changelog/en/2025-11-13-V2.2.0.md create mode 100644 content/changelog/en/2025-11-13-version-2.2.0.md delete mode 100644 content/changelog/en/2025-11-18-V2.3.0.md create mode 100644 content/changelog/en/2025-11-18-version-2.3.0.md delete mode 100644 content/changelog/en/2025-12-01-V2.3.1.md create mode 100644 content/changelog/en/2025-12-01-version-2.3.1.md delete mode 100644 content/changelog/en/2025-12-19-V2.3.2.md create mode 100644 content/changelog/en/2025-12-19-version-2.3.2.md delete mode 100644 content/changelog/en/2026-03-17-version-2.7.0.md delete mode 100644 content/changelog/es/2023-08-23-V1.0.0.md create mode 100644 content/changelog/es/2023-08-23-version-1.0.0.md delete mode 100644 content/changelog/es/2023-08-29-V1.0.1.md create mode 100644 content/changelog/es/2023-08-29-version-1.0.1.md delete mode 100644 content/changelog/es/2023-09-04-V1.0.2.md create mode 100644 content/changelog/es/2023-09-04-version-1.0.2.md delete mode 100644 content/changelog/es/2023-09-25-V1.0.3.md create mode 100644 content/changelog/es/2023-09-25-version-1.0.3.md delete mode 100644 content/changelog/es/2023-10-11-V1.0.4.md create mode 100644 content/changelog/es/2023-10-11-version-1.0.4.md rename content/changelog/es/{2023-10-27-V1.0.5.md => 2023-10-27-version-1.0.5.md} (53%) delete mode 100644 content/changelog/es/2023-11-06-V1.1.0.md create mode 100644 content/changelog/es/2023-11-06-version-1.1.0.md delete mode 100644 content/changelog/es/2023-12-05-V1.1.1.md create mode 100644 content/changelog/es/2023-12-05-version-1.1.1.md delete mode 100644 content/changelog/es/2024-01-05-V1.2.0.md create mode 100644 content/changelog/es/2024-01-05-version-1.2.0.md delete mode 100644 content/changelog/es/2024-01-12-V1.2.1.md create mode 100644 content/changelog/es/2024-01-12-version-1.2.1.md delete mode 100644 content/changelog/es/2024-01-25-V1.2.2.md create mode 100644 content/changelog/es/2024-01-25-version-1.2.2.md delete mode 100644 content/changelog/es/2024-02-05-V1.2.3.md create mode 100644 content/changelog/es/2024-02-05-version-1.2.3.md delete mode 100644 content/changelog/es/2024-02-15-V1.2.4.md create mode 100644 content/changelog/es/2024-02-15-version-1.2.4.md delete mode 100644 content/changelog/es/2024-03-01-V1.3.0.md create mode 100644 content/changelog/es/2024-03-01-version-1.3.0.md delete mode 100644 content/changelog/es/2024-03-06-V1.4.0.md create mode 100644 content/changelog/es/2024-03-06-version-1.4.0.md delete mode 100644 content/changelog/es/2024-04-11-V1.4.1.md create mode 100644 content/changelog/es/2024-04-11-version-1.4.1.md delete mode 100644 content/changelog/es/2024-04-25-V1.4.2.md create mode 100644 content/changelog/es/2024-04-25-version-1.4.2.md delete mode 100644 content/changelog/es/2024-05-13-V1.4.3.md create mode 100644 content/changelog/es/2024-05-13-version-1.4.3.md delete mode 100644 content/changelog/es/2024-05-23-V1.5.0.md create mode 100644 content/changelog/es/2024-05-23-version-1.5.0.md delete mode 100644 content/changelog/es/2024-06-24-V1.5.1.md create mode 100644 content/changelog/es/2024-06-24-version-1.5.1.md delete mode 100644 content/changelog/es/2024-08-12-V1.6.0.md create mode 100644 content/changelog/es/2024-08-12-version-1.6.0.md delete mode 100644 content/changelog/es/2024-08-22-V1.6.1.md create mode 100644 content/changelog/es/2024-08-22-version-1.6.1.md delete mode 100644 content/changelog/es/2024-09-19-V1.6.2.md create mode 100644 content/changelog/es/2024-09-19-version-1.6.2.md delete mode 100644 content/changelog/es/2024-09-27-V1.6.3.md create mode 100644 content/changelog/es/2024-09-27-version-1.6.3.md delete mode 100644 content/changelog/es/2024-10-14-V1.7.0.md create mode 100644 content/changelog/es/2024-10-14-version-1.7.0.md delete mode 100644 content/changelog/es/2024-10-30-V1.7.1.md create mode 100644 content/changelog/es/2024-10-30-version-1.7.1.md delete mode 100644 content/changelog/es/2024-11-05-V1.7.2.md create mode 100644 content/changelog/es/2024-11-05-version-1.7.2.md delete mode 100644 content/changelog/es/2024-11-14-V1.7.3.md create mode 100644 content/changelog/es/2024-11-14-version-1.7.3.md delete mode 100644 content/changelog/es/2024-12-05-V1.7.4.md create mode 100644 content/changelog/es/2024-12-05-version-1.7.4.md delete mode 100644 content/changelog/es/2024-12-09-V1.7.5.md create mode 100644 content/changelog/es/2024-12-09-version-1.7.5.md delete mode 100644 content/changelog/es/2025-01-06-V1.7.6.md create mode 100644 content/changelog/es/2025-01-06-version-1.7.6.md delete mode 100644 content/changelog/es/2025-02-05-V1.7.7.md create mode 100644 content/changelog/es/2025-02-05-version-1.7.7.md delete mode 100644 content/changelog/es/2025-02-10-V1.7.8.md create mode 100644 content/changelog/es/2025-02-10-version-1.7.8.md delete mode 100644 content/changelog/es/2025-02-17-V1.7.9.md create mode 100644 content/changelog/es/2025-02-17-version-1.7.9.md delete mode 100644 content/changelog/es/2025-04-01-V1.7.10.md create mode 100644 content/changelog/es/2025-04-01-version-1.7.10.md delete mode 100644 content/changelog/es/2025-04-24-V1.7.11.md create mode 100644 content/changelog/es/2025-04-24-version-1.7.11.md delete mode 100644 content/changelog/es/2025-05-14-V1.7.12.md create mode 100644 content/changelog/es/2025-05-14-version-1.7.12.md delete mode 100644 content/changelog/es/2025-06-02-V1.7.13.md create mode 100644 content/changelog/es/2025-06-02-version-1.7.13.md delete mode 100644 content/changelog/es/2025-06-26-V1.7.14.md create mode 100644 content/changelog/es/2025-06-26-version-1.7.14.md delete mode 100644 content/changelog/es/2025-07-07-V1.7.15.md create mode 100644 content/changelog/es/2025-07-07-version-1.7.15.md delete mode 100644 content/changelog/es/2025-07-21-V1.7.16.md create mode 100644 content/changelog/es/2025-07-21-version-1.7.16.md delete mode 100644 content/changelog/es/2025-10-01-V2.0.0.md create mode 100644 content/changelog/es/2025-10-01-version-2.0.0.md delete mode 100644 content/changelog/es/2025-10-15-V2.0.1.md create mode 100644 content/changelog/es/2025-10-15-version-2.0.1.md delete mode 100644 content/changelog/es/2025-11-10-V2.1.0.md create mode 100644 content/changelog/es/2025-11-10-version-2.1.0.md delete mode 100644 content/changelog/es/2025-11-13-V2.2.0.md create mode 100644 content/changelog/es/2025-11-13-version-2.2.0.md delete mode 100644 content/changelog/es/2025-11-18-V2.3.0.md create mode 100644 content/changelog/es/2025-11-18-version-2.3.0.md delete mode 100644 content/changelog/es/2025-12-01-V2.3.1.md create mode 100644 content/changelog/es/2025-12-01-version-2.3.1.md delete mode 100644 content/changelog/es/2025-12-19-V2.3.2.md create mode 100644 content/changelog/es/2025-12-19-version-2.3.2.md delete mode 100644 content/changelog/es/2026-03-17-version-2.7.0.md diff --git a/content/changelog/en/2023-08-23-V1.0.0.md b/content/changelog/en/2023-08-23-V1.0.0.md deleted file mode 100644 index 1ebda11d0..000000000 --- a/content/changelog/en/2023-08-23-V1.0.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 1.0.0" -slug: v1-0-0 -date: 2023-08-23 -tags: [release] ---- - -# 🚀 Version 1.0.0 - - - -23/08/2023 - -## New Features - -- **Volume Configuration:** You can now configure volumes in project environments directly from the form. -- **Nightly Shutdown with Timezone:** Added support for selecting time zones in the nightly shutdown. -- **Manual Cluster Startup:** New button to manually start clusters. -- **CloudFront Integration:** Support for using CloudFront to improve content delivery. -- **Automatic Backups:** You can configure automatic backups for dependencies. -- **Graviton Instances:** Support for using Graviton instances on nodes. -- **Encryption:** Implemented encryption in StackSettings for added security. - -## Bug Fixes - -- Resolved an issue in the billing API and cost estimation. -- Fixed errors when deleting Providers and VPNs. -- You can now delete ACM certificates used by a Load Balancer without problems. diff --git a/content/changelog/en/2023-08-23-version-1.0.0.md b/content/changelog/en/2023-08-23-version-1.0.0.md new file mode 100644 index 000000000..edc755c96 --- /dev/null +++ b/content/changelog/en/2023-08-23-version-1.0.0.md @@ -0,0 +1,38 @@ +--- +title: Version 1.0.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`major release` · 23/08/2023 + +--- + +## 🚀 New Features + +- **Volume Configuration** +You can now configure volumes in project environments directly from the form. +- **Nightly Shutdown with Timezone** +Added support for selecting time zones in the nightly shutdown. +- **Manual Cluster Startup** +New button to manually start clusters. +- **CloudFront Integration** +Support for using CloudFront to improve content delivery. +- **Automatic Backups** +You can configure automatic backups for dependencies. +- **Graviton Instances** +Support for using Graviton instances on nodes. +- **Encryption** +Implemented encryption in StackSettings for added security. + +--- + +## 🐛 Bug Fixes + +- Resolved an issue in the billing API and cost estimation. +- Fixed errors when deleting Providers and VPNs. +- You can now delete ACM certificates used by a Load Balancer without problems. + +--- diff --git a/content/changelog/en/2023-08-29-V1.0.1.md b/content/changelog/en/2023-08-29-V1.0.1.md deleted file mode 100644 index 74963ce73..000000000 --- a/content/changelog/en/2023-08-29-V1.0.1.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Version 1.0.1" -slug: v1-0-1 -date: 2023-08-29 -tags: [release] ---- - -# 🚀 Version 1.0.1 - - - - -29/08/2023 - -## New Features - -- **Subscription Management:** Login and token updates are controlled based on the subscription status. Additionally, a new API was implemented to register users and companies, validating pending subscriptions, with a new model to better manage subscriptions, integrating AwsClient. -- **Marketplace Onboarding:** Simplified process for creating users who come from a marketplace. \ No newline at end of file diff --git a/content/changelog/en/2023-08-29-version-1.0.1.md b/content/changelog/en/2023-08-29-version-1.0.1.md new file mode 100644 index 000000000..27869a2c9 --- /dev/null +++ b/content/changelog/en/2023-08-29-version-1.0.1.md @@ -0,0 +1,20 @@ +--- +title: Version 1.0.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 29/08/2023 + +--- + +## 🚀 New Features + +- **Subscription Management** +Login and token updates are controlled based on the subscription status. Additionally, a new API was implemented to register users and companies, validating pending subscriptions, with a new model to better manage subscriptions, integrating AwsClient. +- **Marketplace Onboarding** +Simplified process for creating users who come from a marketplace. + +--- diff --git a/content/changelog/en/2023-09-04-V1.0.2.md b/content/changelog/en/2023-09-04-V1.0.2.md deleted file mode 100644 index 390a0ffcd..000000000 --- a/content/changelog/en/2023-09-04-V1.0.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.0.2" -slug: v1-0-2 -date: 2023-09-04 -tags: [release] ---- - -# 🚀 Version 1.0.2 - - - -04/09/2023 - -## New Features - -- **Deployment Optimization:** Simplified the deployment process and project environment (ProjectEnv) editing, facilitating configuration and deployment. -- **Resource and Configuration Adjustments:** You can now create custom aliases for buckets. -- **Health Check Improvements:** The readiness probe for services in the development account is now optional. - -## Bug Fixes - -- Solved issues related to VPN and security parameter configuration. diff --git a/content/changelog/en/2023-09-04-version-1.0.2.md b/content/changelog/en/2023-09-04-version-1.0.2.md new file mode 100644 index 000000000..486f74d1a --- /dev/null +++ b/content/changelog/en/2023-09-04-version-1.0.2.md @@ -0,0 +1,28 @@ +--- +title: Version 1.0.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 04/09/2023 + +--- + +## 🚀 New Features + +- **Deployment Optimization** +Simplified the deployment process and project environment (ProjectEnv) editing, facilitating configuration and deployment. +- **Resource and Configuration Adjustments** +You can now create custom aliases for buckets. +- **Health Check Improvements** +The readiness probe for services in the development account is now optional. + +--- + +## 🐛 Bug Fixes + +- Solved issues related to VPN and security parameter configuration. + +--- diff --git a/content/changelog/en/2023-09-25-V1.0.3.md b/content/changelog/en/2023-09-25-V1.0.3.md deleted file mode 100644 index f8ec3d87d..000000000 --- a/content/changelog/en/2023-09-25-V1.0.3.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.0.3" -slug: v1-0-3 -date: 2023-09-25 -tags: [release] ---- - -# 🚀 Version 1.0.3 - - - -25/09/2023 - -## New Features - -- **Management Buttons and Form Improvements:** Added buttons for resource management and improved variable mapping forms. -- **Cronjobs and Domain Regeneration:** You can now stop or activate cronjobs and regenerate domains. - -## Bug Fixes - -- Solved the issue of obtaining the VPN URI in Pritunl. -- Fixed the account selection issue for viewer users. -- Improved the handling of health check information sent to the backend. diff --git a/content/changelog/en/2023-09-25-version-1.0.3.md b/content/changelog/en/2023-09-25-version-1.0.3.md new file mode 100644 index 000000000..cab913be5 --- /dev/null +++ b/content/changelog/en/2023-09-25-version-1.0.3.md @@ -0,0 +1,28 @@ +--- +title: Version 1.0.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 25/09/2023 + +--- + +## 🚀 New Features + +- **Management Buttons and Form Improvements** +Added buttons for resource management and improved variable mapping forms. +- **Cronjobs and Domain Regeneration** +You can now stop or activate cronjobs and regenerate domains. + +--- + +## 🐛 Bug Fixes + +- Solved the issue of obtaining the VPN URI in Pritunl. +- Fixed the account selection issue for viewer users. +- Improved the handling of health check information sent to the backend. + +--- diff --git a/content/changelog/en/2023-10-11-V1.0.4.md b/content/changelog/en/2023-10-11-V1.0.4.md deleted file mode 100644 index be17427a0..000000000 --- a/content/changelog/en/2023-10-11-V1.0.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.0.4" -slug: v1-0-4 -date: 2023-10-11 -tags: [release] ---- - -# 🚀 Version 1.0.4 - - - -11/10/2023 - -## New Features - -- **Refactoring and Improvements:** Refactored the dashboard and improved log visualization and the management of entity deletion. - -## Bug Fixes - -- Fixed user editing issues. -- Corrected cluster state management. -- Solved problems with environment domains. -- Fixed error handling in S3 responses with CloudFront. diff --git a/content/changelog/en/2023-10-11-version-1.0.4.md b/content/changelog/en/2023-10-11-version-1.0.4.md new file mode 100644 index 000000000..e940aacba --- /dev/null +++ b/content/changelog/en/2023-10-11-version-1.0.4.md @@ -0,0 +1,27 @@ +--- +title: Version 1.0.4 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 11/10/2023 + +--- + +## 🚀 New Features + +- **Refactoring and Improvements** +Refactored the dashboard and improved log visualization and the management of entity deletion. + +--- + +## 🐛 Bug Fixes + +- Fixed user editing issues. +- Corrected cluster state management. +- Solved problems with environment domains. +- Fixed error handling in S3 responses with CloudFront. + +--- diff --git a/content/changelog/en/2023-10-27-V1.0.5.md b/content/changelog/en/2023-10-27-version-1.0.5.md similarity index 52% rename from content/changelog/en/2023-10-27-V1.0.5.md rename to content/changelog/en/2023-10-27-version-1.0.5.md index b0211fa26..0627d559d 100644 --- a/content/changelog/en/2023-10-27-V1.0.5.md +++ b/content/changelog/en/2023-10-27-version-1.0.5.md @@ -1,17 +1,18 @@ --- -title: "Version 1.0.5" -slug: v1-0-5 -date: 2023-10-27 -tags: [release] +title: Version 1.0.5 +authors: + - name: SleakOps Team +tags: + - release --- -# 🚀 Version 1.0.5 +`patch release` · 27/10/2023 - - -27/10/2023 +--- -## Bug Fixes +## 🐛 Bug Fixes - Solved deployment issues and fixed Karpenter with spot instances. - Fixed issues in deleting entities and validating service URLs. + +--- diff --git a/content/changelog/en/2023-11-06-V1.1.0.md b/content/changelog/en/2023-11-06-V1.1.0.md deleted file mode 100644 index d532ebe79..000000000 --- a/content/changelog/en/2023-11-06-V1.1.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.1.0" -slug: v1-1-0 -date: 2023-11-06 -tags: [release] ---- - -# 🚀 Version 1.1.0 - - - -06/11/2023 - -## New Features - -- **Vargroups Management:** Added the option to show vargroups in the forms for services, workers, hooks, and cronjobs. -- **Kubecost:** Integrated Kubecost with Prometheus-stack. - -## Bug Fixes - -- Solved the issue with Karpenter on spot instances. -- Fixed user roles and user editing. -- Corrected problems when deleting an environment and the incorrect deletion of domains. -- Fixed the error when trying to manually start the cluster. -- Resolved an error in generating hooks. diff --git a/content/changelog/en/2023-11-06-version-1.1.0.md b/content/changelog/en/2023-11-06-version-1.1.0.md new file mode 100644 index 000000000..e7e1756a3 --- /dev/null +++ b/content/changelog/en/2023-11-06-version-1.1.0.md @@ -0,0 +1,30 @@ +--- +title: Version 1.1.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 06/11/2023 + +--- + +## 🚀 New Features + +- **Vargroups Management** +Added the option to show vargroups in the forms for services, workers, hooks, and cronjobs. +- **Kubecost** +Integrated Kubecost with Prometheus-stack. + +--- + +## 🐛 Bug Fixes + +- Solved the issue with Karpenter on spot instances. +- Fixed user roles and user editing. +- Corrected problems when deleting an environment and the incorrect deletion of domains. +- Fixed the error when trying to manually start the cluster. +- Resolved an error in generating hooks. + +--- diff --git a/content/changelog/en/2023-12-05-V1.1.1.md b/content/changelog/en/2023-12-05-V1.1.1.md deleted file mode 100644 index 10ea95e81..000000000 --- a/content/changelog/en/2023-12-05-V1.1.1.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Version 1.1.1" -slug: v1-1-1 -date: 2023-12-05 -tags: [release] ---- - -# 🚀 Version 1.1.1 - - - -05/12/2023 - -## New Features - -- **Log Viewer in Jobs:** Added a log viewer in the job list, similar to what already exists for deployments. -- **Dashboard v2:** Improvements in the second version of the Dashboard, with more options and better organization of information. -- **Cluster Certificates:** Cluster certificates are now automatically deleted and updated to prevent expiration issues. diff --git a/content/changelog/en/2023-12-05-version-1.1.1.md b/content/changelog/en/2023-12-05-version-1.1.1.md new file mode 100644 index 000000000..db17efe83 --- /dev/null +++ b/content/changelog/en/2023-12-05-version-1.1.1.md @@ -0,0 +1,22 @@ +--- +title: Version 1.1.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/12/2023 + +--- + +## 🚀 New Features + +- **Log Viewer in Jobs** +Added a log viewer in the job list, similar to what already exists for deployments. +- **Dashboard v2** +Improvements in the second version of the Dashboard, with more options and better organization of information. +- **Cluster Certificates** +Cluster certificates are now automatically deleted and updated to prevent expiration issues. + +--- diff --git a/content/changelog/en/2024-01-05-V1.2.0.md b/content/changelog/en/2024-01-05-V1.2.0.md deleted file mode 100644 index 4faa0bdd5..000000000 --- a/content/changelog/en/2024-01-05-V1.2.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Version 1.2.0" -slug: v1-2-0 -date: 2024-01-05 -tags: [release] ---- - -# 🚀 Version 1.2.0 - - - -05/01/2024 - -## New Features - -- **Logs in Grafana:** A data source has been configured in Grafana to display logs from S3. -- **Cluster Update Button:** A button has been added to allow cluster updates from the interface. -- **User Activity Log:** An activity log for user actions has been created. -- **Domain Validation Deploy:** You can now create a deploy that runs once domains are validated. -- **Two-Factor Authentication:** Two-factor authentication (2FA) has been added to the login for enhanced security. - -## Bug Fixes - -- An issue with builds using the same branch as the default has been fixed. -- Log reading has been improved for faster processing. -- Various frontend optimizations, including styles, search, and pending resource visibility, have been made. diff --git a/content/changelog/en/2024-01-05-version-1.2.0.md b/content/changelog/en/2024-01-05-version-1.2.0.md new file mode 100644 index 000000000..75eee5317 --- /dev/null +++ b/content/changelog/en/2024-01-05-version-1.2.0.md @@ -0,0 +1,34 @@ +--- +title: Version 1.2.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 05/01/2024 + +--- + +## 🚀 New Features + +- **Logs in Grafana** +A data source has been configured in Grafana to display logs from S3. +- **Cluster Update Button** +A button has been added to allow cluster updates from the interface. +- **User Activity Log** +An activity log for user actions has been created. +- **Domain Validation Deploy** +You can now create a deploy that runs once domains are validated. +- **Two-Factor Authentication** +Two-factor authentication (2FA) has been added to the login for enhanced security. + +--- + +## 🐛 Bug Fixes + +- An issue with builds using the same branch as the default has been fixed. +- Log reading has been improved for faster processing. +- Various frontend optimizations, including styles, search, and pending resource visibility, have been made. + +--- diff --git a/content/changelog/en/2024-01-12-V1.2.1.md b/content/changelog/en/2024-01-12-V1.2.1.md deleted file mode 100644 index 32630ffc7..000000000 --- a/content/changelog/en/2024-01-12-V1.2.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.2.1" -slug: v1-2-1 -date: 2024-12-01 -tags: [release] ---- - -# 🚀 Version 1.2.1 - - - -12/01/2024 - -## New Features - -- **Vargroup Form Optimization:** Usability improvements have been made to the Vargroup forms. -- **Provider and User Account Deletion:** Deleting a provider now also deletes associated user accounts. - -## Bug Fixes - -- A bug in ACM certificate regeneration has been fixed. -- A provider deletion issue has been corrected. diff --git a/content/changelog/en/2024-01-12-version-1.2.1.md b/content/changelog/en/2024-01-12-version-1.2.1.md new file mode 100644 index 000000000..de96876ad --- /dev/null +++ b/content/changelog/en/2024-01-12-version-1.2.1.md @@ -0,0 +1,27 @@ +--- +title: Version 1.2.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 12/01/2024 + +--- + +## 🚀 New Features + +- **Vargroup Form Optimization** +Usability improvements have been made to the Vargroup forms. +- **Provider and User Account Deletion** +Deleting a provider now also deletes associated user accounts. + +--- + +## 🐛 Bug Fixes + +- A bug in ACM certificate regeneration has been fixed. +- A provider deletion issue has been corrected. + +--- diff --git a/content/changelog/en/2024-01-25-V1.2.2.md b/content/changelog/en/2024-01-25-V1.2.2.md deleted file mode 100644 index 11b86e920..000000000 --- a/content/changelog/en/2024-01-25-V1.2.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.2.2" -slug: v1-2-2 -date: 2024-01-25 -tags: [release] ---- - -# 🚀 Version 1.2.2 - - - -25/01/2024 - -## New Features - -- **Domain Validation Button:** A "check validation" button has been added to the domain drawer for easier domain management. -- **Activity Log Table:** An activity log table has been created. -- **Access Key Encryption:** Access keys for code version providers (GIT) are now encrypted. - -## Bug Fixes - -- An issue where the API didn't correctly recreate the ACM module during regeneration has been fixed. diff --git a/content/changelog/en/2024-01-25-version-1.2.2.md b/content/changelog/en/2024-01-25-version-1.2.2.md new file mode 100644 index 000000000..a58d2d79c --- /dev/null +++ b/content/changelog/en/2024-01-25-version-1.2.2.md @@ -0,0 +1,28 @@ +--- +title: Version 1.2.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 25/01/2024 + +--- + +## 🚀 New Features + +- **Domain Validation Button** +A "check validation" button has been added to the domain drawer for easier domain management. +- **Activity Log Table** +An activity log table has been created. +- **Access Key Encryption** +Access keys for code version providers (GIT) are now encrypted. + +--- + +## 🐛 Bug Fixes + +- An issue where the API didn't correctly recreate the ACM module during regeneration has been fixed. + +--- diff --git a/content/changelog/en/2024-02-05-V1.2.3.md b/content/changelog/en/2024-02-05-V1.2.3.md deleted file mode 100644 index 0628ce03b..000000000 --- a/content/changelog/en/2024-02-05-V1.2.3.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Version 1.2.3" -slug: v1-2-3 -date: 2024-02-05 -tags: [release] ---- - -# 🚀 Version 1.2.3 - - - -05/02/2024 - -## New Features - -- **Alias Decoupling in Web Services:** The creation of aliases is now separated from the web services form. -- **IAM Password Reset:** It is now possible to reset the IAM password for a user. - -## Bug Fixes - -- A minor issue with release tasks has been corrected. diff --git a/content/changelog/en/2024-02-05-version-1.2.3.md b/content/changelog/en/2024-02-05-version-1.2.3.md new file mode 100644 index 000000000..978ec18e6 --- /dev/null +++ b/content/changelog/en/2024-02-05-version-1.2.3.md @@ -0,0 +1,26 @@ +--- +title: Version 1.2.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/02/2024 + +--- + +## 🚀 New Features + +- **Alias Decoupling in Web Services** +The creation of aliases is now separated from the web services form. +- **IAM Password Reset** +It is now possible to reset the IAM password for a user. + +--- + +## 🐛 Bug Fixes + +- A minor issue with release tasks has been corrected. + +--- diff --git a/content/changelog/en/2024-02-15-V1.2.4.md b/content/changelog/en/2024-02-15-V1.2.4.md deleted file mode 100644 index fb497524d..000000000 --- a/content/changelog/en/2024-02-15-V1.2.4.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.2.4" -slug: v1-2-4 -date: 2024-02-15 -tags: [release] ---- - -# 🚀 Version 1.2.4 - - - -15/02/2024 - -## New Features - -- **Cluster Switcher Optimization:** Cluster selector behavior has been optimized. -- **Login in AWS Subscription Flow:** The AWS subscription flow now includes the ability to log in directly. - -## Bug Fixes - -- Callback issues for Git integrations and Docker file path for GitLab have been resolved. -- Minor billing screen-related bugs have been fixed. diff --git a/content/changelog/en/2024-02-15-version-1.2.4.md b/content/changelog/en/2024-02-15-version-1.2.4.md new file mode 100644 index 000000000..8c43d9439 --- /dev/null +++ b/content/changelog/en/2024-02-15-version-1.2.4.md @@ -0,0 +1,27 @@ +--- +title: Version 1.2.4 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 15/02/2024 + +--- + +## 🚀 New Features + +- **Cluster Switcher Optimization** +Cluster selector behavior has been optimized. +- **Login in AWS Subscription Flow** +The AWS subscription flow now includes the ability to log in directly. + +--- + +## 🐛 Bug Fixes + +- Callback issues for Git integrations and Docker file path for GitLab have been resolved. +- Minor billing screen-related bugs have been fixed. + +--- diff --git a/content/changelog/en/2024-03-01-V1.3.0.md b/content/changelog/en/2024-03-01-V1.3.0.md deleted file mode 100644 index c5c85bc7b..000000000 --- a/content/changelog/en/2024-03-01-V1.3.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 1.3.0" -slug: v1-3-0 -date: 2024-03-01 -tags: [release] ---- - -# 🚀 Version 1.3.0 - - - -01/03/2024 - -## New Features - -- **Project Details View:** A detailed project view is now available in the new interface. -- **RDS Metrics API:** A new API for displaying RDS metrics has been added, improving resource visibility. -- **Improved LogViewer:** LogViewer loading is now faster and more efficient. -- **Enhanced Onboarding:** A new onboarding process has been implemented for easier setup. -- **Redis Monitoring:** Redis monitoring has been added, improving infrastructure supervision. -- **RDS Replica Configuration:** The option to configure replicas in the RDS Dependency has been added for more flexibility. -- **Domain Deletion Status:** Domain deletion now creates a deploy with `pending-approval` status, rather than an automatic deploy. -- **Job Workload Improvements:** Job workload has been improved, allowing automatic retries in case of an initial failure. - -## Bug Fixes - -- Bitbucket integration issues have been resolved. -- Undefined value issues in Vargroups have been fixed. diff --git a/content/changelog/en/2024-03-01-version-1.3.0.md b/content/changelog/en/2024-03-01-version-1.3.0.md new file mode 100644 index 000000000..6d93b494f --- /dev/null +++ b/content/changelog/en/2024-03-01-version-1.3.0.md @@ -0,0 +1,39 @@ +--- +title: Version 1.3.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 01/03/2024 + +--- + +## 🚀 New Features + +- **Project Details View** +A detailed project view is now available in the new interface. +- **RDS Metrics API** +A new API for displaying RDS metrics has been added, improving resource visibility. +- **Improved LogViewer** +LogViewer loading is now faster and more efficient. +- **Enhanced Onboarding** +A new onboarding process has been implemented for easier setup. +- **Redis Monitoring** +Redis monitoring has been added, improving infrastructure supervision. +- **RDS Replica Configuration** +The option to configure replicas in the RDS Dependency has been added for more flexibility. +- **Domain Deletion Status** +Domain deletion now creates a deploy with `pending-approval` status, rather than an automatic deploy. +- **Job Workload Improvements** +Job workload has been improved, allowing automatic retries in case of an initial failure. + +--- + +## 🐛 Bug Fixes + +- Bitbucket integration issues have been resolved. +- Undefined value issues in Vargroups have been fixed. + +--- diff --git a/content/changelog/en/2024-03-06-V1.4.0.md b/content/changelog/en/2024-03-06-V1.4.0.md deleted file mode 100644 index 69d158f9d..000000000 --- a/content/changelog/en/2024-03-06-V1.4.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.4.0" -slug: v1-4-0 -date: 2024-03-06 -tags: [release] ---- - -# 🚀 Version 1.4.0 - - - -03/06/2024 - -## New Features - -- **Grafana Configuration:** The database for the Grafana addon was configured, along with DataSources and Dashboards. -- **Prometheus Metrics Persistence with Thanos:** Added support for persisting Prometheus metrics using Thanos. -- **New Volume API:** Implemented support for the new volume API, displaying statuses and applying configuration for deployments. -- The update option in addons has been disabled. -- Now, when a dependency is deleted, a deploy with "pending-approval" will be created instead of an automatic one. - -## Bug Fixes - -- Fixed an issue where pre-hooks and new volumes were added during deploys, preventing them from being generated. -- Subdomains are now correctly marked as delegated if the parent domains are already delegated. diff --git a/content/changelog/en/2024-03-06-version-1.4.0.md b/content/changelog/en/2024-03-06-version-1.4.0.md new file mode 100644 index 000000000..c51384371 --- /dev/null +++ b/content/changelog/en/2024-03-06-version-1.4.0.md @@ -0,0 +1,31 @@ +--- +title: Version 1.4.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 03/06/2024 + +--- + +## 🚀 New Features + +- **Grafana Configuration** +The database for the Grafana addon was configured, along with DataSources and Dashboards. +- **Prometheus Metrics Persistence with Thanos** +Added support for persisting Prometheus metrics using Thanos. +- **New Volume API** +Implemented support for the new volume API, displaying statuses and applying configuration for deployments. +- The update option in addons has been disabled. +- Now, when a dependency is deleted, a deploy with "pending-approval" will be created instead of an automatic one. + +--- + +## 🐛 Bug Fixes + +- Fixed an issue where pre-hooks and new volumes were added during deploys, preventing them from being generated. +- Subdomains are now correctly marked as delegated if the parent domains are already delegated. + +--- diff --git a/content/changelog/en/2024-04-11-V1.4.1.md b/content/changelog/en/2024-04-11-V1.4.1.md deleted file mode 100644 index 0566760b5..000000000 --- a/content/changelog/en/2024-04-11-V1.4.1.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Version 1.4.1" -slug: v1-4-1 -date: 2024-04-11 -tags: [release] ---- - -# 🚀 Version 1.4.1 - - - -04/11/2024 - -## New Features - -- **Dependency and OpenSearch Monitoring:** A new monitoring page was created for dependencies, facilitating the tracking of their status. OpenSearch was included. -- **ECR Lifecycle Policy:** A lifecycle policy was configured for ECR, improving image management. - -## Bug Fixes - -- Fixed the issue of duplicate names between cluster and node in Redis. -- Resolved various frontend errors that affected the user experience. -- Fixed the problem where an error was displayed when attempting to publish a vargroup without an associated service. -- Issues with performing multiple deployments and releases in a row were fixed. diff --git a/content/changelog/en/2024-04-11-version-1.4.1.md b/content/changelog/en/2024-04-11-version-1.4.1.md new file mode 100644 index 000000000..fe651d030 --- /dev/null +++ b/content/changelog/en/2024-04-11-version-1.4.1.md @@ -0,0 +1,29 @@ +--- +title: Version 1.4.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 04/11/2024 + +--- + +## 🚀 New Features + +- **Dependency and OpenSearch Monitoring** +A new monitoring page was created for dependencies, facilitating the tracking of their status. OpenSearch was included. +- **ECR Lifecycle Policy** +A lifecycle policy was configured for ECR, improving image management. + +--- + +## 🐛 Bug Fixes + +- Fixed the issue of duplicate names between cluster and node in Redis. +- Resolved various frontend errors that affected the user experience. +- Fixed the problem where an error was displayed when attempting to publish a vargroup without an associated service. +- Issues with performing multiple deployments and releases in a row were fixed. + +--- diff --git a/content/changelog/en/2024-04-25-V1.4.2.md b/content/changelog/en/2024-04-25-V1.4.2.md deleted file mode 100644 index 21190880c..000000000 --- a/content/changelog/en/2024-04-25-V1.4.2.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Version 1.4.2" -slug: v1-4-2 -date: 2024-04-25 -tags: [release] ---- - -# 🚀 Version 1.4.2 - - - -04/25/2024 - -## New Features - -- **New Metrics:** Added new metrics for S3 buckets and RabbitMQ, improving service monitoring. An OpenSearch metrics monitoring system was also implemented. -- **Monitoring Schema Reorganization:** Monitoring schema structures were reorganized for better management and visualization. The Dependencies monitoring screen now supports different resource types, providing a more detailed view. - -## Bug Fixes - -- A critical issue with vargroups was resolved, ensuring their proper functioning. diff --git a/content/changelog/en/2024-04-25-version-1.4.2.md b/content/changelog/en/2024-04-25-version-1.4.2.md new file mode 100644 index 000000000..c777a3042 --- /dev/null +++ b/content/changelog/en/2024-04-25-version-1.4.2.md @@ -0,0 +1,26 @@ +--- +title: Version 1.4.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 04/25/2024 + +--- + +## 🚀 New Features + +- **New Metrics** +Added new metrics for S3 buckets and RabbitMQ, improving service monitoring. An OpenSearch metrics monitoring system was also implemented. +- **Monitoring Schema Reorganization** +Monitoring schema structures were reorganized for better management and visualization. The Dependencies monitoring screen now supports different resource types, providing a more detailed view. + +--- + +## 🐛 Bug Fixes + +- A critical issue with vargroups was resolved, ensuring their proper functioning. + +--- diff --git a/content/changelog/en/2024-05-13-V1.4.3.md b/content/changelog/en/2024-05-13-V1.4.3.md deleted file mode 100644 index eb5218097..000000000 --- a/content/changelog/en/2024-05-13-V1.4.3.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.4.3" -slug: v1-4-3 -date: 2024-05-13 -tags: [release] ---- - -# 🚀 Version 1.4.3 - - - -05/13/2024 - -## New Features - -- **Dashboard Management Improvements:** Dashboard loading was improved, allowing it to be viewed even if no account is selected. -- **Billing and Project Screen Improvements:** Improvements to the billing screen were made, including a new "others" section to account for previously unconsidered costs. The project environment screen was also improved. -- **Policy Updates:** CloudFormation policy has been updated to enhance management and security. - -## Bug Fixes - -- Fixed a critical error that prevented the creation of providers. -- Reviewed and resolved an issue related to NewRelic integration. -- Fixed a problem with the refresh token when requesting the VPN URI. -- **ACM Validation Screen and Build Logs Errors:** Corrections made to the ACM validation table and logs display for builds in creation state. diff --git a/content/changelog/en/2024-05-13-version-1.4.3.md b/content/changelog/en/2024-05-13-version-1.4.3.md new file mode 100644 index 000000000..f57413fa1 --- /dev/null +++ b/content/changelog/en/2024-05-13-version-1.4.3.md @@ -0,0 +1,32 @@ +--- +title: Version 1.4.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/13/2024 + +--- + +## 🚀 New Features + +- **Dashboard Management Improvements** +Dashboard loading was improved, allowing it to be viewed even if no account is selected. +- **Billing and Project Screen Improvements** +Improvements to the billing screen were made, including a new "others" section to account for previously unconsidered costs. The project environment screen was also improved. +- **Policy Updates** +CloudFormation policy has been updated to enhance management and security. + +--- + +## 🐛 Bug Fixes + +- Fixed a critical error that prevented the creation of providers. +- Reviewed and resolved an issue related to NewRelic integration. +- Fixed a problem with the refresh token when requesting the VPN URI. +- **ACM Validation Screen and Build Logs Errors** +Corrections made to the ACM validation table and logs display for builds in creation state. + +--- diff --git a/content/changelog/en/2024-05-23-V1.5.0.md b/content/changelog/en/2024-05-23-V1.5.0.md deleted file mode 100644 index 10e0a1b97..000000000 --- a/content/changelog/en/2024-05-23-V1.5.0.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.5.0" -slug: v1-5-0 -date: 2024-05-23 -tags: [release] ---- - -# 🚀 Version 1.5.0 - - - -05/23/2024 - -## New Features - -- **Multiple Project Environments Creation:** You can now create multiple project environments using the same repository and branch. -- **Domain Validation for Aliases:** Improved domain creation validation for aliases by using an existing usable ACM for ingress. -- **Resource Configuration in Project Env:** Added the ability to configure build and deploy resources per project environment. -- **Deploy and Build Request Configuration:** Added the option to configure deploy and build requests in a ProjectEnv. -- **Grafana Dashboard:** A Grafana dashboard was incorporated to visualize consumption by namespace. -- **Loki Configuration:** Logs can now be searched by namespace with the new Loki configuration. -- **Data Collection:** Improved the billing collection script to be idempotent and executable for specific dates. - -## Bug Fixes - -- Fixed an error when creating S3 dependencies and solved a critical problem with vargroups during cluster shutdown updates. -- Fixed a critical error when inviting collaborators. diff --git a/content/changelog/en/2024-05-23-version-1.5.0.md b/content/changelog/en/2024-05-23-version-1.5.0.md new file mode 100644 index 000000000..0887c6263 --- /dev/null +++ b/content/changelog/en/2024-05-23-version-1.5.0.md @@ -0,0 +1,37 @@ +--- +title: Version 1.5.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 05/23/2024 + +--- + +## 🚀 New Features + +- **Multiple Project Environments Creation** +You can now create multiple project environments using the same repository and branch. +- **Domain Validation for Aliases** +Improved domain creation validation for aliases by using an existing usable ACM for ingress. +- **Resource Configuration in Project Env** +Added the ability to configure build and deploy resources per project environment. +- **Deploy and Build Request Configuration** +Added the option to configure deploy and build requests in a ProjectEnv. +- **Grafana Dashboard** +A Grafana dashboard was incorporated to visualize consumption by namespace. +- **Loki Configuration** +Logs can now be searched by namespace with the new Loki configuration. +- **Data Collection** +Improved the billing collection script to be idempotent and executable for specific dates. + +--- + +## 🐛 Bug Fixes + +- Fixed an error when creating S3 dependencies and solved a critical problem with vargroups during cluster shutdown updates. +- Fixed a critical error when inviting collaborators. + +--- diff --git a/content/changelog/en/2024-06-24-V1.5.1.md b/content/changelog/en/2024-06-24-V1.5.1.md deleted file mode 100644 index cf4b39f2f..000000000 --- a/content/changelog/en/2024-06-24-V1.5.1.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Version 1.5.1" -slug: v1-5-1 -date: 2024-06-24 -tags: [release] ---- - -# 🚀 Version 1.5.1 - - - -06/24/2024 - -## New Features - -- **Advanced Resource Configuration:** Advanced options for resource configuration in project environments have been implemented. -- **Optimization of Data Collection Scripts:** Improved the efficiency of data collection scripts for faster workload. - -## Bug Fixes - -- Several interface errors affecting system usability have been resolved. diff --git a/content/changelog/en/2024-06-24-version-1.5.1.md b/content/changelog/en/2024-06-24-version-1.5.1.md new file mode 100644 index 000000000..f8546a879 --- /dev/null +++ b/content/changelog/en/2024-06-24-version-1.5.1.md @@ -0,0 +1,26 @@ +--- +title: Version 1.5.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 06/24/2024 + +--- + +## 🚀 New Features + +- **Advanced Resource Configuration** +Advanced options for resource configuration in project environments have been implemented. +- **Optimization of Data Collection Scripts** +Improved the efficiency of data collection scripts for faster workload. + +--- + +## 🐛 Bug Fixes + +- Several interface errors affecting system usability have been resolved. + +--- diff --git a/content/changelog/en/2024-08-12-V1.6.0.md b/content/changelog/en/2024-08-12-V1.6.0.md deleted file mode 100644 index 005e034bf..000000000 --- a/content/changelog/en/2024-08-12-V1.6.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 1.6.0" -slug: v1-6-0 -date: 2024-08-12 -tags: [release] ---- - -# 🚀 Version 1.6.0 - - - -08/12/2024 - -## New Features - -- **Support for ARM Instances and Additional RDS Versions:** Added ARM instances and extra versions in RDS. -- **EKS Updated to Version 1.29:** EKS has been updated to version 1.29. Changelogs for EKS updates are now displayed. -- **Improvements in Provider Creation and Editing:** Screens and fields for provider forms were updated, including changes in states and visual display. -- **Improved Repository Search:** Added support for asynchronous search in the repository selector and enhanced the search function for GitHub, GitLab, and Bitbucket. -- **Healthcheck Parameterization:** Healthcheck properties can now be parameterized with JSONSchema. -- **New Dashboard:** A new dashboard has been added to view consumption by namespace. -- Fixed an error when regenerating certificates, as well as issues with builds not running properly. -- Frontend errors related to listing and API problems that caused filtering errors have been corrected. - -## Bug Fixes - -- Fixed an error when regenerating certificates, as well as issues with builds not running properly. -- Frontend errors related to listing and API problems that caused filtering errors have been corrected. diff --git a/content/changelog/en/2024-08-12-version-1.6.0.md b/content/changelog/en/2024-08-12-version-1.6.0.md new file mode 100644 index 000000000..636c882f2 --- /dev/null +++ b/content/changelog/en/2024-08-12-version-1.6.0.md @@ -0,0 +1,37 @@ +--- +title: Version 1.6.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 08/12/2024 + +--- + +## 🚀 New Features + +- **Support for ARM Instances and Additional RDS Versions** +Added ARM instances and extra versions in RDS. +- **EKS Updated to Version 1.29** +EKS has been updated to version 1.29. Changelogs for EKS updates are now displayed. +- **Improvements in Provider Creation and Editing** +Screens and fields for provider forms were updated, including changes in states and visual display. +- **Improved Repository Search** +Added support for asynchronous search in the repository selector and enhanced the search function for GitHub, GitLab, and Bitbucket. +- **Healthcheck Parameterization** +Healthcheck properties can now be parameterized with JSONSchema. +- **New Dashboard** +A new dashboard has been added to view consumption by namespace. +- Fixed an error when regenerating certificates, as well as issues with builds not running properly. +- Frontend errors related to listing and API problems that caused filtering errors have been corrected. + +--- + +## 🐛 Bug Fixes + +- Fixed an error when regenerating certificates, as well as issues with builds not running properly. +- Frontend errors related to listing and API problems that caused filtering errors have been corrected. + +--- diff --git a/content/changelog/en/2024-08-22-V1.6.1.md b/content/changelog/en/2024-08-22-V1.6.1.md deleted file mode 100644 index 830509904..000000000 --- a/content/changelog/en/2024-08-22-V1.6.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.6.1" -slug: v1-6-1 -date: 2024-08-22 -tags: [release] ---- - -# 🚀 Version 1.6.1 - - - -08/22/2024 - -## New Features - -- **Dependency Version Updates:** Updated versions of MQ, Elasticsearch, Memcache, and Redis dependencies. -- **Authentication Improvements:** Added support for storing authentication tokens via cookies instead of local storage. -- Added ACM validation record printing on the ACM detail screen, and ACM status is now included in the system. - -## Bug Fixes - -- Issues with the provider flow have been resolved. diff --git a/content/changelog/en/2024-08-22-version-1.6.1.md b/content/changelog/en/2024-08-22-version-1.6.1.md new file mode 100644 index 000000000..fbc799d43 --- /dev/null +++ b/content/changelog/en/2024-08-22-version-1.6.1.md @@ -0,0 +1,27 @@ +--- +title: Version 1.6.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 08/22/2024 + +--- + +## 🚀 New Features + +- **Dependency Version Updates** +Updated versions of MQ, Elasticsearch, Memcache, and Redis dependencies. +- **Authentication Improvements** +Added support for storing authentication tokens via cookies instead of local storage. +- Added ACM validation record printing on the ACM detail screen, and ACM status is now included in the system. + +--- + +## 🐛 Bug Fixes + +- Issues with the provider flow have been resolved. + +--- diff --git a/content/changelog/en/2024-09-19-V1.6.2.md b/content/changelog/en/2024-09-19-V1.6.2.md deleted file mode 100644 index b2b547e1d..000000000 --- a/content/changelog/en/2024-09-19-V1.6.2.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Version 1.6.2" -slug: v1-6-2 -date: 2024-09-19 -tags: [release] ---- - -# 🚀 Version 1.6.2 - - - -09/19/2024 - -## New Features - -- **Upgrades:** Updated **Prometheus**, **Loki**, and **EBS CSI Driver** to the latest versions as of August 2024. -- **EBS CSI Driver Migration:** SleakOps now uses the AWS-managed EKS Addon for the EBS CSI Driver, replacing the self-managed version. -- **Prometheus and Loki with EBS:** Prometheus now utilizes EBS volumes for data persistence, preventing data loss even if the pods crash. -- **Loki with SimpleScalable: I**t adopts a **SimpleScalable** structure with **TSDB** storage for logs, enhancing performance. -- **SQS Dead-letter Queues:** Now supports the creation of **SQS queues** with associated dead-letter queues for improved error handling. - -## Bug Fixes - -- Various minor bug fixes and improvements to the platform's workload flows. diff --git a/content/changelog/en/2024-09-19-version-1.6.2.md b/content/changelog/en/2024-09-19-version-1.6.2.md new file mode 100644 index 000000000..547a12983 --- /dev/null +++ b/content/changelog/en/2024-09-19-version-1.6.2.md @@ -0,0 +1,32 @@ +--- +title: Version 1.6.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 09/19/2024 + +--- + +## 🚀 New Features + +- **Upgrades** +Updated **Prometheus**, **Loki**, and **EBS CSI Driver** to the latest versions as of August 2024. +- **EBS CSI Driver Migration** +SleakOps now uses the AWS-managed EKS Addon for the EBS CSI Driver, replacing the self-managed version. +- **Prometheus and Loki with EBS** +Prometheus now utilizes EBS volumes for data persistence, preventing data loss even if the pods crash. +- **Loki with SimpleScalable: I**t adopts a **SimpleScalable** +structure with **TSDB** storage for logs, enhancing performance. +- **SQS Dead-letter Queues** +Now supports the creation of **SQS queues** with associated dead-letter queues for improved error handling. + +--- + +## 🐛 Bug Fixes + +- Various minor bug fixes and improvements to the platform's workload flows. + +--- diff --git a/content/changelog/en/2024-09-27-V1.6.3.md b/content/changelog/en/2024-09-27-V1.6.3.md deleted file mode 100644 index ae547729a..000000000 --- a/content/changelog/en/2024-09-27-V1.6.3.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Version 1.6.3" -slug: v1-6-3 -date: 2024-09-27 -tags: [release] ---- - -# 🚀 Version 1.6.3 - - - -27/09/2024 - -## New Features - -- **Registration:** Implemented a new registration flow. - -## Bug Fixes - -- Various minor bug fixes and improvements. diff --git a/content/changelog/en/2024-09-27-version-1.6.3.md b/content/changelog/en/2024-09-27-version-1.6.3.md new file mode 100644 index 000000000..6f1e148ca --- /dev/null +++ b/content/changelog/en/2024-09-27-version-1.6.3.md @@ -0,0 +1,24 @@ +--- +title: Version 1.6.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 27/09/2024 + +--- + +## 🚀 New Features + +- **Registration** +Implemented a new registration flow. + +--- + +## 🐛 Bug Fixes + +- Various minor bug fixes and improvements. + +--- diff --git a/content/changelog/en/2024-10-14-V1.7.0.md b/content/changelog/en/2024-10-14-V1.7.0.md deleted file mode 100644 index aa3b46fea..000000000 --- a/content/changelog/en/2024-10-14-V1.7.0.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.0" -slug: v1-7-0 -date: 2024-10-14 -tags: [release] ---- - -# 🚀 Version 1.7.0 - - - -14/10/2024 - -## New Features - -- **Advanced Node Management:** Introduced node pool management to provide greater control over the types of nodes where workloads are executed. -- **Cluster Module Migration:** All modules created with the cluster now run on Graviton instances, enhancing performance and reducing costs. -- **Cluster Add-ons:** All add-ons now run on Graviton instances, further improving performance and lowering costs. -- **Isolated Build Nodes:** Builds are now executed on dedicated nodes separate from the application nodes, improving the stability of the nodes running applications. - -## Bug Fixes - -- Various minor bug fixes. diff --git a/content/changelog/en/2024-10-14-version-1.7.0.md b/content/changelog/en/2024-10-14-version-1.7.0.md new file mode 100644 index 000000000..5e596f550 --- /dev/null +++ b/content/changelog/en/2024-10-14-version-1.7.0.md @@ -0,0 +1,30 @@ +--- +title: Version 1.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 14/10/2024 + +--- + +## 🚀 New Features + +- **Advanced Node Management** +Introduced node pool management to provide greater control over the types of nodes where workloads are executed. +- **Cluster Module Migration** +All modules created with the cluster now run on Graviton instances, enhancing performance and reducing costs. +- **Cluster Add-ons** +All add-ons now run on Graviton instances, further improving performance and lowering costs. +- **Isolated Build Nodes** +Builds are now executed on dedicated nodes separate from the application nodes, improving the stability of the nodes running applications. + +--- + +## 🐛 Bug Fixes + +- Various minor bug fixes. + +--- diff --git a/content/changelog/en/2024-10-30-V1.7.1.md b/content/changelog/en/2024-10-30-V1.7.1.md deleted file mode 100644 index 797c715d0..000000000 --- a/content/changelog/en/2024-10-30-V1.7.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.7.1" -slug: v1-7-1 -date: 2024-10-30 -tags: [release] ---- - -# 🚀 Version 1.7.1 - - - -30/10/2024 - -## New Features - -- **Environment and Domain Creation:** Improved the process for creating environments and domains. You can now use a different domain than the one configured globally without any limitations. -- **Notifications:** Added a notification system to inform users about pending manual actions and scheduled infrastructure updates. -- **Documentation:** Updated documentation on managing domains, projects, dependencies, and environment variables. - -## Bug Fixes - -- Various minor bug fixes. diff --git a/content/changelog/en/2024-10-30-version-1.7.1.md b/content/changelog/en/2024-10-30-version-1.7.1.md new file mode 100644 index 000000000..2c4238f5d --- /dev/null +++ b/content/changelog/en/2024-10-30-version-1.7.1.md @@ -0,0 +1,28 @@ +--- +title: Version 1.7.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 30/10/2024 + +--- + +## 🚀 New Features + +- **Environment and Domain Creation** +Improved the process for creating environments and domains. You can now use a different domain than the one configured globally without any limitations. +- **Notifications** +Added a notification system to inform users about pending manual actions and scheduled infrastructure updates. +- **Documentation** +Updated documentation on managing domains, projects, dependencies, and environment variables. + +--- + +## 🐛 Bug Fixes + +- Various minor bug fixes. + +--- diff --git a/content/changelog/en/2024-11-05-V1.7.2.md b/content/changelog/en/2024-11-05-V1.7.2.md deleted file mode 100644 index f57256ee4..000000000 --- a/content/changelog/en/2024-11-05-V1.7.2.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.2" -slug: v1-7-2 -date: 2024-11-05 -tags: [release] ---- - -# 🚀 Version 1.7.2 - - - -05/11/2024 - -## New Features - -- **S3 Bucket Deletion:** Introduced the ability to delete S3 buckets containing a large number of files. -- **VPN:** Updated the Pritunl module to the latest version for enhanced security and performance. -- **Subscription Management Improvements:** Enhanced the management of subscriptions for a better user experience. -- **User Registration:** Enabled the registration of new users to the platform. - -## Bug Fixes - -- Various minor bug fixes. diff --git a/content/changelog/en/2024-11-05-version-1.7.2.md b/content/changelog/en/2024-11-05-version-1.7.2.md new file mode 100644 index 000000000..d21789ed1 --- /dev/null +++ b/content/changelog/en/2024-11-05-version-1.7.2.md @@ -0,0 +1,30 @@ +--- +title: Version 1.7.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/11/2024 + +--- + +## 🚀 New Features + +- **S3 Bucket Deletion** +Introduced the ability to delete S3 buckets containing a large number of files. +- **VPN** +Updated the Pritunl module to the latest version for enhanced security and performance. +- **Subscription Management Improvements** +Enhanced the management of subscriptions for a better user experience. +- **User Registration** +Enabled the registration of new users to the platform. + +--- + +## 🐛 Bug Fixes + +- Various minor bug fixes. + +--- diff --git a/content/changelog/en/2024-11-14-V1.7.3.md b/content/changelog/en/2024-11-14-V1.7.3.md deleted file mode 100644 index a458ada59..000000000 --- a/content/changelog/en/2024-11-14-V1.7.3.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.7.3" -slug: v1-7-3 -date: 2024-11-14 -tags: [release] ---- - -# 🚀 Version 1.7.3 - - - - -14/11/2024 - -## New Features - -- **Oracle RDS Support (Beta):** You can now manage Oracle RDS instances as dependencies within SleakOps. -- **Aurora PostgreSQL Serverless Support (Beta):** Added the ability to create and manage Aurora PostgreSQL Serverless databases. - -## Bug Fixes - -- Various minor bug fixes. \ No newline at end of file diff --git a/content/changelog/en/2024-11-14-version-1.7.3.md b/content/changelog/en/2024-11-14-version-1.7.3.md new file mode 100644 index 000000000..50f2fa6de --- /dev/null +++ b/content/changelog/en/2024-11-14-version-1.7.3.md @@ -0,0 +1,26 @@ +--- +title: Version 1.7.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 14/11/2024 + +--- + +## 🚀 New Features + +- **Oracle RDS Support (Beta)** +You can now manage Oracle RDS instances as dependencies within SleakOps. +- **Aurora PostgreSQL Serverless Support (Beta)** +Added the ability to create and manage Aurora PostgreSQL Serverless databases. + +--- + +## 🐛 Bug Fixes + +- Various minor bug fixes. + +--- diff --git a/content/changelog/en/2024-12-05-V1.7.4.md b/content/changelog/en/2024-12-05-V1.7.4.md deleted file mode 100644 index 112b590d5..000000000 --- a/content/changelog/en/2024-12-05-V1.7.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.4" -slug: v1-7-4 -date: 2024-12-05 -tags: [release] ---- - -# 🚀 Version 1.7.4 - - - -05/12/2024 - -## New Features - -- **Add-on Accessibility:** Added links in SleakOps for easy access to view logs, APM, or metrics for specific resources. -- **OpenTelemetry (Beta):** Introduced an add-on to enhance observability in applications deployed with SleakOps. With OpenTelemetry, you can have your own APM to monitor metrics like request rate, latency, and error rate of your application. -- **Add-on Availability Configurations:** Added various availability settings for each add-on. -- **Documentation:** Updated the add-on documentation and made it available in Spanish. - -## Bug Fixes - -- **Kubecost Integration Review:** Reviewed the Prometheus-Kubecost integration. Kubecost now correctly maps the names of deployed resources to their costs, greatly improving the accuracy of its estimates. It's now possible to enable approximate network traffic cost analysis within the cluster in Kubecost (Beta). diff --git a/content/changelog/en/2024-12-05-version-1.7.4.md b/content/changelog/en/2024-12-05-version-1.7.4.md new file mode 100644 index 000000000..5cbdb9bf1 --- /dev/null +++ b/content/changelog/en/2024-12-05-version-1.7.4.md @@ -0,0 +1,31 @@ +--- +title: Version 1.7.4 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/12/2024 + +--- + +## 🚀 New Features + +- **Add-on Accessibility** +Added links in SleakOps for easy access to view logs, APM, or metrics for specific resources. +- **OpenTelemetry (Beta)** +Introduced an add-on to enhance observability in applications deployed with SleakOps. With OpenTelemetry, you can have your own APM to monitor metrics like request rate, latency, and error rate of your application. +- **Add-on Availability Configurations** +Added various availability settings for each add-on. +- **Documentation** +Updated the add-on documentation and made it available in Spanish. + +--- + +## 🐛 Bug Fixes + +- **Kubecost Integration Review** +Reviewed the Prometheus-Kubecost integration. Kubecost now correctly maps the names of deployed resources to their costs, greatly improving the accuracy of its estimates. It's now possible to enable approximate network traffic cost analysis within the cluster in Kubecost (Beta). + +--- diff --git a/content/changelog/en/2024-12-09-V1.7.5.md b/content/changelog/en/2024-12-09-V1.7.5.md deleted file mode 100644 index ad11e6c6c..000000000 --- a/content/changelog/en/2024-12-09-V1.7.5.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Version 1.7.5" -slug: v1-7-5 -date: 2024-12-09 -tags: [release] ---- - -# 🚀 Version 1.7.5 - - - -09/12/2024 - -## New Features - -- **AWS Integration Error Handling:**: Implemented a mechanism to handle delays in AWS account activations created by SleakOps. -- **Add-on Links in Builds:** Added links for easily viewing logs and metrics during the build process. diff --git a/content/changelog/en/2024-12-09-version-1.7.5.md b/content/changelog/en/2024-12-09-version-1.7.5.md new file mode 100644 index 000000000..ec6bd02f1 --- /dev/null +++ b/content/changelog/en/2024-12-09-version-1.7.5.md @@ -0,0 +1,20 @@ +--- +title: Version 1.7.5 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 09/12/2024 + +--- + +## 🚀 New Features + +- **AWS Integration Error Handling** +Implemented a mechanism to handle delays in AWS account activations created by SleakOps. +- **Add-on Links in Builds** +Added links for easily viewing logs and metrics during the build process. + +--- diff --git a/content/changelog/en/2025-01-06-V1.7.6.md b/content/changelog/en/2025-01-06-V1.7.6.md deleted file mode 100644 index 6b1acc61d..000000000 --- a/content/changelog/en/2025-01-06-V1.7.6.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.7.6" -slug: v1-7-6 -date: 2025-01-06 -tags: [release] ---- - -# 🚀 Version 1.7.6 - - - -06/01/2025 - -## New Features - -- **New Nodepool Configurations**: You can now set additional parameters, such as minimum instance sizes and more. -- **Job with Specific Images**: When creating a job, you can specify the exact image and tag you want to run (e.g., `postgres:16.4`). -- **(BETA) Chart Extension by Project**: SleakOps can now extend the charts used to deploy project workloads, allowing you to add dependencies. For more information, see the [Helm documentation](https://helm.sh/docs/helm/helm_dependency/). -- **CI/CD Improvements**: The file for configuring CI/CD has been simplified and optimized. - -## Bug Fixes - -- **Internal Web Service URL**: Fixed an issue that caused incorrect URLs for “internal” type web services. -- **Volume Deletion**: Resolved problems related to volume deletion under various retention policies. -- **UX/UI Enhancements**: Improvements in the interface for Projects, Volumes, and Variable Groups. diff --git a/content/changelog/en/2025-01-06-version-1.7.6.md b/content/changelog/en/2025-01-06-version-1.7.6.md new file mode 100644 index 000000000..bd2ac0edb --- /dev/null +++ b/content/changelog/en/2025-01-06-version-1.7.6.md @@ -0,0 +1,35 @@ +--- +title: Version 1.7.6 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 06/01/2025 + +--- + +## 🚀 New Features + +- **New Nodepool Configurations** +You can now set additional parameters, such as minimum instance sizes and more. +- **Job with Specific Images** +When creating a job, you can specify the exact image and tag you want to run (e.g., `postgres:16.4`). +- **(BETA) Chart Extension by Project** +SleakOps can now extend the charts used to deploy project workloads, allowing you to add dependencies. For more information, see the [Helm documentation](https://helm.sh/docs/helm/helm_dependency/). +- **CI/CD Improvements** +The file for configuring CI/CD has been simplified and optimized. + +--- + +## 🐛 Bug Fixes + +- **Internal Web Service URL** +Fixed an issue that caused incorrect URLs for “internal” type web services. +- **Volume Deletion** +Resolved problems related to volume deletion under various retention policies. +- **UX/UI Enhancements** +Improvements in the interface for Projects, Volumes, and Variable Groups. + +--- diff --git a/content/changelog/en/2025-02-05-V1.7.7.md b/content/changelog/en/2025-02-05-V1.7.7.md deleted file mode 100644 index 1c815f02b..000000000 --- a/content/changelog/en/2025-02-05-V1.7.7.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.7.7" -slug: v1-7-7 -date: 2025-02-05 -tags: [release] ---- - -# 🚀 Version 1.7.7 - - - -05/02/2025 - -## New Features - -- **Import from External Buckets:** Quickly copy files from an external S3 Bucket into SleakOps via the new Import Bucket feature. -- **Project View Overhaul:** See logs and key info in a single screen for better visibility. -- **Executions Renamed to Workloads:** Updated terminology to align with internal cluster notation. -- **Cluster Deletion Optimization:** Added extra validation for a more secure and stable deletion process. - -## Bug Fixes - -- **Project Permissions for Jobs:** Fixed an issue where Jobs used cluster node permissions instead of Project permissions. -- **Docker Args Modification:** Builds now correctly apply any Docker Args changed just before they run. -- **VPN Profile Generation:** Resolved an issue preventing third-party user profiles from being generated successfully. diff --git a/content/changelog/en/2025-02-05-version-1.7.7.md b/content/changelog/en/2025-02-05-version-1.7.7.md new file mode 100644 index 000000000..ecf3af95e --- /dev/null +++ b/content/changelog/en/2025-02-05-version-1.7.7.md @@ -0,0 +1,35 @@ +--- +title: Version 1.7.7 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/02/2025 + +--- + +## 🚀 New Features + +- **Import from External Buckets** +Quickly copy files from an external S3 Bucket into SleakOps via the new Import Bucket feature. +- **Project View Overhaul** +See logs and key info in a single screen for better visibility. +- **Executions Renamed to Workloads** +Updated terminology to align with internal cluster notation. +- **Cluster Deletion Optimization** +Added extra validation for a more secure and stable deletion process. + +--- + +## 🐛 Bug Fixes + +- **Project Permissions for Jobs** +Fixed an issue where Jobs used cluster node permissions instead of Project permissions. +- **Docker Args Modification** +Builds now correctly apply any Docker Args changed just before they run. +- **VPN Profile Generation** +Resolved an issue preventing third-party user profiles from being generated successfully. + +--- diff --git a/content/changelog/en/2025-02-10-V1.7.8.md b/content/changelog/en/2025-02-10-V1.7.8.md deleted file mode 100644 index ca145d9c0..000000000 --- a/content/changelog/en/2025-02-10-V1.7.8.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Version 1.7.8" -slug: v1-7-8 -date: 2025-02-10 -tags: [release] ---- - -# 🚀 Version 1.7.8 - - - -10/02/2025 - -## New Features - -- **Kubernetes 1.30:** Updated EKS support to version 1.30. - -## Bug Fixes - -- **Minor UI Enhancements:** Improved the visual design for project and workload screens. diff --git a/content/changelog/en/2025-02-10-version-1.7.8.md b/content/changelog/en/2025-02-10-version-1.7.8.md new file mode 100644 index 000000000..bd208fc73 --- /dev/null +++ b/content/changelog/en/2025-02-10-version-1.7.8.md @@ -0,0 +1,25 @@ +--- +title: Version 1.7.8 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 10/02/2025 + +--- + +## 🚀 New Features + +- **Kubernetes 1.30** +Updated EKS support to version 1.30. + +--- + +## 🐛 Bug Fixes + +- **Minor UI Enhancements** +Improved the visual design for project and workload screens. + +--- diff --git a/content/changelog/en/2025-02-17-V1.7.9.md b/content/changelog/en/2025-02-17-V1.7.9.md deleted file mode 100644 index 6a63becdd..000000000 --- a/content/changelog/en/2025-02-17-V1.7.9.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Version 1.7.9" -slug: v1-7-9 -date: 2025-02-17 -tags: [release] ---- - -# 🚀 Version 1.7.9 - - - - -17/02/2025 - -## New Features - -- **Cronjob Enhancements:** Configure cronjob policies and easily filter between active and inactive cronjobs. -- **Support Emails on Notifications:** When SleakOps generates a notification, users now receive it via email. -- **EKS Insights:** During cluster upgrades, SleakOps checks EKS Insights to ensure everything is running smoothly. - -## Bug Fixes - -- **Project Flow Improvements:** Enhanced various settings, forms, and other elements for smoother project management. -- **AWS Account Creation Flow:** Now supports inactive AWS accounts, providing clear guidance on how to manually activate them before resuming the process in SleakOps. \ No newline at end of file diff --git a/content/changelog/en/2025-02-17-version-1.7.9.md b/content/changelog/en/2025-02-17-version-1.7.9.md new file mode 100644 index 000000000..cc0b45be2 --- /dev/null +++ b/content/changelog/en/2025-02-17-version-1.7.9.md @@ -0,0 +1,31 @@ +--- +title: Version 1.7.9 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 17/02/2025 + +--- + +## 🚀 New Features + +- **Cronjob Enhancements** +Configure cronjob policies and easily filter between active and inactive cronjobs. +- **Support Emails on Notifications** +When SleakOps generates a notification, users now receive it via email. +- **EKS Insights** +During cluster upgrades, SleakOps checks EKS Insights to ensure everything is running smoothly. + +--- + +## 🐛 Bug Fixes + +- **Project Flow Improvements** +Enhanced various settings, forms, and other elements for smoother project management. +- **AWS Account Creation Flow** +Now supports inactive AWS accounts, providing clear guidance on how to manually activate them before resuming the process in SleakOps. + +--- diff --git a/content/changelog/en/2025-04-01-V1.7.10.md b/content/changelog/en/2025-04-01-V1.7.10.md deleted file mode 100644 index c07461667..000000000 --- a/content/changelog/en/2025-04-01-V1.7.10.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Version 1.7.10" -slug: v1-7-10 -date: 2025-04-01 -tags: [release] ---- - -# 🚀 Version 1.7.10 - - - -01/04/2025 - -## New Features - -- **Enhanced Permission Control:** Projects can now have additional associated permissions, whether they are AWS IAM Policies or custom permissions. -- **Dependency Details:** The configuration details of each dependency are now displayed within its detail view. -- **Cluster Update Screen Improvements:** EKS Insights analysis is now included directly in SleakOps to streamline cluster updates. -- **Build & Project Enhancements:** Additional information during builds and improved project validation workflows. - -## Bug Fixes - -- **Improved Text Input:** Resolved issues affecting text inputs in forms. -- **Cluster Access Data:** Fixed a bug when retrieving cluster connection data under a different selected account. -- **Domain List Filters:** Added filters by account to the domain listing. -- **Nodepool List Improvements:** Refined visuals for the nodepool list view. -- **Add-on Installation Updates:** The list of add-ons now refreshes properly after installation. -- **Variable Group Editing:** Fixed an issue with editing variable groups. -- **Subscription Attachment:** Addressed a bug that prevented new subscriptions from attaching correctly. -- **Cost Forecast:** Fixed forecasting issues for better cost estimations. diff --git a/content/changelog/en/2025-04-01-version-1.7.10.md b/content/changelog/en/2025-04-01-version-1.7.10.md new file mode 100644 index 000000000..7dacf7f37 --- /dev/null +++ b/content/changelog/en/2025-04-01-version-1.7.10.md @@ -0,0 +1,45 @@ +--- +title: Version 1.7.10 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 01/04/2025 + +--- + +## 🚀 New Features + +- **Enhanced Permission Control** +Projects can now have additional associated permissions, whether they are AWS IAM Policies or custom permissions. +- **Dependency Details** +The configuration details of each dependency are now displayed within its detail view. +- **Cluster Update Screen Improvements** +EKS Insights analysis is now included directly in SleakOps to streamline cluster updates. +- **Build & Project Enhancements** +Additional information during builds and improved project validation workflows. + +--- + +## 🐛 Bug Fixes + +- **Improved Text Input** +Resolved issues affecting text inputs in forms. +- **Cluster Access Data** +Fixed a bug when retrieving cluster connection data under a different selected account. +- **Domain List Filters** +Added filters by account to the domain listing. +- **Nodepool List Improvements** +Refined visuals for the nodepool list view. +- **Add-on Installation Updates** +The list of add-ons now refreshes properly after installation. +- **Variable Group Editing** +Fixed an issue with editing variable groups. +- **Subscription Attachment** +Addressed a bug that prevented new subscriptions from attaching correctly. +- **Cost Forecast** +Fixed forecasting issues for better cost estimations. + +--- diff --git a/content/changelog/en/2025-04-24-V1.7.11.md b/content/changelog/en/2025-04-24-V1.7.11.md deleted file mode 100644 index 048ac7671..000000000 --- a/content/changelog/en/2025-04-24-V1.7.11.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Version 1.7.11" -slug: v1-7-11 -date: 2025-04-24 -tags: [release] ---- - -# 🚀 Version 1.7.11 - - - - -24/04/2025 - -## New Features - -- **Kubernetes 1.31 & Karpenter 1.3:** SleakOps now provisions clusters on EKS 1.31 and upgrades the autoscaler to Karpenter 1.3. -- **Stronger Secret Management :** All secrets are now also stored encrypted in AWS Systems Manager Parameter Store, adding an extra layer of durability beyond the in-cluster copy. - -## Bug Fixes - -- **Dev-Cluster Workers:** Removed the PodDisruptionBudge improving worker reliability in development clusters when the cluster had the scheduler shutdown enabled. -- **Builds:** Builds are no longer triggered for every minor project edit. -- **Deployments:** Switched deployments jobs away from Fargate; build logs are now persisted for easier troubleshooting. -- **Web Service Details:** Refined the service detail page for clearer visibility of endpoints, status, and metrics. -- **Kubecost Add-on:** Stability improvements \ No newline at end of file diff --git a/content/changelog/en/2025-04-24-version-1.7.11.md b/content/changelog/en/2025-04-24-version-1.7.11.md new file mode 100644 index 000000000..0d6ce8b18 --- /dev/null +++ b/content/changelog/en/2025-04-24-version-1.7.11.md @@ -0,0 +1,35 @@ +--- +title: Version 1.7.11 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 24/04/2025 + +--- + +## 🚀 New Features + +- **Kubernetes 1.31 & Karpenter 1.3** +SleakOps now provisions clusters on EKS 1.31 and upgrades the autoscaler to Karpenter 1.3. +- **Stronger Secret Management** +All secrets are now also stored encrypted in AWS Systems Manager Parameter Store, adding an extra layer of durability beyond the in-cluster copy. + +--- + +## 🐛 Bug Fixes + +- **Dev-Cluster Workers** +Removed the PodDisruptionBudge improving worker reliability in development clusters when the cluster had the scheduler shutdown enabled. +- **Builds** +Builds are no longer triggered for every minor project edit. +- **Deployments** +Switched deployments jobs away from Fargate; build logs are now persisted for easier troubleshooting. +- **Web Service Details** +Refined the service detail page for clearer visibility of endpoints, status, and metrics. +- **Kubecost Add-on** +Stability improvements + +--- diff --git a/content/changelog/en/2025-05-14-V1.7.12.md b/content/changelog/en/2025-05-14-V1.7.12.md deleted file mode 100644 index 54dd9d6d3..000000000 --- a/content/changelog/en/2025-05-14-V1.7.12.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.12" -slug: v1-7-12 -date: 2025-05-14 -tags: [release] ---- - -# 🚀 Version 1.7.12 - - - - -14/05/2025 - -## New Features - -- **New Support Flow:** Introduced a support chatbot and ticketing system to provide better traceability and faster response times. -- **Subscription & Plan Management:** Enhanced tools for managing subscriptions and service plans. - -## Bug Fixes - -- **Form Improvements:** General enhancements to form usability and validation. -- **Project Console:** UI/UX improvements in the project console screen. \ No newline at end of file diff --git a/content/changelog/en/2025-05-14-version-1.7.12.md b/content/changelog/en/2025-05-14-version-1.7.12.md new file mode 100644 index 000000000..2ce65acf4 --- /dev/null +++ b/content/changelog/en/2025-05-14-version-1.7.12.md @@ -0,0 +1,29 @@ +--- +title: Version 1.7.12 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 14/05/2025 + +--- + +## 🚀 New Features + +- **New Support Flow** +Introduced a support chatbot and ticketing system to provide better traceability and faster response times. +- **Subscription & Plan Management** +Enhanced tools for managing subscriptions and service plans. + +--- + +## 🐛 Bug Fixes + +- **Form Improvements** +General enhancements to form usability and validation. +- **Project Console** +UI/UX improvements in the project console screen. + +--- diff --git a/content/changelog/en/2025-06-02-V1.7.13.md b/content/changelog/en/2025-06-02-V1.7.13.md deleted file mode 100644 index f85c58a90..000000000 --- a/content/changelog/en/2025-06-02-V1.7.13.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.7.13" -slug: v1-7-13 -date: 2025-06-02 -tags: [release] ---- - -# 🚀 Version 1.7.13 - - - -02/06/2025 - -## New Features - -- **Dependency Monitoring:** Improved visualization and tracking of dependencies. -- **Service Control:** New toggle to turn webservices and workers on or off. -- **Builds with or without cache:** Option to run builds using cache or from scratch. -- **S3 Bucket Import with Versioning:** Added support for importing S3 Buckets with active versioning. -- **Variable Groups:** Enhanced interface for managing variable groups. -- **Dockerfile Validation:** New validations to ensure reliability of Dockerfiles. - -## Bug Fixes - -- **Job Logs:** Fixed broken log links for Jobs. -- **Branch Names:** Added support for branches with / in their names. -- **GitLab Pipelines:** Fixed issues affecting pipeline execution. diff --git a/content/changelog/en/2025-06-02-version-1.7.13.md b/content/changelog/en/2025-06-02-version-1.7.13.md new file mode 100644 index 000000000..41d257063 --- /dev/null +++ b/content/changelog/en/2025-06-02-version-1.7.13.md @@ -0,0 +1,39 @@ +--- +title: Version 1.7.13 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 02/06/2025 + +--- + +## 🚀 New Features + +- **Dependency Monitoring** +Improved visualization and tracking of dependencies. +- **Service Control** +New toggle to turn webservices and workers on or off. +- **Builds with or without cache** +Option to run builds using cache or from scratch. +- **S3 Bucket Import with Versioning** +Added support for importing S3 Buckets with active versioning. +- **Variable Groups** +Enhanced interface for managing variable groups. +- **Dockerfile Validation** +New validations to ensure reliability of Dockerfiles. + +--- + +## 🐛 Bug Fixes + +- **Job Logs** +Fixed broken log links for Jobs. +- **Branch Names** +Added support for branches with / in their names. +- **GitLab Pipelines** +Fixed issues affecting pipeline execution. + +--- diff --git a/content/changelog/en/2025-06-26-V1.7.14.md b/content/changelog/en/2025-06-26-V1.7.14.md deleted file mode 100644 index 3f44c0c43..000000000 --- a/content/changelog/en/2025-06-26-V1.7.14.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.7.14" -slug: v1-7-14 -date: 2025-06-26 -tags: [release] ---- - -# 🚀 Version 1.7.14 - - - - -26/06/2025 - -## New Features - -- **State Transition Improvements:** Smoother state changes for cluster addons and forms. -- **Support with Images:** Users can now upload images in the support chat. -- **Jobs from Cronjobs or Existing Jobs:** Ability to launch a Job from an existing cronjob or Job. -- **Infrastructure Errors:** Improved parsing and display of infrastructure errors for easier troubleshooting. - -## Bug Fixes - -- **Duplicate Volumes:** Fixed issue when creating volumes with the same name. -- **Duplicate Users:** Prevented creation of users with the same email. -- **Duplicate Dependencies:** Blocked creation of dependencies with duplicate names. -- **Dependency Monitoring:** Fixed date range issues on the dependency monitoring screen. \ No newline at end of file diff --git a/content/changelog/en/2025-06-26-version-1.7.14.md b/content/changelog/en/2025-06-26-version-1.7.14.md new file mode 100644 index 000000000..0528904a6 --- /dev/null +++ b/content/changelog/en/2025-06-26-version-1.7.14.md @@ -0,0 +1,37 @@ +--- +title: Version 1.7.14 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 26/06/2025 + +--- + +## 🚀 New Features + +- **State Transition Improvements** +Smoother state changes for cluster addons and forms. +- **Support with Images** +Users can now upload images in the support chat. +- **Jobs from Cronjobs or Existing Jobs** +Ability to launch a Job from an existing cronjob or Job. +- **Infrastructure Errors** +Improved parsing and display of infrastructure errors for easier troubleshooting. + +--- + +## 🐛 Bug Fixes + +- **Duplicate Volumes** +Fixed issue when creating volumes with the same name. +- **Duplicate Users** +Prevented creation of users with the same email. +- **Duplicate Dependencies** +Blocked creation of dependencies with duplicate names. +- **Dependency Monitoring** +Fixed date range issues on the dependency monitoring screen. + +--- diff --git a/content/changelog/en/2025-07-07-V1.7.15.md b/content/changelog/en/2025-07-07-V1.7.15.md deleted file mode 100644 index 5bdef8a31..000000000 --- a/content/changelog/en/2025-07-07-V1.7.15.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.7.15" -slug: v1-7-15 -date: 2025-07-07 -tags: [release] ---- - -# 🚀 Version 1.7.15 - - - - -07/07/2025 - -## New Features - -- **Nodegroup Spot Resilience:** Spot nodegroups now prevent failures when no Spot instances are available. -- **File-based VariableGroups:** Added support for creating variablegroups of type file. -- **Agent Bot (beta):** Experimental agent bot released in beta. - -## Bug Fixes - -- **Dependent domain configuration:** Generate DNS records when parent domain already created. -- **Cluster status with nightly shutdown:** Fixed incorrect status display for clusters with nightly shutdown enabled. -- **VariableGroups filters:** Fiter by projects on variablegroups list -- **Delete cluster:** Fixed deletion cluster flow. -- **Support ticket status:** Fixed close support ticket status. \ No newline at end of file diff --git a/content/changelog/en/2025-07-07-version-1.7.15.md b/content/changelog/en/2025-07-07-version-1.7.15.md new file mode 100644 index 000000000..de9de9174 --- /dev/null +++ b/content/changelog/en/2025-07-07-version-1.7.15.md @@ -0,0 +1,37 @@ +--- +title: Version 1.7.15 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 07/07/2025 + +--- + +## 🚀 New Features + +- **Nodegroup Spot Resilience** +Spot nodegroups now prevent failures when no Spot instances are available. +- **File-based VariableGroups** +Added support for creating variablegroups of type file. +- **Agent Bot (beta)** +Experimental agent bot released in beta. + +--- + +## 🐛 Bug Fixes + +- **Dependent domain configuration** +Generate DNS records when parent domain already created. +- **Cluster status with nightly shutdown** +Fixed incorrect status display for clusters with nightly shutdown enabled. +- **VariableGroups filters** +Fiter by projects on variablegroups list +- **Delete cluster** +Fixed deletion cluster flow. +- **Support ticket status** +Fixed close support ticket status. + +--- diff --git a/content/changelog/en/2025-07-21-V1.7.16.md b/content/changelog/en/2025-07-21-V1.7.16.md deleted file mode 100644 index 988110e21..000000000 --- a/content/changelog/en/2025-07-21-V1.7.16.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.7.16" -slug: v1-7-16 -date: 2025-07-21 -tags: [release] ---- - -# 🚀 Version 1.7.16 - - - - -21/07/2025 - -## New Features - -- **Projects with Public Repositories:** You can now create and manage projects linked to public repositories. -- **Exclude Builds from Metrics:** Builds can be excluded from the Grafana metrics dashboard for more accurate reporting. - -## Bug Fixes - -- **New Project Deployments:** Fixed issues preventing successful deployment of newly created projects. \ No newline at end of file diff --git a/content/changelog/en/2025-07-21-version-1.7.16.md b/content/changelog/en/2025-07-21-version-1.7.16.md new file mode 100644 index 000000000..d86912db4 --- /dev/null +++ b/content/changelog/en/2025-07-21-version-1.7.16.md @@ -0,0 +1,27 @@ +--- +title: Version 1.7.16 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 21/07/2025 + +--- + +## 🚀 New Features + +- **Projects with Public Repositories** +You can now create and manage projects linked to public repositories. +- **Exclude Builds from Metrics** +Builds can be excluded from the Grafana metrics dashboard for more accurate reporting. + +--- + +## 🐛 Bug Fixes + +- **New Project Deployments** +Fixed issues preventing successful deployment of newly created projects. + +--- diff --git a/content/changelog/en/2025-10-01-V2.0.0.md b/content/changelog/en/2025-10-01-V2.0.0.md deleted file mode 100644 index f7f422618..000000000 --- a/content/changelog/en/2025-10-01-V2.0.0.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Version 2.0.0" -slug: v2-0-0 -date: 2025-10-01 -tags: [release] ---- - -# 🚀 Version 2.0.0 - - - -10/01/2025 - -## New Features - -- **Full Console Redesign:** Modernized UI for a cleaner, more intuitive experience. -- **Light Theme Support:** Complete support for light mode. -- **Support Bot:** Automated responses for common support questions. -- **Comprehensive Documentation:** Expanded guides covering all features. -- **Update lambdas:** Update python versions for lambdas. -- **Project Chart:** Promoted to stable. -- **Project Access:** Promoted to stable. -- **Dependency Aurora MySQL:** Promoted to stable. -- **Dependency Oracle:** Promoted to stable. -- **Dependency MariaDB:** Promoted to stable. -- **Dependency Aurora PostgreSQL:** Promoted to stable. -- **Dependency Editing:** Ability to edit existing dependencies. -- **Dockertron (beta):** AI-powered automatic dockerization. -- **Builds cancel:** Could cancel pending builds. -- **New MSK Dependency:** Support for Kafka via AWS MSK. -- **Enhanced Webservices:** Configure custom ingress annotations and optional healthchecks. -- **Advanced Nodepools:** New fallback strategies and instance mix (reserved, spot, on-demand) for better cost and performance control. - -## Bug Fixes - -- **GitLab self-hosted:** Fixed URL validation. -- **Cluster deletion:** Improved cascading deletion handling. diff --git a/content/changelog/en/2025-10-01-version-2.0.0.md b/content/changelog/en/2025-10-01-version-2.0.0.md new file mode 100644 index 000000000..4725b14f1 --- /dev/null +++ b/content/changelog/en/2025-10-01-version-2.0.0.md @@ -0,0 +1,59 @@ +--- +title: Version 2.0.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`major release` · 10/01/2025 + +--- + +## 🚀 New Features + +- **Full Console Redesign** +Modernized UI for a cleaner, more intuitive experience. +- **Light Theme Support** +Complete support for light mode. +- **Support Bot** +Automated responses for common support questions. +- **Comprehensive Documentation** +Expanded guides covering all features. +- **Update lambdas** +Update python versions for lambdas. +- **Project Chart** +Promoted to stable. +- **Project Access** +Promoted to stable. +- **Dependency Aurora MySQL** +Promoted to stable. +- **Dependency Oracle** +Promoted to stable. +- **Dependency MariaDB** +Promoted to stable. +- **Dependency Aurora PostgreSQL** +Promoted to stable. +- **Dependency Editing** +Ability to edit existing dependencies. +- **Dockertron (beta)** +AI-powered automatic dockerization. +- **Builds cancel** +Could cancel pending builds. +- **New MSK Dependency** +Support for Kafka via AWS MSK. +- **Enhanced Webservices** +Configure custom ingress annotations and optional healthchecks. +- **Advanced Nodepools** +New fallback strategies and instance mix (reserved, spot, on-demand) for better cost and performance control. + +--- + +## 🐛 Bug Fixes + +- **GitLab self-hosted** +Fixed URL validation. +- **Cluster deletion** +Improved cascading deletion handling. + +--- diff --git a/content/changelog/en/2025-10-15-V2.0.1.md b/content/changelog/en/2025-10-15-V2.0.1.md deleted file mode 100644 index 011ae956e..000000000 --- a/content/changelog/en/2025-10-15-V2.0.1.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Version 2.0.1" -slug: v2-0-1 -date: 2025-10-15 -tags: [release] ---- - -# 🚀 Version 2.0.1 - - - - -10/15/2025 - -## New Features - -- **Builds and Deploys Table:** Improvements to the data shown in the builds and deploys table. - -## Bug Fixes - -- **Nightly Shutdown Cron:** Fixed visualization of the nightly shutdown cron. -- **Cluster Status:** Fixed Cluster status update while updating. -- **Long Notifications:** Fixed visualization of long notifications. -- **Third-Party VPN:** Fixed VPN access for third parties. -- **Deploy Cancellation:** Fixed deploy cancellation flow. -- **Provider Creation:** Fixed text hierarchies in the Provider creation flow. -- **Missing Information:** Fixed redirection in the missing information flow for Project. -- **Viewer User:** Fixed navigation for viewer users. -- **Light Mode Toggles:** Improved toggle visibility in light mode. -- **Dependency MQ Password:** Fixed password auto-generation for Dependency MQ. -- **Icon Loading:** Improvements in icon loading. -- **Transition Screens:** Fixed transition screens during data loading. -- **Project Console Tables:** Improved table visualization on the "Project Console" screen. -- **Infrastructure Errors:** Fixed error messages when infrastructure module execution fails. -- **Mobile Account Selector:** Support for account selector on mobile devices. \ No newline at end of file diff --git a/content/changelog/en/2025-10-15-version-2.0.1.md b/content/changelog/en/2025-10-15-version-2.0.1.md new file mode 100644 index 000000000..587f9c53b --- /dev/null +++ b/content/changelog/en/2025-10-15-version-2.0.1.md @@ -0,0 +1,53 @@ +--- +title: Version 2.0.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 10/15/2025 + +--- + +## 🚀 New Features + +- **Builds and Deploys Table** +Improvements to the data shown in the builds and deploys table. + +--- + +## 🐛 Bug Fixes + +- **Nightly Shutdown Cron** +Fixed visualization of the nightly shutdown cron. +- **Cluster Status** +Fixed Cluster status update while updating. +- **Long Notifications** +Fixed visualization of long notifications. +- **Third-Party VPN** +Fixed VPN access for third parties. +- **Deploy Cancellation** +Fixed deploy cancellation flow. +- **Provider Creation** +Fixed text hierarchies in the Provider creation flow. +- **Missing Information** +Fixed redirection in the missing information flow for Project. +- **Viewer User** +Fixed navigation for viewer users. +- **Light Mode Toggles** +Improved toggle visibility in light mode. +- **Dependency MQ Password** +Fixed password auto-generation for Dependency MQ. +- **Icon Loading** +Improvements in icon loading. +- **Transition Screens** +Fixed transition screens during data loading. +- **Project Console Tables** +Improved table visualization on the "Project Console" screen. +- **Infrastructure Errors** +Fixed error messages when infrastructure module execution fails. +- **Mobile Account Selector** +Support for account selector on mobile devices. + +--- diff --git a/content/changelog/en/2025-11-10-V2.1.0.md b/content/changelog/en/2025-11-10-V2.1.0.md deleted file mode 100644 index e629cac6c..000000000 --- a/content/changelog/en/2025-11-10-V2.1.0.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Version 2.1.0" -slug: v2-1-0 -date: 2025-11-10 -tags: [release] ---- - -# 🚀 Version 2.1.0 - - - -11/05/2025 - -## New Features - -- **Cluster Update:** Support for Cluster update from 1.31 to 1.32. -- **Dependency Tour:** New guided tour for the Dependency screen. -- **Workload Tour:** New guided tour for the Workload screen. -- **Variable Group Tour:** New guided tour for the Variable Group screen. -- **Cluster Tour:** New guided tour for the Cluster screen. -- **Project Tour:** New guided tour for the Project screen. -- **Cluster Update Optimization:** Optimization of Cluster update tasks. -- **Screen Loading:** Improvements in loading drawers and secondary screens. -- **Schedule Update:** New flow to schedule Cluster updates. -- **Onboarding:** New onboarding flow for new users. -- **Nodepool Configuration:** Support for more Nodepool configuration parameters (instance types, fallbacks, etc.). -- **Upgrade Monitoring:** New service monitoring flow during Cluster upgrade with error reporting. -- **Build Logs:** Improvements in build logs with more context. - -## Bug Fixes - -- **SSL Certificate for S3:** Fixed SSL certificate errors for S3 with CloudFront. -- **Activity Logs:** Fixed names in some Activity Logs. -- **User Creation:** Fixed errors in the user creation flow. -- **Support Tickets:** Fixed support ticket status. -- **Build with CLI:** Fixed parameters when building using the CLI. -- **Nightly Shutdown:** Fixed Cluster status with nightly shutdown enabled. -- **Screen Resolutions:** Adjustments for some resolutions on the main console screen. -- **Delete Web Services:** Fixed errors when deleting a Web Service from the table. diff --git a/content/changelog/en/2025-11-10-version-2.1.0.md b/content/changelog/en/2025-11-10-version-2.1.0.md new file mode 100644 index 000000000..f027079a6 --- /dev/null +++ b/content/changelog/en/2025-11-10-version-2.1.0.md @@ -0,0 +1,63 @@ +--- +title: Version 2.1.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 11/05/2025 + +--- + +## 🚀 New Features + +- **Cluster Update** +Support for Cluster update from 1.31 to 1.32. +- **Dependency Tour** +New guided tour for the Dependency screen. +- **Workload Tour** +New guided tour for the Workload screen. +- **Variable Group Tour** +New guided tour for the Variable Group screen. +- **Cluster Tour** +New guided tour for the Cluster screen. +- **Project Tour** +New guided tour for the Project screen. +- **Cluster Update Optimization** +Optimization of Cluster update tasks. +- **Screen Loading** +Improvements in loading drawers and secondary screens. +- **Schedule Update** +New flow to schedule Cluster updates. +- **Onboarding** +New onboarding flow for new users. +- **Nodepool Configuration** +Support for more Nodepool configuration parameters (instance types, fallbacks, etc.). +- **Upgrade Monitoring** +New service monitoring flow during Cluster upgrade with error reporting. +- **Build Logs** +Improvements in build logs with more context. + +--- + +## 🐛 Bug Fixes + +- **SSL Certificate for S3** +Fixed SSL certificate errors for S3 with CloudFront. +- **Activity Logs** +Fixed names in some Activity Logs. +- **User Creation** +Fixed errors in the user creation flow. +- **Support Tickets** +Fixed support ticket status. +- **Build with CLI** +Fixed parameters when building using the CLI. +- **Nightly Shutdown** +Fixed Cluster status with nightly shutdown enabled. +- **Screen Resolutions** +Adjustments for some resolutions on the main console screen. +- **Delete Web Services** +Fixed errors when deleting a Web Service from the table. + +--- diff --git a/content/changelog/en/2025-11-13-V2.2.0.md b/content/changelog/en/2025-11-13-V2.2.0.md deleted file mode 100644 index 4bf38e926..000000000 --- a/content/changelog/en/2025-11-13-V2.2.0.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 2.2.0" -slug: v2-2-0 -date: 2025-11-13 -tags: [release] ---- - -# 🚀 Version 2.2.0 - - - -10/25/2025 - -## New Features - -- **Code Viewer:** New component for viewing code within the console. - -## Bug Fixes - -- **Deleted Users:** Fixed errors with deleted users. -- **Update Branches:** Fixed the flow for updating branches in Project. -- **Incomplete Information:** Fixed the flow when Project information is incomplete. -- **Extra Policies:** Fixed the flow for configuring extra policies in Project. diff --git a/content/changelog/en/2025-11-13-version-2.2.0.md b/content/changelog/en/2025-11-13-version-2.2.0.md new file mode 100644 index 000000000..a4c80290b --- /dev/null +++ b/content/changelog/en/2025-11-13-version-2.2.0.md @@ -0,0 +1,31 @@ +--- +title: Version 2.2.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 10/25/2025 + +--- + +## 🚀 New Features + +- **Code Viewer** +New component for viewing code within the console. + +--- + +## 🐛 Bug Fixes + +- **Deleted Users** +Fixed errors with deleted users. +- **Update Branches** +Fixed the flow for updating branches in Project. +- **Incomplete Information** +Fixed the flow when Project information is incomplete. +- **Extra Policies** +Fixed the flow for configuring extra policies in Project. + +--- diff --git a/content/changelog/en/2025-11-18-V2.3.0.md b/content/changelog/en/2025-11-18-V2.3.0.md deleted file mode 100644 index becf5975d..000000000 --- a/content/changelog/en/2025-11-18-V2.3.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 2.3.0" -slug: v2-3-0 -date: 2025-11-18 -tags: [release] ---- - -# 🚀 Version 2.3.0 - - - - -11/18/2025 - -## New Features - -- **Environment Cloning:** New function to clone Environments. -- **Project Cloning:** New function to clone Projects. -- **Dependency Cloning:** New function to clone Dependencies. -- **Workload Cloning:** New function to clone Workloads. -- **Variable Group Cloning:** New function to clone Variable Groups. -- **Cluster Monitoring Filters:** Added filters for navigating Cluster events in Cluster Monitoring. -- **Variable Group Search:** Ability to search Variable Groups by internal key names from the general search. - -## Bug Fixes - -- **Selected Account:** The selected account now persists when switching users. -- **Web Services Shutdown:** Improved Web Services shutdown. diff --git a/content/changelog/en/2025-11-18-version-2.3.0.md b/content/changelog/en/2025-11-18-version-2.3.0.md new file mode 100644 index 000000000..93c13d615 --- /dev/null +++ b/content/changelog/en/2025-11-18-version-2.3.0.md @@ -0,0 +1,39 @@ +--- +title: Version 2.3.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 11/18/2025 + +--- + +## 🚀 New Features + +- **Environment Cloning** +New function to clone Environments. +- **Project Cloning** +New function to clone Projects. +- **Dependency Cloning** +New function to clone Dependencies. +- **Workload Cloning** +New function to clone Workloads. +- **Variable Group Cloning** +New function to clone Variable Groups. +- **Cluster Monitoring Filters** +Added filters for navigating Cluster events in Cluster Monitoring. +- **Variable Group Search** +Ability to search Variable Groups by internal key names from the general search. + +--- + +## 🐛 Bug Fixes + +- **Selected Account** +The selected account now persists when switching users. +- **Web Services Shutdown** +Improved Web Services shutdown. + +--- diff --git a/content/changelog/en/2025-12-01-V2.3.1.md b/content/changelog/en/2025-12-01-V2.3.1.md deleted file mode 100644 index da58ccb91..000000000 --- a/content/changelog/en/2025-12-01-V2.3.1.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Version 2.3.1" -slug: v2-3-1 -date: 2025-12-01 -tags: [release] ---- - -# 🚀 Version 2.3.1 - - - - -12/01/2025 - -## New Features - -- **Image Analysis in Support:** Support for image analysis in the support bot. -- **Documentation:** New documentation for Dockertron and chart management. -- **Custom Values in Addons:** Ability to use custom values when installing an addon. -- **Nodegroup Change:** Ability to change the nodegroup of non-production clusters. -- **Support Flow:** Conversation flow for support between bot and human. - -## Bug Fixes - -- **Confirmation Modals:** Fixed position of deletion confirmation modals. -- **Builds Table:** Fixed data and column errors in the builds table. -- **Dashboard Notifications:** Fixed notification messages in the dashboard. -- **Workload Names:** Adjusted name sizes for Workloads. -- **Chart Dependency:** Fixed chart dependency flow. -- **Console Alerts:** Fixed notification alerts in the console. diff --git a/content/changelog/en/2025-12-01-version-2.3.1.md b/content/changelog/en/2025-12-01-version-2.3.1.md new file mode 100644 index 000000000..fd36534e7 --- /dev/null +++ b/content/changelog/en/2025-12-01-version-2.3.1.md @@ -0,0 +1,43 @@ +--- +title: Version 2.3.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 12/01/2025 + +--- + +## 🚀 New Features + +- **Image Analysis in Support** +Support for image analysis in the support bot. +- **Documentation** +New documentation for Dockertron and chart management. +- **Custom Values in Addons** +Ability to use custom values when installing an addon. +- **Nodegroup Change** +Ability to change the nodegroup of non-production clusters. +- **Support Flow** +Conversation flow for support between bot and human. + +--- + +## 🐛 Bug Fixes + +- **Confirmation Modals** +Fixed position of deletion confirmation modals. +- **Builds Table** +Fixed data and column errors in the builds table. +- **Dashboard Notifications** +Fixed notification messages in the dashboard. +- **Workload Names** +Adjusted name sizes for Workloads. +- **Chart Dependency** +Fixed chart dependency flow. +- **Console Alerts** +Fixed notification alerts in the console. + +--- diff --git a/content/changelog/en/2025-12-19-V2.3.2.md b/content/changelog/en/2025-12-19-V2.3.2.md deleted file mode 100644 index 6b4d9d841..000000000 --- a/content/changelog/en/2025-12-19-V2.3.2.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Version 2.3.2" -slug: v2-3-2 -date: 2025-12-19 -tags: [release] ---- - -# 🚀 Version 2.3.2 - - - -## New Features - -- **SleakOps CLI:** Improvements and new features, including the ability to open a Workload shell locally. -- **S3 with CloudFront:** Improvements in S3 integration with CloudFront. -- **Python in Lambdas:** Updated Python versions for Lambdas. -- **Charts in Projects:** Improvements to the chart configuration screen in Projects. -- **Subnet Tags:** Improvements in subnet tag handling for autodiscovery. -- **DB Restoration:** Improvements in the database restoration flow from a snapshot. -- **Ingress in Web Services:** Support for configuring URL and ingress annotations in Web Services. -- **API Performance:** Optimization of API performance. -- **Domain Errors:** Improvements in domain error handling. -- **Addon Buttons:** Visual improvements to addon buttons. -- **Notifications:** Visual improvements when displaying notifications. -- **Button Options:** Visual improvements to button options (settings, copy, etc.). -- **RDS Versions:** Updated available RDS versions. -- **Infrastructure Modules:** Optimization of execution times for infrastructure modules. - -## Bug Fixes: - -- **Role Deletion:** Handling of role deletion when deleting a Project. -- **Multi-Provider Billing:** Fixed billing screen with multiple providers. -- **Registration and Login:** Handling of registration and login flow with different subscription states. -- **Nodepool Form:** Error handling in the Nodepool form. -- **Account Switching:** Error handling when switching between accounts. -- **Variable Characters:** Handling of invalid characters in variable names in Variable Groups. -- **Cluster Access:** Handling of Cluster access for different user types. -- **VPN Access:** Error handling when obtaining VPN access for different user types. -- **Listing Texts:** Fixed texts in listings and forms. -- **AWS Connection:** Fixed texts in the step-by-step guide for connecting with AWS. -- **Pending Deployments:** Alert indicator for deployments pending approval. -- **Postgres Upgrade:** Error handling in PostgreSQL upgrade from 14 to 17. -- **RDS Security Group:** Fixed security group for public and private RDS replicas. -- **Support Chat:** Fixed delegation in support chat. diff --git a/content/changelog/en/2025-12-19-version-2.3.2.md b/content/changelog/en/2025-12-19-version-2.3.2.md new file mode 100644 index 000000000..e8c520892 --- /dev/null +++ b/content/changelog/en/2025-12-19-version-2.3.2.md @@ -0,0 +1,77 @@ +--- +title: Version 2.3.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · December 19, 2025 + +--- + +## 🚀 New Features + +- **SleakOps CLI** +Improvements and new features, including the ability to open a Workload shell locally. +- **S3 with CloudFront** +Improvements in S3 integration with CloudFront. +- **Python in Lambdas** +Updated Python versions for Lambdas. +- **Charts in Projects** +Improvements to the chart configuration screen in Projects. +- **Subnet Tags** +Improvements in subnet tag handling for autodiscovery. +- **DB Restoration** +Improvements in the database restoration flow from a snapshot. +- **Ingress in Web Services** +Support for configuring URL and ingress annotations in Web Services. +- **API Performance** +Optimization of API performance. +- **Domain Errors** +Improvements in domain error handling. +- **Addon Buttons** +Visual improvements to addon buttons. +- **Notifications** +Visual improvements when displaying notifications. +- **Button Options** +Visual improvements to button options (settings, copy, etc.). +- **RDS Versions** +Updated available RDS versions. +- **Infrastructure Modules** +Optimization of execution times for infrastructure modules. + +--- + +## 🐛 Bug Fixes + +- **Role Deletion** +Handling of role deletion when deleting a Project. +- **Multi-Provider Billing** +Fixed billing screen with multiple providers. +- **Registration and Login** +Handling of registration and login flow with different subscription states. +- **Nodepool Form** +Error handling in the Nodepool form. +- **Account Switching** +Error handling when switching between accounts. +- **Variable Characters** +Handling of invalid characters in variable names in Variable Groups. +- **Cluster Access** +Handling of Cluster access for different user types. +- **VPN Access** +Error handling when obtaining VPN access for different user types. +- **Listing Texts** +Fixed texts in listings and forms. +- **AWS Connection** +Fixed texts in the step-by-step guide for connecting with AWS. +- **Pending Deployments** +Alert indicator for deployments pending approval. +- **Postgres Upgrade** +Error handling in PostgreSQL upgrade from 14 to 17. +- **RDS Security Group** +Fixed security group for public and private RDS replicas. +- **Support Chat** +Fixed delegation in support chat. + +--- diff --git a/content/changelog/en/2026-01-20-version-2.4.0.md b/content/changelog/en/2026-01-20-version-2.4.0.md index 6f2e74312..57586d85a 100644 --- a/content/changelog/en/2026-01-20-version-2.4.0.md +++ b/content/changelog/en/2026-01-20-version-2.4.0.md @@ -1,46 +1,81 @@ --- title: Version 2.4.0 authors: - - name: Sleakops Team + - name: SleakOps Team tags: - release --- -## **Version 2.4.0** - -🗓️ _01/08/2026_ - -**🚀 New Features:** - -- **Workload Auto-Diagnostics:** With the help of AI, you can now quickly and easily discover what's happening with your Workloads. With just one click from the console, you'll get a complete diagnosis. -- **Grace Period for Workloads:** Support for configuring grace period in Workloads. -- **Cost Tags Notifications:** Added notifications for configuring cost tags. -- **Cascade Deletion:** Improvements in cascade deletion flow with active Dependencies. -- **File-based Variable Groups:** Improvements in the Variable Groups form for file types. -- **Project Selector:** Improvements in forms with Project selector. -- **Activity Logs Navigation:** Added links to navigate between Activity Logs and resources. -- **Sidebar:** Visual improvements to the sidebar. -- **Billing Screen:** Improvements to the billing screen. -- **Domain Editing:** Ability to modify domains in existing Environments. -- **Variable Names:** Handling of variable name length in Variable Groups. -- **Environment Names:** Adjustments to default Environment names. -- **Dependency Monitoring:** Improvements in Dependency monitoring. -- **Small Resolutions:** UI improvements for low resolutions or small screens. -- **Modified Variables:** Improvements in the Variable Groups form to mark which variables were modified. -- **Target Port in Web Services:** Support for configuring targetPort for services in Web Services. - -**🐞 Bug Fixes:** - -- **Environment Names:** Handling of Environment name length. -- **Persistent Filters:** Project and Environment filters now persist between screens. -- **Project Icons:** Improved icons for Projects. -- **Addons with Custom Attributes:** Fixed editing of addons with custom attributes. -- **RDS Replicas:** Validation of RDS replica length. -- **Web Services URL:** Fixed URL auto-generation when editing a Web Service. -- **Project Selector:** Fixed visibility of the Project selector. -- **Nodepool Forms:** Fixed errors in Nodepool editing and creation forms. -- **State Transition:** Fixed transition from pending to completed state. -- **SSL Certificate:** Fixed alerts for SSL certificate validation. -- **Cloning with Versions:** Fixed cloning with Dependency versions. -- **Notification Emails:** Fixed visual errors in notification emails. -- **Cloning URL:** Fixed Web Services URL in cloning flow. -- **Delete Project with RDS:** Fixed deletion of a Project with an RDS that has deletion protection enabled. + +`minor release` · 01/08/2026 + +--- + +## 🚀 New Features + +- **Workload Auto-Diagnostics** +With the help of AI, you can now quickly and easily discover what's happening with your Workloads. With just one click from the console, you'll get a complete diagnosis. +- **Grace Period for Workloads** +Support for configuring grace period in Workloads. +- **Cost Tags Notifications** +Added notifications for configuring cost tags. +- **Cascade Deletion** +Improvements in cascade deletion flow with active Dependencies. +- **File-based Variable Groups** +Improvements in the Variable Groups form for file types. +- **Project Selector** +Improvements in forms with Project selector. +- **Activity Logs Navigation** +Added links to navigate between Activity Logs and resources. +- **Sidebar** +Visual improvements to the sidebar. +- **Billing Screen** +Improvements to the billing screen. +- **Domain Editing** +Ability to modify domains in existing Environments. +- **Variable Names** +Handling of variable name length in Variable Groups. +- **Environment Names** +Adjustments to default Environment names. +- **Dependency Monitoring** +Improvements in Dependency monitoring. +- **Small Resolutions** +UI improvements for low resolutions or small screens. +- **Modified Variables** +Improvements in the Variable Groups form to mark which variables were modified. +- **Target Port in Web Services** +Support for configuring targetPort for services in Web Services. + +--- + +## 🐛 Bug Fixes + +- **Environment Names** +Handling of Environment name length. +- **Persistent Filters** +Project and Environment filters now persist between screens. +- **Project Icons** +Improved icons for Projects. +- **Addons with Custom Attributes** +Fixed editing of addons with custom attributes. +- **RDS Replicas** +Validation of RDS replica length. +- **Web Services URL** +Fixed URL auto-generation when editing a Web Service. +- **Project Selector** +Fixed visibility of the Project selector. +- **Nodepool Forms** +Fixed errors in Nodepool editing and creation forms. +- **State Transition** +Fixed transition from pending to completed state. +- **SSL Certificate** +Fixed alerts for SSL certificate validation. +- **Cloning with Versions** +Fixed cloning with Dependency versions. +- **Notification Emails** +Fixed visual errors in notification emails. +- **Cloning URL** +Fixed Web Services URL in cloning flow. +- **Delete Project with RDS** +Fixed deletion of a Project with an RDS that has deletion protection enabled. + +--- diff --git a/content/changelog/en/2026-01-28-version-2.5.0.md b/content/changelog/en/2026-01-28-version-2.5.0.md index a22e27d95..a48d84722 100644 --- a/content/changelog/en/2026-01-28-version-2.5.0.md +++ b/content/changelog/en/2026-01-28-version-2.5.0.md @@ -1,24 +1,35 @@ --- title: Version 2.5.0 authors: - - name: Sleakops Team + - name: SleakOps Team tags: - release --- -# 🚀 Versión 2.5.0 +`minor release` · 01/22/2026 -🗓️ _01/22/2026_ +--- + +## 🚀 New Features -## Nuevas Funcionalidades +- **Buildkit as New Build Engine** +We are incorporating Buildkit as the main build engine, achieving faster, more stable, and reliable container builds. This improvement includes optimizing build validation and execution flows along with a progressive, uninterrupted migration from Kaniko. +- **Guided Tours for Editor and Viewer** +Onboarding tours have been added for editor and viewer roles, facilitating the adoption of key functionalities and initial navigation. +- **Tour Completion** +The tour experience has been improved by incorporating a "Finish / Close" button on the last step. -- Buildkit as New Build Engine: We are incorporating Buildkit as the main build engine, achieving faster, more stable, and reliable container builds. This improvement includes optimizing build validation and execution flows along with a progressive, uninterrupted migration from Kaniko. -- Guided Tours for Editor and Viewer: Onboarding tours have been added for editor and viewer roles, facilitating the adoption of key functionalities and initial navigation. -- Tour Completion: The tour experience has been improved by incorporating a "Finish / Close" button on the last step. +--- -## Bug Fixes +## 🐛 Bug Fixes -- Field Names in Variable Groups: Correction in the display of field names in file-type Variable Groups to show current values. -- Error Messages in Textmode: Correction in the display of length errors in Variable Groups in text mode. -- RDS Snapshot Creation: Improvement in instance identifier validation for snapshots, ensuring the use of allowed characters. -- Log Visualization: Fixed the loading of errors and log details from the backend, allowing for a better troubleshooting experience. +- **Field Names in Variable Groups** +Correction in the display of field names in file-type Variable Groups to show current values. +- **Error Messages in Textmode** +Correction in the display of length errors in Variable Groups in text mode. +- **RDS Snapshot Creation** +Improvement in instance identifier validation for snapshots, ensuring the use of allowed characters. +- **Log Visualization** +Fixed the loading of errors and log details from the backend, allowing for a better troubleshooting experience. + +--- diff --git a/content/changelog/en/2026-02-04-version-2.5.1.md b/content/changelog/en/2026-02-04-version-2.5.1.md index c87612f56..0c3f4e16c 100644 --- a/content/changelog/en/2026-02-04-version-2.5.1.md +++ b/content/changelog/en/2026-02-04-version-2.5.1.md @@ -1,36 +1,59 @@ --- title: Version 2.5.1 authors: - - name: Sleakops Team + - name: SleakOps Team tags: - release --- -# 🚀 Version 2.5.1 - -🗓️ _02/04/2026_ - -## New Features - -- **VariableGroup Replication:** You can now replicate VariableGroups easily across multiple Projects, enabling broader dissemination of secrets and shared resources without redundant setup. -- **Custom Pod Annotations:** You can now add custom annotations for pods in any supported workload (excluding jobs), including the "karpenter.sh/do-not-disrupt" annotation with built-in explanation and guidance, helping optimize compatibility with Karpenter clusters. -- **CronJob Annotations:** Additional annotation support for CronJobs, making it easier to align with advanced operational requirements. -- **CronJob Name Visible:** The edit interface for cronjobs now shows the cronjob's name at the top, reducing mistakes when editing multiple jobs. -- **Role Change Notice:** Added an informational prompt when editing a user's role to notify that kubeconfigs may need reconfiguration, preventing access issues after role changes. -- **Improved Schema Selector:** Removed the "None" option from the service schema selector, and now the schema visibility is shown on the service list, helping quickly distinguish between public and private services. -- **Dashboard - Domains:** More informative and client-friendly text is now displayed instead of 'Reason:' for domain status explanations. -- **Custom Addon Values:** Enhanced support for custom values in Addons, ensuring correct value propagation to deployed helm releases (especially Grafana and Prometheus). Default retention for Prometheus has been unified to 90 days, with improved form comments. -- **"Updating" Status Filter:** Added "updating" as a filter option in status selectors, allowing for better workload monitoring. - -## Bug Fixes - -- **VariableGroup Service Filtering:** VariableGroup PATCH operations no longer show unfiltered Services; only relevant ProjectEnv services appear. -- **Volume Deletion:** Volume deletions no longer get stuck in 'Error while Deleting' or 'Deleting' status; deployment logic ensures proper cleanup. -- **Build Execution Order:** The execution order of builds is now processed correctly, so build history reflects actual execution order. -- **Build Buttons:** Build error states now show a "rebuild" button, and only show a "redeploy" button if the build succeeded. -- **Dependency Creation Scroll:** The final step of dependency creation now scrolls correctly, allowing smooth completion. -- **Create Modal:** Prevented the create modal from closing and disabled the "Create" button on form validation errors to avoid accidental data loss. -- **User Deletion:** Fixed error messages when deleting users who may not exist in Chatwoot, preventing backend crashes. -- VPN/Account Rules: Enforcement of VPN/account selection rules is now consistent for all user roles during both creation and editing. -- **RFC 1123 Name Validation:** Names on deployments and jobs (including CronJobs) are now validated and corrected to comply with RFC 1123. -- **Protected DB Deletion:** Deleting a DB with 'deletion_protection' enabled now works as intended and does not stick in a retry state. +`patch release` · 02/04/2026 + +--- + +## 🚀 New Features + +- **VariableGroup Replication** +You can now replicate VariableGroups easily across multiple Projects, enabling broader dissemination of secrets and shared resources without redundant setup. +- **Custom Pod Annotations** +You can now add custom annotations for pods in any supported workload (excluding jobs), including the "karpenter.sh/do-not-disrupt" annotation with built-in explanation and guidance, helping optimize compatibility with Karpenter clusters. +- **CronJob Annotations** +Additional annotation support for CronJobs, making it easier to align with advanced operational requirements. +- **CronJob Name Visible** +The edit interface for cronjobs now shows the cronjob's name at the top, reducing mistakes when editing multiple jobs. +- **Role Change Notice** +Added an informational prompt when editing a user's role to notify that kubeconfigs may need reconfiguration, preventing access issues after role changes. +- **Improved Schema Selector** +Removed the "None" option from the service schema selector, and now the schema visibility is shown on the service list, helping quickly distinguish between public and private services. +- **Dashboard - Domains** +More informative and client-friendly text is now displayed instead of 'Reason:' for domain status explanations. +- **Custom Addon Values** +Enhanced support for custom values in Addons, ensuring correct value propagation to deployed helm releases (especially Grafana and Prometheus). Default retention for Prometheus has been unified to 90 days, with improved form comments. +- **"Updating" Status Filter** +Added "updating" as a filter option in status selectors, allowing for better workload monitoring. + +--- + +## 🐛 Bug Fixes + +- **VariableGroup Service Filtering** +VariableGroup PATCH operations no longer show unfiltered Services; only relevant ProjectEnv services appear. +- **Volume Deletion** +Volume deletions no longer get stuck in 'Error while Deleting' or 'Deleting' status; deployment logic ensures proper cleanup. +- **Build Execution Order** +The execution order of builds is now processed correctly, so build history reflects actual execution order. +- **Build Buttons** +Build error states now show a "rebuild" button, and only show a "redeploy" button if the build succeeded. +- **Dependency Creation Scroll** +The final step of dependency creation now scrolls correctly, allowing smooth completion. +- **Create Modal** +Prevented the create modal from closing and disabled the "Create" button on form validation errors to avoid accidental data loss. +- **User Deletion** +Fixed error messages when deleting users who may not exist in Chatwoot, preventing backend crashes. +- **VPN/Account Rules** +Enforcement of VPN/account selection rules is now consistent for all user roles during both creation and editing. +- **RFC 1123 Name Validation** +Names on deployments and jobs (including CronJobs) are now validated and corrected to comply with RFC 1123. +- **Protected DB Deletion** +Deleting a DB with 'deletion_protection' enabled now works as intended and does not stick in a retry state. + +--- diff --git a/content/changelog/en/2026-02-23-version-2.6.0.md b/content/changelog/en/2026-02-23-version-2.6.0.md index 079dc0191..893c6b0dd 100644 --- a/content/changelog/en/2026-02-23-version-2.6.0.md +++ b/content/changelog/en/2026-02-23-version-2.6.0.md @@ -1,36 +1,69 @@ --- title: Version 2.6.0 -authors: [] +authors: + - name: SleakOps Team tags: - release --- -## New Features - -- **EKS 1.33 Support:** SleakOps now supports EKS 1.33 cluster upgrades, including updated `code-dns`, `kubeproxy`, and NodePool AMIs (both Bottlerocket and AL2023). -- **Karpenter Upgrade to v1.8:** Karpenter has been upgraded from v1.3.2 to v1.8, bringing improved node autoscaling performance and stability. -- **Karpenter Monitoring Dashboard:** A dedicated Karpenter dashboard has been added to Grafana, providing visibility into node autoscaling behavior and metrics. -- **Simplified Menu:** The sidebar has been reorganized. -- **Environment Clone Naming:** When cloning an Environment, a modified name is now automatically generated to help prevent naming conflicts with the original. -- **VariableGroup File Editing:** Improved the editing experience for VariableGroups of type `file`, providing a more intuitive workflow. -- **Form Navigation:** Canceling a form now redirects users to the previous page instead of defaulting to the resource list view. -- **CronJob Next Execution Tooltip:** The tooltip for CronJobs now displays the next scheduled execution time. -- **DNS A Record Alias Delegation:** Added support for domain alias delegation via A-type DNS records, enabling users with domains managed outside SleakOps to delegate them properly. -- **Prometheus CPU Requests:** Users can now define `request_cpu` values in Prometheus alongside existing `backend_memory_requests` for better resource allocation control. -- **Grafana Metrics Retention:** Increased the metrics retention time in Grafana for longer historical data availability. -- **Improved Service Downtime Reports:** Enhanced logging and structure of ServiceDowntimeReport for more accurate sub-second downtime tracking. -- **Cluster Editor Permissions:** The editor role has been updated to prevent unauthorized cluster creation, limiting this action to appropriate roles. - -## Bug Fixes - -- **VariableGroup Project Selection:** Fixed project selection for VariableGroup replication — now correctly displays only projects that share the same cluster. -- **VariableGroup Vertical Error:** Resolved a display error that occurred when pasting VariableGroups in text mode. -- **VariableGroup ENV Validation:** Fixed validation for ENV-type VariableGroups in text mode to prevent submissions with invalid content. -- **Replicated VariableGroup Deletion:** Deleting a replicated VariableGroup now correctly triggers deploys on all associated projects, not just the main one. -- **Monitoring Dependency Date:** Fixed the date picker display in the Monitoring Dependency module for proper metrics analysis. -- **Domain Change Error:** Resolved a error when changing domains in an Environment, ensuring proper URL updates and release creation. -- **Cluster Patch with Deletion Protection:** Cluster configuration can now be edited even when an RDS dependency has `deletion_protection` enabled. -- **IAM User Password:** Fixed an issue with auto-generated passwords when creating IAM users. -- **ChartDependency Deploy:** Creating or editing ChartDependencies now correctly triggers the deployment process. -- **NodePool Instance Optimization:** Fixed an issue where NodePools were creating unnecessary `t3a.micro` instances, improving resource allocation efficiency. -- **CNI Update Task Validation:** Added validation to prevent duplicate CNI update tasks from being triggered simultaneously. +`minor release` · February 23, 2026 + +--- + +## 🚀 New Features + +- **EKS 1.33 Support** +SleakOps now supports EKS 1.33 cluster upgrades, including updated `code-dns`, `kubeproxy`, and NodePool AMIs (both Bottlerocket and AL2023). +- **Karpenter Upgrade to v1.8** +Karpenter has been upgraded from v1.3.2 to v1.8, bringing improved node autoscaling performance and stability. +- **Karpenter Monitoring Dashboard** +A dedicated Karpenter dashboard has been added to Grafana, providing visibility into node autoscaling behavior and metrics. +- **Simplified Menu** +The sidebar has been reorganized. +- **Environment Clone Naming** +When cloning an Environment, a modified name is now automatically generated to help prevent naming conflicts with the original. +- **VariableGroup File Editing** +Improved the editing experience for VariableGroups of type `file`, providing a more intuitive workflow. +- **Form Navigation** +Canceling a form now redirects users to the previous page instead of defaulting to the resource list view. +- **CronJob Next Execution Tooltip** +The tooltip for CronJobs now displays the next scheduled execution time. +- **DNS A Record Alias Delegation** +Added support for domain alias delegation via A-type DNS records, enabling users with domains managed outside SleakOps to delegate them properly. +- **Prometheus CPU Requests** +Users can now define `request_cpu` values in Prometheus alongside existing `backend_memory_requests` for better resource allocation control. +- **Grafana Metrics Retention** +Increased the metrics retention time in Grafana for longer historical data availability. +- **Improved Service Downtime Reports** +Enhanced logging and structure of ServiceDowntimeReport for more accurate sub-second downtime tracking. +- **Cluster Editor Permissions** +The editor role has been updated to prevent unauthorized cluster creation, limiting this action to appropriate roles. + +--- + +## 🐛 Bug Fixes + +- **VariableGroup Project Selection** +Fixed project selection for VariableGroup replication — now correctly displays only projects that share the same cluster. +- **VariableGroup Vertical Error** +Resolved a display error that occurred when pasting VariableGroups in text mode. +- **VariableGroup ENV Validation** +Fixed validation for ENV-type VariableGroups in text mode to prevent submissions with invalid content. +- **Replicated VariableGroup Deletion** +Deleting a replicated VariableGroup now correctly triggers deploys on all associated projects, not just the main one. +- **Monitoring Dependency Date** +Fixed the date picker display in the Monitoring Dependency module for proper metrics analysis. +- **Domain Change Error** +Resolved a error when changing domains in an Environment, ensuring proper URL updates and release creation. +- **Cluster Patch with Deletion Protection** +Cluster configuration can now be edited even when an RDS dependency has `deletion_protection` enabled. +- **IAM User Password** +Fixed an issue with auto-generated passwords when creating IAM users. +- **ChartDependency Deploy** +Creating or editing ChartDependencies now correctly triggers the deployment process. +- **NodePool Instance Optimization** +Fixed an issue where NodePools were creating unnecessary `t3a.micro` instances, improving resource allocation efficiency. +- **CNI Update Task Validation** +Added validation to prevent duplicate CNI update tasks from being triggered simultaneously. + +--- diff --git a/content/changelog/en/2026-03-17-version-2.7.0.md b/content/changelog/en/2026-03-17-version-2.7.0.md deleted file mode 100644 index 49cc06e2a..000000000 --- a/content/changelog/en/2026-03-17-version-2.7.0.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Version 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`minor release` · March 17, 2026 - ---- - -## 🚀 New Features - -- **Integrated Headlamp Addon with Token-based Access** -You can now install the Headlamp IDE as an addon and access it directly from SleakOps with automatic token-based authentication, removing the need for manual logins and improving operational efficiency. - -- **Loki v2 Addon with Improved Reliability** -Loki v2 is now available as a new addon, leveraging Grafana Alloy for log collection and including critical stability fixes. Both the classic Loki and Loki v2 can be installed in parallel; by default, queries will prioritize Loki v2. Users are notified of this major update and can keep the previous Loki active for data retention during migration. - -- **Headlamp Addon Link: One-Click Authenticated Access** -The Headlamp addon link now generates and reuses access tokens automatically, allowing direct, role-based entry into the Headlamp UI from your cluster’s addon list, with no manual authentication required. - -- **Dedicated Autodiagnostics Ticketing and Console Screen** -Autodiagnostic tickets are now managed through a separate workflow, with a dedicated ticket inbox, expanded drawer view for diagnostics, and a new console screen to review, filter, and manage these tickets by workload. This separation makes it easier to track health checks independently from support tickets and enhances team productivity. - -- **Addon Deprecation Status Visualization** -Addons marked as deprecated now clearly display a "Deprecated" badge in both the addons list and detail drawer. This helps users plan migrations, avoid installing outdated components, and make informed upgrade decisions. - -- **AI-Driven Addon Documentation for Extensibility** -Comprehensive documentation is now available to enable rapid creation and integration of new addons using AI workflows. This guides both EKS and Helm releases, streamlining the process of adding and managing extensible dependencies. - -- **Select Environment on Project Creation with Role-Based Quick Add** -When creating a project, the environment selector now automatically preselects the environment just created, and the quick-add button beside the selector is only visible to users with "Settings" permissions. This speeds up project setup and enforces RBAC security on environment creation. - ---- - -## ✨ Improvements - -- **Complete Dockertron Integration in Project Creation** -You can now generate a Dockerfile via Dockertron directly when creating a project. The workflow includes improved UI clarity, dynamic quiz input for GenAI, project saving before starting Dockerization, and automatic feedback and redirection upon completion for a seamless onboarding experience. - -- **Enhanced Dockertron Project Detection and Selection** -Dockertron now analyzes entire GitHub repositories and presents all detected subprojects for selection, allowing you to choose exactly which application to containerize. This reduces manual steps and increases automation coverage, especially for monorepos. - -- **Backend Notification Upon Dockerization Completion** -You will now receive a notification in SleakOps whenever a Dockerization process started by Dockertron concludes, informing you of both successful and failed attempts, so you no longer need to check status manually. - -- **Improved Dockertron Project List UI and User Workflow** -The Dockertron user interface within Projects has been refined: clearer action buttons, better field ordering, enhanced button visibility, and an interface now decoupled from Project layout for a smoother and more intuitive experience. - -- **API: Comprehensive Dockertron Process Listing** -The backend API now exposes a complete list of Dockertron processes for users, enabling better tracking, visibility, and audit of all automated Dockerfile generations associated with your projects. - -- **Cluster Upgrade Scheduling Visibility in Dashboard** -Clusters with pending or scheduled upgrades now show a prominent indicator directly on the dashboard card, alerting operators to upcoming maintenance and helping with operational planning. - -- **"Get Access" Card Improvements** -The "Get Access" dashboard card has been analyzed and improved based on latest UX proposals, enhancing access flows for end users. - -- **Custom YAML Values Editor for Addons** -The custom YAML values field in addon configuration now uses a full-featured, multiline code editor, offering better readability, indentation, and error reduction compared to text input fields. - -- **Clear Required Field Indicators in All Forms** -All generic forms now display a clear visual indicator (asterisk) for mandatory fields, making it easier to see what information is required and reducing submission errors. - ---- - -## 🐛 Bug Fixes - -- **Resource Name Truncation when Creating CronJobs** -CronJobs with long Project and Environment names now retain their full resource name, preventing accidental overwriting or failed job deployments. - -- **Correct Alias State for Deleted Web Service Domains** -The dashboard now accurately reflects the state of web service aliases after deletion, ensuring deleted domains are displayed properly and reducing configuration errors. - -- **No Redirection after Project Creation with Dockertron** -After completing project creation with Dockertron, users are now correctly redirected to the Dockertron executions page, displaying the just-created project. - -- **Required Field Filters Reset on Account Switch** -Project and environment filters are properly cleared when switching accounts, preventing leftover filters from previous accounts and ensuring consistent resource views. - -- **Domain Change in Environment No Longer Causes 400 Errors** -Environments can now have their domain changed without triggering a 400 error, and service URLs update correctly, ensuring new deployment releases are recognized as valid changes. - -- **Aurora Read Replica Subnet Fix** -Aurora public read replicas are now correctly provisioned in the right subnet, resolving connectivity problems reported by users. - -- **Shutdown Blocked by Dependency Deletion Protection Resolved** -Cluster shutdowns are no longer blocked incorrectly by deletion protection on dependencies, allowing users to power off clusters smoothly when needed. - -- **Fix ProjectEnv Transition Error When Powering On Cluster** -Powering on a cluster is now reliable, even after a project environment was left in a transitional state, preventing clusters from being stuck due to volume operations. - ---- diff --git a/content/changelog/es/2023-08-23-V1.0.0.md b/content/changelog/es/2023-08-23-V1.0.0.md deleted file mode 100644 index be3a2b3d6..000000000 --- a/content/changelog/es/2023-08-23-V1.0.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Versión 1.0.0" -slug: v1-0-0 -date: 2023-08-23 -tags: [release] ---- - -# 🚀 Versión 1.0.0 - - - -23/08/2023 - -## Nuevas Funcionalidades - -- **Configuración de Volúmenes:** Ahora puedes configurar volúmenes en environments de proyecto directamente desde el formulario. -- **Apagado Nocturno con Zona Horaria:** Agregado soporte para seleccionar zonas horarias en el apagado nocturno. -- **Inicio Manual de Cluster:** Nuevo botón para iniciar clusters manualmente. -- **Integración con CloudFront:** Soporte para usar CloudFront para mejorar la entrega de contenido. -- **Backups Automáticos:** Puedes configurar backups automáticos para dependencies. -- **Instancias Graviton:** Soporte para usar instancias Graviton en nodos. -- **Encriptación:** Implementada encriptación en StackSettings para mayor seguridad. - -## Correcciones de Errores - -- Resuelto un problema en la API de facturación y estimación de costos. -- Corregidos errores al eliminar Providers y VPNs. -- Ahora puedes eliminar certificados ACM usados por un Load Balancer sin problemas. diff --git a/content/changelog/es/2023-08-23-version-1.0.0.md b/content/changelog/es/2023-08-23-version-1.0.0.md new file mode 100644 index 000000000..b5ca2ba98 --- /dev/null +++ b/content/changelog/es/2023-08-23-version-1.0.0.md @@ -0,0 +1,38 @@ +--- +title: Versión 1.0.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`major release` · 23/08/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Configuración de Volúmenes** +Ahora puedes configurar volúmenes en environments de proyecto directamente desde el formulario. +- **Apagado Nocturno con Zona Horaria** +Agregado soporte para seleccionar zonas horarias en el apagado nocturno. +- **Inicio Manual de Cluster** +Nuevo botón para iniciar clusters manualmente. +- **Integración con CloudFront** +Soporte para usar CloudFront para mejorar la entrega de contenido. +- **Backups Automáticos** +Puedes configurar backups automáticos para dependencies. +- **Instancias Graviton** +Soporte para usar instancias Graviton en nodos. +- **Encriptación** +Implementada encriptación en StackSettings para mayor seguridad. + +--- + +## 🐛 Correcciones + +- Resuelto un problema en la API de facturación y estimación de costos. +- Corregidos errores al eliminar Providers y VPNs. +- Ahora puedes eliminar certificados ACM usados por un Load Balancer sin problemas. + +--- diff --git a/content/changelog/es/2023-08-29-V1.0.1.md b/content/changelog/es/2023-08-29-V1.0.1.md deleted file mode 100644 index e67ba3b46..000000000 --- a/content/changelog/es/2023-08-29-V1.0.1.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Versión 1.0.1" -slug: v1-0-1 -date: 2023-08-29 -tags: [release] ---- - -# 🚀 Versión 1.0.1 - - - -29/08/2023 - -## Nuevas Funcionalidades - -- **Gestión de Suscripciones:** El login y actualizaciones de token se controlan según el estado de la suscripción. Adicionalmente, se implementó una nueva API para registrar usuarios y empresas, validando suscripciones pendientes, con un nuevo modelo para mejor gestión de suscripciones, integrando AwsClient. -- **Onboarding de Marketplace:** Proceso simplificado para crear usuarios que vienen de un marketplace. diff --git a/content/changelog/es/2023-08-29-version-1.0.1.md b/content/changelog/es/2023-08-29-version-1.0.1.md new file mode 100644 index 000000000..314b25941 --- /dev/null +++ b/content/changelog/es/2023-08-29-version-1.0.1.md @@ -0,0 +1,20 @@ +--- +title: Versión 1.0.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 29/08/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Gestión de Suscripciones** +El login y actualizaciones de token se controlan según el estado de la suscripción. Adicionalmente, se implementó una nueva API para registrar usuarios y empresas, validando suscripciones pendientes, con un nuevo modelo para mejor gestión de suscripciones, integrando AwsClient. +- **Onboarding de Marketplace** +Proceso simplificado para crear usuarios que vienen de un marketplace. + +--- diff --git a/content/changelog/es/2023-09-04-V1.0.2.md b/content/changelog/es/2023-09-04-V1.0.2.md deleted file mode 100644 index fda7152c7..000000000 --- a/content/changelog/es/2023-09-04-V1.0.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.0.2" -slug: v1-0-2 -date: 2023-09-04 -tags: [release] ---- - -# 🚀 Versión 1.0.2 - - - -04/09/2023 - -## Nuevas Funcionalidades - -- **Optimización de Deployment:** Simplificado el proceso de deployment y edición de environment de proyecto (ProjectEnv), facilitando configuración y deployment. -- **Ajustes de Recursos y Configuración:** Ahora puedes crear aliases personalizados para buckets. -- **Mejoras en Health Check:** La sonda de readiness para servicios en la cuenta de desarrollo ahora es opcional. - -## Correcciones de Errores - -- Resueltos problemas relacionados con VPN y configuración de parámetros de seguridad. diff --git a/content/changelog/es/2023-09-04-version-1.0.2.md b/content/changelog/es/2023-09-04-version-1.0.2.md new file mode 100644 index 000000000..36400bd9c --- /dev/null +++ b/content/changelog/es/2023-09-04-version-1.0.2.md @@ -0,0 +1,28 @@ +--- +title: Versión 1.0.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 04/09/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Optimización de Deployment** +Simplificado el proceso de deployment y edición de environment de proyecto (ProjectEnv), facilitando configuración y deployment. +- **Ajustes de Recursos y Configuración** +Ahora puedes crear aliases personalizados para buckets. +- **Mejoras en Health Check** +La sonda de readiness para servicios en la cuenta de desarrollo ahora es opcional. + +--- + +## 🐛 Correcciones + +- Resueltos problemas relacionados con VPN y configuración de parámetros de seguridad. + +--- diff --git a/content/changelog/es/2023-09-25-V1.0.3.md b/content/changelog/es/2023-09-25-V1.0.3.md deleted file mode 100644 index a6b6ef722..000000000 --- a/content/changelog/es/2023-09-25-V1.0.3.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.0.3" -slug: v1-0-3 -date: 2023-09-25 -tags: [release] ---- - -# 🚀 Versión 1.0.3 - - - -25/09/2023 - -## Nuevas Funcionalidades - -- **Botones de Gestión y Mejoras en Formularios:** Agregados botones para gestión de recursos y mejorados formularios de mapeo de variables. -- **Cronjobs y Regeneración de Dominio:** Ahora puedes detener o activar cronjobs y regenerar dominios. - -## Correcciones de Errores - -- Resuelto el problema de obtener el URI de VPN en Pritunl. -- Corregido el problema de selección de cuenta para usuarios viewer. -- Mejorado el manejo de información de health check enviada al backend. diff --git a/content/changelog/es/2023-09-25-version-1.0.3.md b/content/changelog/es/2023-09-25-version-1.0.3.md new file mode 100644 index 000000000..5c30df4c6 --- /dev/null +++ b/content/changelog/es/2023-09-25-version-1.0.3.md @@ -0,0 +1,28 @@ +--- +title: Versión 1.0.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 25/09/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Botones de Gestión y Mejoras en Formularios** +Agregados botones para gestión de recursos y mejorados formularios de mapeo de variables. +- **Cronjobs y Regeneración de Dominio** +Ahora puedes detener o activar cronjobs y regenerar dominios. + +--- + +## 🐛 Correcciones + +- Resuelto el problema de obtener el URI de VPN en Pritunl. +- Corregido el problema de selección de cuenta para usuarios viewer. +- Mejorado el manejo de información de health check enviada al backend. + +--- diff --git a/content/changelog/es/2023-10-11-V1.0.4.md b/content/changelog/es/2023-10-11-V1.0.4.md deleted file mode 100644 index d39cb2c03..000000000 --- a/content/changelog/es/2023-10-11-V1.0.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.0.4" -slug: v1-0-4 -date: 2023-10-11 -tags: [release] ---- - -# 🚀 Versión 1.0.4 - - - -11/10/2023 - -## Nuevas Funcionalidades - -- **Refactorización y Mejoras:** Refactorizado el dashboard y mejorada la visualización de logs y la gestión de eliminación de entidades. - -## Correcciones de Errores - -- Corregidos problemas de edición de usuarios. -- Corregida la gestión del estado del cluster. -- Resueltos problemas con dominios de environment. -- Corregido el manejo de errores en respuestas S3 con CloudFront. diff --git a/content/changelog/es/2023-10-11-version-1.0.4.md b/content/changelog/es/2023-10-11-version-1.0.4.md new file mode 100644 index 000000000..c738da4e3 --- /dev/null +++ b/content/changelog/es/2023-10-11-version-1.0.4.md @@ -0,0 +1,27 @@ +--- +title: Versión 1.0.4 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 11/10/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Refactorización y Mejoras** +Refactorizado el dashboard y mejorada la visualización de logs y la gestión de eliminación de entidades. + +--- + +## 🐛 Correcciones + +- Corregidos problemas de edición de usuarios. +- Corregida la gestión del estado del cluster. +- Resueltos problemas con dominios de environment. +- Corregido el manejo de errores en respuestas S3 con CloudFront. + +--- diff --git a/content/changelog/es/2023-10-27-V1.0.5.md b/content/changelog/es/2023-10-27-version-1.0.5.md similarity index 53% rename from content/changelog/es/2023-10-27-V1.0.5.md rename to content/changelog/es/2023-10-27-version-1.0.5.md index 453d32d89..488ec9cda 100644 --- a/content/changelog/es/2023-10-27-V1.0.5.md +++ b/content/changelog/es/2023-10-27-version-1.0.5.md @@ -1,17 +1,18 @@ --- -title: "Versión 1.0.5" -slug: v1-0-5 -date: 2023-10-27 -tags: [release] +title: Versión 1.0.5 +authors: + - name: SleakOps Team +tags: + - release --- -# 🚀 Versión 1.0.5 +`patch release` · 27/10/2023 - - -27/10/2023 +--- -## Correcciones de Errores +## 🐛 Correcciones - Resueltos problemas de deployment y corregido Karpenter con instancias spot. - Corregidos problemas al eliminar entidades y validar URLs de servicios. + +--- diff --git a/content/changelog/es/2023-11-06-V1.1.0.md b/content/changelog/es/2023-11-06-V1.1.0.md deleted file mode 100644 index e3b637dc6..000000000 --- a/content/changelog/es/2023-11-06-V1.1.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.1.0" -slug: v1-1-0 -date: 2023-11-06 -tags: [release] ---- - -# 🚀 Versión 1.1.0 - - - -06/11/2023 - -## Nuevas Funcionalidades - -- **Gestión de Vargroups:** Agregada la opción de mostrar vargroups en los formularios para servicios, workers, hooks y cronjobs. -- **Kubecost:** Integrado Kubecost con Prometheus-stack. - -## Correcciones de Errores - -- Resuelto el problema con Karpenter en instancias spot. -- Corregidos roles de usuario y edición de usuarios. -- Corregidos problemas al eliminar un environment y la eliminación incorrecta de dominios. -- Corregido el error al intentar iniciar manualmente el cluster. -- Resuelto un error en la generación de hooks. diff --git a/content/changelog/es/2023-11-06-version-1.1.0.md b/content/changelog/es/2023-11-06-version-1.1.0.md new file mode 100644 index 000000000..a8bae7d4c --- /dev/null +++ b/content/changelog/es/2023-11-06-version-1.1.0.md @@ -0,0 +1,30 @@ +--- +title: Versión 1.1.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 06/11/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Gestión de Vargroups** +Agregada la opción de mostrar vargroups en los formularios para servicios, workers, hooks y cronjobs. +- **Kubecost** +Integrado Kubecost con Prometheus-stack. + +--- + +## 🐛 Correcciones + +- Resuelto el problema con Karpenter en instancias spot. +- Corregidos roles de usuario y edición de usuarios. +- Corregidos problemas al eliminar un environment y la eliminación incorrecta de dominios. +- Corregido el error al intentar iniciar manualmente el cluster. +- Resuelto un error en la generación de hooks. + +--- diff --git a/content/changelog/es/2023-12-05-V1.1.1.md b/content/changelog/es/2023-12-05-V1.1.1.md deleted file mode 100644 index d520b90c0..000000000 --- a/content/changelog/es/2023-12-05-V1.1.1.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Versión 1.1.1" -slug: v1-1-1 -date: 2023-12-05 -tags: [release] ---- - -# 🚀 Versión 1.1.1 - - - -05/12/2023 - -## Nuevas Funcionalidades - -- **Visor de Logs en Jobs:** Agregado un visor de logs en la lista de jobs, similar al que ya existe para deployments. -- **Dashboard v2:** Mejoras en la segunda versión del Dashboard, con más opciones y mejor organización de información. -- **Certificados de Cluster:** Los certificados de cluster ahora se eliminan y actualizan automáticamente para prevenir problemas de expiración. diff --git a/content/changelog/es/2023-12-05-version-1.1.1.md b/content/changelog/es/2023-12-05-version-1.1.1.md new file mode 100644 index 000000000..6f9d0a672 --- /dev/null +++ b/content/changelog/es/2023-12-05-version-1.1.1.md @@ -0,0 +1,22 @@ +--- +title: Versión 1.1.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/12/2023 + +--- + +## 🚀 Nuevas funcionalidades + +- **Visor de Logs en Jobs** +Agregado un visor de logs en la lista de jobs, similar al que ya existe para deployments. +- **Dashboard v2** +Mejoras en la segunda versión del Dashboard, con más opciones y mejor organización de información. +- **Certificados de Cluster** +Los certificados de cluster ahora se eliminan y actualizan automáticamente para prevenir problemas de expiración. + +--- diff --git a/content/changelog/es/2024-01-05-V1.2.0.md b/content/changelog/es/2024-01-05-V1.2.0.md deleted file mode 100644 index 9796076d0..000000000 --- a/content/changelog/es/2024-01-05-V1.2.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.2.0" -slug: v1-2-0 -date: 2024-01-05 -tags: [release] ---- - -# 🚀 Versión 1.2.0 - - - -05/01/2024 - -## Nuevas Funcionalidades - -- **Logs en Grafana:** Se ha configurado una fuente de datos en Grafana para mostrar logs desde S3. -- **Botón de Actualización de Cluster:** Se ha agregado un botón para permitir actualizaciones de cluster desde la interfaz. -- **Log de Actividad de Usuario:** Se ha creado un log de actividad para acciones de usuario. -- **Deploy de Validación de Dominio:** Ahora puedes crear un deploy que se ejecuta una vez que los dominios están validados. -- **Autenticación de Dos Factores:** Se ha agregado autenticación de dos factores (2FA) al login para mayor seguridad. - -## Correcciones de Errores - -- Se ha corregido un problema con builds usando la misma rama que la predeterminada. -- Se ha mejorado la lectura de logs para procesamiento más rápido. -- Se han realizado varias optimizaciones de frontend, incluyendo estilos, búsqueda y visibilidad de recursos pendientes. diff --git a/content/changelog/es/2024-01-05-version-1.2.0.md b/content/changelog/es/2024-01-05-version-1.2.0.md new file mode 100644 index 000000000..a195a297a --- /dev/null +++ b/content/changelog/es/2024-01-05-version-1.2.0.md @@ -0,0 +1,34 @@ +--- +title: Versión 1.2.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 05/01/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Logs en Grafana** +Se ha configurado una fuente de datos en Grafana para mostrar logs desde S3. +- **Botón de Actualización de Cluster** +Se ha agregado un botón para permitir actualizaciones de cluster desde la interfaz. +- **Log de Actividad de Usuario** +Se ha creado un log de actividad para acciones de usuario. +- **Deploy de Validación de Dominio** +Ahora puedes crear un deploy que se ejecuta una vez que los dominios están validados. +- **Autenticación de Dos Factores** +Se ha agregado autenticación de dos factores (2FA) al login para mayor seguridad. + +--- + +## 🐛 Correcciones + +- Se ha corregido un problema con builds usando la misma rama que la predeterminada. +- Se ha mejorado la lectura de logs para procesamiento más rápido. +- Se han realizado varias optimizaciones de frontend, incluyendo estilos, búsqueda y visibilidad de recursos pendientes. + +--- diff --git a/content/changelog/es/2024-01-12-V1.2.1.md b/content/changelog/es/2024-01-12-V1.2.1.md deleted file mode 100644 index ce1690e5c..000000000 --- a/content/changelog/es/2024-01-12-V1.2.1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.2.1" -slug: v1-2-1 -date: 2024-01-12 -tags: [release] ---- - -# 🚀 Versión 1.2.1 - - - - -12/01/2024 - -## Nuevas Funcionalidades - -- **Optimización de Formulario de Vargroup:** Se han realizado mejoras de usabilidad en los formularios de Vargroup. -- **Eliminación de Provider y Cuenta de Usuario:** Eliminar un provider ahora también elimina las cuentas de usuario asociadas. - -## Correcciones de Errores - -- Se ha corregido un bug en la regeneración de certificados ACM. -- Se ha corregido un problema de eliminación de provider. diff --git a/content/changelog/es/2024-01-12-version-1.2.1.md b/content/changelog/es/2024-01-12-version-1.2.1.md new file mode 100644 index 000000000..82a03fe45 --- /dev/null +++ b/content/changelog/es/2024-01-12-version-1.2.1.md @@ -0,0 +1,27 @@ +--- +title: Versión 1.2.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 12/01/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Optimización de Formulario de Vargroup** +Se han realizado mejoras de usabilidad en los formularios de Vargroup. +- **Eliminación de Provider y Cuenta de Usuario** +Eliminar un provider ahora también elimina las cuentas de usuario asociadas. + +--- + +## 🐛 Correcciones + +- Se ha corregido un bug en la regeneración de certificados ACM. +- Se ha corregido un problema de eliminación de provider. + +--- diff --git a/content/changelog/es/2024-01-25-V1.2.2.md b/content/changelog/es/2024-01-25-V1.2.2.md deleted file mode 100644 index 9748c8ffc..000000000 --- a/content/changelog/es/2024-01-25-V1.2.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.2.2" -slug: v1-2-2 -date: 2024-01-25 -tags: [release] ---- - -# 🚀 Versión 1.2.2 - - - -25/01/2024 - -## Nuevas Funcionalidades - -- **Botón de Validación de Dominio:** Se ha agregado un botón "verificar validación" al drawer de dominio para facilitar la gestión de dominios. -- **Tabla de Log de Actividad:** Se ha creado una tabla de log de actividad. -- **Encriptación de Access Keys:** Las access keys para proveedores de versión de código (GIT) ahora están encriptadas. - -## Correcciones de Errores - -- Se ha corregido un problema donde la API no recreaba correctamente el módulo ACM durante la regeneración. diff --git a/content/changelog/es/2024-01-25-version-1.2.2.md b/content/changelog/es/2024-01-25-version-1.2.2.md new file mode 100644 index 000000000..89a850fd6 --- /dev/null +++ b/content/changelog/es/2024-01-25-version-1.2.2.md @@ -0,0 +1,28 @@ +--- +title: Versión 1.2.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 25/01/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Botón de Validación de Dominio** +Se ha agregado un botón "verificar validación" al drawer de dominio para facilitar la gestión de dominios. +- **Tabla de Log de Actividad** +Se ha creado una tabla de log de actividad. +- **Encriptación de Access Keys** +Las access keys para proveedores de versión de código (GIT) ahora están encriptadas. + +--- + +## 🐛 Correcciones + +- Se ha corregido un problema donde la API no recreaba correctamente el módulo ACM durante la regeneración. + +--- diff --git a/content/changelog/es/2024-02-05-V1.2.3.md b/content/changelog/es/2024-02-05-V1.2.3.md deleted file mode 100644 index d1c273e01..000000000 --- a/content/changelog/es/2024-02-05-V1.2.3.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Versión 1.2.3" -slug: v1-2-3 -date: 2024-02-05 -tags: [release] ---- - -# 🚀 Versión 1.2.3 - - - -05/02/2024 - -## Nuevas Funcionalidades - -- **Desacoplamiento de Alias en Web Services:** La creación de aliases ahora está separada del formulario de web services. -- **Restablecimiento de Contraseña IAM:** Ahora es posible restablecer la contraseña IAM para un usuario. - -## Correcciones de Errores - -- Se ha corregido un problema menor con tareas de release. diff --git a/content/changelog/es/2024-02-05-version-1.2.3.md b/content/changelog/es/2024-02-05-version-1.2.3.md new file mode 100644 index 000000000..9dbf56d13 --- /dev/null +++ b/content/changelog/es/2024-02-05-version-1.2.3.md @@ -0,0 +1,26 @@ +--- +title: Versión 1.2.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/02/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Desacoplamiento de Alias en Web Services** +La creación de aliases ahora está separada del formulario de web services. +- **Restablecimiento de Contraseña IAM** +Ahora es posible restablecer la contraseña IAM para un usuario. + +--- + +## 🐛 Correcciones + +- Se ha corregido un problema menor con tareas de release. + +--- diff --git a/content/changelog/es/2024-02-15-V1.2.4.md b/content/changelog/es/2024-02-15-V1.2.4.md deleted file mode 100644 index 2c1afa0d2..000000000 --- a/content/changelog/es/2024-02-15-V1.2.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.2.4" -slug: v1-2-4 -date: 2024-02-15 -tags: [release] ---- - -# 🚀 Versión 1.2.4 - - - - -15/02/2024 - -## Nuevas Funcionalidades - -- **Optimización de Cluster Switcher:** El comportamiento del selector de cluster ha sido optimizado. -- **Login en Flujo de Suscripción AWS:** El flujo de suscripción AWS ahora incluye la capacidad de iniciar sesión directamente. - -## Correcciones de Errores - -- Se han resuelto problemas de callback para integraciones Git y ruta de archivo Docker para GitLab. -- Se han corregido bugs menores relacionados con la pantalla de facturación. diff --git a/content/changelog/es/2024-02-15-version-1.2.4.md b/content/changelog/es/2024-02-15-version-1.2.4.md new file mode 100644 index 000000000..9f143687d --- /dev/null +++ b/content/changelog/es/2024-02-15-version-1.2.4.md @@ -0,0 +1,27 @@ +--- +title: Versión 1.2.4 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 15/02/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Optimización de Cluster Switcher** +El comportamiento del selector de cluster ha sido optimizado. +- **Login en Flujo de Suscripción AWS** +El flujo de suscripción AWS ahora incluye la capacidad de iniciar sesión directamente. + +--- + +## 🐛 Correcciones + +- Se han resuelto problemas de callback para integraciones Git y ruta de archivo Docker para GitLab. +- Se han corregido bugs menores relacionados con la pantalla de facturación. + +--- diff --git a/content/changelog/es/2024-03-01-V1.3.0.md b/content/changelog/es/2024-03-01-V1.3.0.md deleted file mode 100644 index e78dc8d2f..000000000 --- a/content/changelog/es/2024-03-01-V1.3.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Versión 1.3.0" -slug: v1-3-0 -date: 2024-03-01 -tags: [release] ---- - -# 🚀 Versión 1.3.0 - - - -01/03/2024 - -## Nuevas Funcionalidades - -- **Vista de Detalles de Project:** Una vista detallada de proyecto ahora está disponible en la nueva interfaz. -- **API de Métricas RDS:** Se ha agregado una nueva API para mostrar métricas RDS, mejorando la visibilidad de recursos. -- **LogViewer Mejorado:** La carga de LogViewer ahora es más rápida y eficiente. -- **Onboarding Mejorado:** Se ha implementado un nuevo proceso de onboarding para facilitar la configuración. -- **Monitoreo de Redis:** Se ha agregado monitoreo de Redis, mejorando la supervisión de infraestructura. -- **Configuración de Réplica RDS:** Se ha agregado la opción de configurar réplicas en la Dependency RDS para mayor flexibilidad. -- **Estado de Eliminación de Dominio:** La eliminación de dominio ahora crea un deploy con estado `pending-approval`, en lugar de un deploy automático. -- **Mejoras en Workload de Job:** El workload de Job ha sido mejorado, permitiendo reintentos automáticos en caso de fallo inicial. - -## Correcciones de Errores - -- Se han resuelto problemas de integración con Bitbucket. -- Se han corregido problemas con valores indefinidos en Vargroups. diff --git a/content/changelog/es/2024-03-01-version-1.3.0.md b/content/changelog/es/2024-03-01-version-1.3.0.md new file mode 100644 index 000000000..d45af96af --- /dev/null +++ b/content/changelog/es/2024-03-01-version-1.3.0.md @@ -0,0 +1,39 @@ +--- +title: Versión 1.3.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 01/03/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Vista de Detalles de Project** +Una vista detallada de proyecto ahora está disponible en la nueva interfaz. +- **API de Métricas RDS** +Se ha agregado una nueva API para mostrar métricas RDS, mejorando la visibilidad de recursos. +- **LogViewer Mejorado** +La carga de LogViewer ahora es más rápida y eficiente. +- **Onboarding Mejorado** +Se ha implementado un nuevo proceso de onboarding para facilitar la configuración. +- **Monitoreo de Redis** +Se ha agregado monitoreo de Redis, mejorando la supervisión de infraestructura. +- **Configuración de Réplica RDS** +Se ha agregado la opción de configurar réplicas en la Dependency RDS para mayor flexibilidad. +- **Estado de Eliminación de Dominio** +La eliminación de dominio ahora crea un deploy con estado `pending-approval`, en lugar de un deploy automático. +- **Mejoras en Workload de Job** +El workload de Job ha sido mejorado, permitiendo reintentos automáticos en caso de fallo inicial. + +--- + +## 🐛 Correcciones + +- Se han resuelto problemas de integración con Bitbucket. +- Se han corregido problemas con valores indefinidos en Vargroups. + +--- diff --git a/content/changelog/es/2024-03-06-V1.4.0.md b/content/changelog/es/2024-03-06-V1.4.0.md deleted file mode 100644 index 3b7a9748f..000000000 --- a/content/changelog/es/2024-03-06-V1.4.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.4.0" -slug: v1-4-0 -date: 2024-03-06 -tags: [release] ---- - -# 🚀 Versión 1.4.0 - - - - -06/03/2024 - -## Nuevas Funcionalidades - -- **Configuración de Grafana:** Se configuró la base de datos para el addon de Grafana, junto con DataSources y Dashboards. -- **Persistencia de Métricas de Prometheus con Thanos:** Agregado soporte para persistir métricas de Prometheus usando Thanos. -- **Nueva API de Volumen:** Implementado soporte para la nueva API de volumen, mostrando estados y aplicando configuración para deployments. -- La opción de actualización en addons ha sido deshabilitada. -- Ahora, cuando se elimina una dependency, se creará un deploy con "pending-approval" en lugar de uno automático. - -## Correcciones de Errores - -- Corregido un problema donde pre-hooks y nuevos volúmenes se agregaban durante deploys, impidiendo que se generaran. -- Los subdominios ahora se marcan correctamente como delegados si los dominios padre ya están delegados. diff --git a/content/changelog/es/2024-03-06-version-1.4.0.md b/content/changelog/es/2024-03-06-version-1.4.0.md new file mode 100644 index 000000000..d4768ac92 --- /dev/null +++ b/content/changelog/es/2024-03-06-version-1.4.0.md @@ -0,0 +1,31 @@ +--- +title: Versión 1.4.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 06/03/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Configuración de Grafana** +Se configuró la base de datos para el addon de Grafana, junto con DataSources y Dashboards. +- **Persistencia de Métricas de Prometheus con Thanos** +Agregado soporte para persistir métricas de Prometheus usando Thanos. +- **Nueva API de Volumen** +Implementado soporte para la nueva API de volumen, mostrando estados y aplicando configuración para deployments. +- La opción de actualización en addons ha sido deshabilitada. +- Ahora, cuando se elimina una dependency, se creará un deploy con "pending-approval" en lugar de uno automático. + +--- + +## 🐛 Correcciones + +- Corregido un problema donde pre-hooks y nuevos volúmenes se agregaban durante deploys, impidiendo que se generaran. +- Los subdominios ahora se marcan correctamente como delegados si los dominios padre ya están delegados. + +--- diff --git a/content/changelog/es/2024-04-11-V1.4.1.md b/content/changelog/es/2024-04-11-V1.4.1.md deleted file mode 100644 index adc6db7c6..000000000 --- a/content/changelog/es/2024-04-11-V1.4.1.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.4.1" -slug: v1-4-1 -date: 2024-04-11 -tags: [release] ---- - -# 🚀 Versión 1.4.1 - - - - -11/04/2024 - -## Nuevas Funcionalidades - -- **Monitoreo de Dependencies y OpenSearch:** Se creó una nueva página de monitoreo para dependencies, facilitando el seguimiento de su estado. OpenSearch fue incluido. -- **Política de Ciclo de Vida de ECR:** Se configuró una política de ciclo de vida para ECR, mejorando la gestión de imágenes. - -## Correcciones de Errores - -- Corregido el problema de nombres duplicados entre cluster y nodo en Redis. -- Resueltos varios errores de frontend que afectaban la experiencia del usuario. -- Corregido el problema donde se mostraba un error al intentar publicar un vargroup sin un servicio asociado. -- Se corrigieron problemas al realizar múltiples deployments y releases consecutivos. diff --git a/content/changelog/es/2024-04-11-version-1.4.1.md b/content/changelog/es/2024-04-11-version-1.4.1.md new file mode 100644 index 000000000..85607d63c --- /dev/null +++ b/content/changelog/es/2024-04-11-version-1.4.1.md @@ -0,0 +1,29 @@ +--- +title: Versión 1.4.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 11/04/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Monitoreo de Dependencies y OpenSearch** +Se creó una nueva página de monitoreo para dependencies, facilitando el seguimiento de su estado. OpenSearch fue incluido. +- **Política de Ciclo de Vida de ECR** +Se configuró una política de ciclo de vida para ECR, mejorando la gestión de imágenes. + +--- + +## 🐛 Correcciones + +- Corregido el problema de nombres duplicados entre cluster y nodo en Redis. +- Resueltos varios errores de frontend que afectaban la experiencia del usuario. +- Corregido el problema donde se mostraba un error al intentar publicar un vargroup sin un servicio asociado. +- Se corrigieron problemas al realizar múltiples deployments y releases consecutivos. + +--- diff --git a/content/changelog/es/2024-04-25-V1.4.2.md b/content/changelog/es/2024-04-25-V1.4.2.md deleted file mode 100644 index a5d8ddd43..000000000 --- a/content/changelog/es/2024-04-25-V1.4.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.4.2" -slug: v1-4-2 -date: 2024-04-25 -tags: [release] ---- - -# 🚀 Versión 1.4.2 - - - - -25/04/2024 - -## Nuevas Funcionalidades - -- **Nuevas Métricas:** Agregadas nuevas métricas para buckets S3 y RabbitMQ, mejorando el monitoreo de servicios. También se implementó un sistema de monitoreo de métricas de OpenSearch. -- **Reorganización de Esquema de Monitoreo:** Las estructuras de esquema de monitoreo fueron reorganizadas para mejor gestión y visualización. La pantalla de monitoreo de Dependencies ahora soporta diferentes tipos de recursos, proporcionando una vista más detallada. - -## Correcciones de Errores - -- Se ha resuelto un problema crítico con vargroups, asegurando su funcionamiento adecuado. diff --git a/content/changelog/es/2024-04-25-version-1.4.2.md b/content/changelog/es/2024-04-25-version-1.4.2.md new file mode 100644 index 000000000..3b009c561 --- /dev/null +++ b/content/changelog/es/2024-04-25-version-1.4.2.md @@ -0,0 +1,26 @@ +--- +title: Versión 1.4.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 25/04/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Nuevas Métricas** +Agregadas nuevas métricas para buckets S3 y RabbitMQ, mejorando el monitoreo de servicios. También se implementó un sistema de monitoreo de métricas de OpenSearch. +- **Reorganización de Esquema de Monitoreo** +Las estructuras de esquema de monitoreo fueron reorganizadas para mejor gestión y visualización. La pantalla de monitoreo de Dependencies ahora soporta diferentes tipos de recursos, proporcionando una vista más detallada. + +--- + +## 🐛 Correcciones + +- Se ha resuelto un problema crítico con vargroups, asegurando su funcionamiento adecuado. + +--- diff --git a/content/changelog/es/2024-05-13-V1.4.3.md b/content/changelog/es/2024-05-13-V1.4.3.md deleted file mode 100644 index 1cb453149..000000000 --- a/content/changelog/es/2024-05-13-V1.4.3.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.4.3" -slug: v1-4-3 -date: 2024-05-13 -tags: [release] ---- - -# 🚀 Versión 1.4.3 - - - - -13/05/2024 - -## Nuevas Funcionalidades - -- **Mejoras en Gestión de Dashboard:** Se mejoró la carga del dashboard, permitiendo que se visualice incluso si no hay cuenta seleccionada. -- **Mejoras en Pantallas de Facturación y Project:** Se realizaron mejoras en la pantalla de facturación, incluyendo una nueva sección "otros" para contabilizar costos previamente no considerados. La pantalla de environment de proyecto también fue mejorada. -- **Actualizaciones de Políticas:** La política de CloudFormation ha sido actualizada para mejorar gestión y seguridad. - -## Correcciones de Errores - -- Corregido un error crítico que impedía la creación de providers. -- Revisado y resuelto un problema relacionado con la integración de NewRelic. -- Corregido un problema con el refresh token al solicitar el URI de VPN. -- **Pantalla de Validación ACM y Errores de Logs de Builds:** Correcciones realizadas en la tabla de validación ACM y visualización de logs para builds en estado de creación. diff --git a/content/changelog/es/2024-05-13-version-1.4.3.md b/content/changelog/es/2024-05-13-version-1.4.3.md new file mode 100644 index 000000000..2d6f645db --- /dev/null +++ b/content/changelog/es/2024-05-13-version-1.4.3.md @@ -0,0 +1,32 @@ +--- +title: Versión 1.4.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 13/05/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Mejoras en Gestión de Dashboard** +Se mejoró la carga del dashboard, permitiendo que se visualice incluso si no hay cuenta seleccionada. +- **Mejoras en Pantallas de Facturación y Project** +Se realizaron mejoras en la pantalla de facturación, incluyendo una nueva sección "otros" para contabilizar costos previamente no considerados. La pantalla de environment de proyecto también fue mejorada. +- **Actualizaciones de Políticas** +La política de CloudFormation ha sido actualizada para mejorar gestión y seguridad. + +--- + +## 🐛 Correcciones + +- Corregido un error crítico que impedía la creación de providers. +- Revisado y resuelto un problema relacionado con la integración de NewRelic. +- Corregido un problema con el refresh token al solicitar el URI de VPN. +- **Pantalla de Validación ACM y Errores de Logs de Builds** +Correcciones realizadas en la tabla de validación ACM y visualización de logs para builds en estado de creación. + +--- diff --git a/content/changelog/es/2024-05-23-V1.5.0.md b/content/changelog/es/2024-05-23-V1.5.0.md deleted file mode 100644 index 50fdbfc4c..000000000 --- a/content/changelog/es/2024-05-23-V1.5.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Versión 1.5.0" -slug: v1-5-0 -date: 2024-05-23 -tags: [release] ---- - -# 🚀 Versión 1.5.0 - - - - -23/05/2024 - -## Nuevas Funcionalidades - -- **Creación de Múltiples Environments de Project:** Ahora puedes crear múltiples environments de proyecto usando el mismo repositorio y rama. -- **Validación de Dominio para Aliases:** Mejorada la validación de creación de dominio para aliases usando un ACM existente utilizable para ingress. -- **Configuración de Recursos en Project Env:** Agregada la capacidad de configurar recursos de build y deploy por environment de proyecto. -- **Configuración de Request de Deploy y Build:** Agregada la opción de configurar requests de deploy y build en un ProjectEnv. -- **Dashboard de Grafana:** Se incorporó un dashboard de Grafana para visualizar consumo por namespace. -- **Configuración de Loki:** Los logs ahora pueden buscarse por namespace con la nueva configuración de Loki. -- **Recolección de Datos:** Mejorado el script de recolección de facturación para ser idempotente y ejecutable para fechas específicas. - -## Correcciones de Errores - -- Corregido un error al crear dependencies S3 y resuelto un problema crítico con vargroups durante actualizaciones de apagado de cluster. -- Corregido un error crítico al invitar colaboradores. diff --git a/content/changelog/es/2024-05-23-version-1.5.0.md b/content/changelog/es/2024-05-23-version-1.5.0.md new file mode 100644 index 000000000..1abccf9d7 --- /dev/null +++ b/content/changelog/es/2024-05-23-version-1.5.0.md @@ -0,0 +1,37 @@ +--- +title: Versión 1.5.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 23/05/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Creación de Múltiples Environments de Project** +Ahora puedes crear múltiples environments de proyecto usando el mismo repositorio y rama. +- **Validación de Dominio para Aliases** +Mejorada la validación de creación de dominio para aliases usando un ACM existente utilizable para ingress. +- **Configuración de Recursos en Project Env** +Agregada la capacidad de configurar recursos de build y deploy por environment de proyecto. +- **Configuración de Request de Deploy y Build** +Agregada la opción de configurar requests de deploy y build en un ProjectEnv. +- **Dashboard de Grafana** +Se incorporó un dashboard de Grafana para visualizar consumo por namespace. +- **Configuración de Loki** +Los logs ahora pueden buscarse por namespace con la nueva configuración de Loki. +- **Recolección de Datos** +Mejorado el script de recolección de facturación para ser idempotente y ejecutable para fechas específicas. + +--- + +## 🐛 Correcciones + +- Corregido un error al crear dependencies S3 y resuelto un problema crítico con vargroups durante actualizaciones de apagado de cluster. +- Corregido un error crítico al invitar colaboradores. + +--- diff --git a/content/changelog/es/2024-06-24-V1.5.1.md b/content/changelog/es/2024-06-24-V1.5.1.md deleted file mode 100644 index 99fdb5ad6..000000000 --- a/content/changelog/es/2024-06-24-V1.5.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.5.1" -slug: v1-5-1 -date: 2024-06-24 -tags: [release] ---- - -# 🚀 Versión 1.5.1 - - - - -24/06/2024 - -## Nuevas Funcionalidades - -- **Configuración Avanzada de Recursos:** Se han implementado opciones avanzadas para configuración de recursos en environments de proyecto. -- **Optimización de Scripts de Recolección de Datos:** Mejorada la eficiencia de scripts de recolección de datos para workload más rápido. - -## Correcciones de Errores - -- Se han resuelto varios errores de interfaz que afectaban la usabilidad del sistema. diff --git a/content/changelog/es/2024-06-24-version-1.5.1.md b/content/changelog/es/2024-06-24-version-1.5.1.md new file mode 100644 index 000000000..40a880b03 --- /dev/null +++ b/content/changelog/es/2024-06-24-version-1.5.1.md @@ -0,0 +1,26 @@ +--- +title: Versión 1.5.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 24/06/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Configuración Avanzada de Recursos** +Se han implementado opciones avanzadas para configuración de recursos en environments de proyecto. +- **Optimización de Scripts de Recolección de Datos** +Mejorada la eficiencia de scripts de recolección de datos para workload más rápido. + +--- + +## 🐛 Correcciones + +- Se han resuelto varios errores de interfaz que afectaban la usabilidad del sistema. + +--- diff --git a/content/changelog/es/2024-08-12-V1.6.0.md b/content/changelog/es/2024-08-12-V1.6.0.md deleted file mode 100644 index 12c0663b9..000000000 --- a/content/changelog/es/2024-08-12-V1.6.0.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Versión 1.6.0" -slug: v1-6-0 -date: 2024-08-12 -tags: [release] ---- - -# 🚀 Versión 1.6.0 - - - - -12/08/2024 - -## Nuevas Funcionalidades - -- **Soporte para Instancias ARM y Versiones Adicionales de RDS:** Agregadas instancias ARM y versiones extra en RDS. -- **EKS Actualizado a Versión 1.29:** EKS ha sido actualizado a la versión 1.29. Los changelogs de actualizaciones de EKS ahora se muestran. -- **Mejoras en Creación y Edición de Provider:** Pantallas y campos para formularios de provider fueron actualizados, incluyendo cambios en estados y visualización. -- **Búsqueda de Repositorio Mejorada:** Agregado soporte para búsqueda asíncrona en el selector de repositorio y mejorada la función de búsqueda para GitHub, GitLab y Bitbucket. -- **Parametrización de Healthcheck:** Las propiedades de healthcheck ahora pueden parametrizarse con JSONSchema. -- **Nuevo Dashboard:** Se ha agregado un nuevo dashboard para ver consumo por namespace. -- Corrección de un error al regenerar certificados, así como problemas con builds que no se ejecutaban correctamente. -- Errores de frontend relacionados con listados y problemas de API que causaban errores de filtrado han sido corregidos. - -## Correcciones de Errores - -- Corregido un error al regenerar certificados, así como problemas con builds que no se ejecutaban correctamente. -- Errores de frontend relacionados con listados y problemas de API que causaban errores de filtrado han sido corregidos. diff --git a/content/changelog/es/2024-08-12-version-1.6.0.md b/content/changelog/es/2024-08-12-version-1.6.0.md new file mode 100644 index 000000000..66838fbbe --- /dev/null +++ b/content/changelog/es/2024-08-12-version-1.6.0.md @@ -0,0 +1,37 @@ +--- +title: Versión 1.6.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 12/08/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Soporte para Instancias ARM y Versiones Adicionales de RDS** +Agregadas instancias ARM y versiones extra en RDS. +- **EKS Actualizado a Versión 1.29** +EKS ha sido actualizado a la versión 1.29. Los changelogs de actualizaciones de EKS ahora se muestran. +- **Mejoras en Creación y Edición de Provider** +Pantallas y campos para formularios de provider fueron actualizados, incluyendo cambios en estados y visualización. +- **Búsqueda de Repositorio Mejorada** +Agregado soporte para búsqueda asíncrona en el selector de repositorio y mejorada la función de búsqueda para GitHub, GitLab y Bitbucket. +- **Parametrización de Healthcheck** +Las propiedades de healthcheck ahora pueden parametrizarse con JSONSchema. +- **Nuevo Dashboard** +Se ha agregado un nuevo dashboard para ver consumo por namespace. +- Corrección de un error al regenerar certificados, así como problemas con builds que no se ejecutaban correctamente. +- Errores de frontend relacionados con listados y problemas de API que causaban errores de filtrado han sido corregidos. + +--- + +## 🐛 Correcciones + +- Corregido un error al regenerar certificados, así como problemas con builds que no se ejecutaban correctamente. +- Errores de frontend relacionados con listados y problemas de API que causaban errores de filtrado han sido corregidos. + +--- diff --git a/content/changelog/es/2024-08-22-V1.6.1.md b/content/changelog/es/2024-08-22-V1.6.1.md deleted file mode 100644 index 9e2b879ea..000000000 --- a/content/changelog/es/2024-08-22-V1.6.1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.6.1" -slug: v1-6-1 -date: 2024-08-22 -tags: [release] ---- - -# 🚀 Versión 1.6.1 - - - - -22/08/2024 - -## Nuevas Funcionalidades - -- **Actualizaciones de Versión de Dependencies:** Actualizadas versiones de dependencies MQ, Elasticsearch, Memcache y Redis. -- **Mejoras en Autenticación:** Agregado soporte para almacenar tokens de autenticación vía cookies en lugar de almacenamiento local. -- Agregada impresión de registro de validación ACM en la pantalla de detalle de ACM, y el estado de ACM ahora está incluido en el sistema. - -## Correcciones de Errores - -- Se han resuelto problemas con el flujo de provider. diff --git a/content/changelog/es/2024-08-22-version-1.6.1.md b/content/changelog/es/2024-08-22-version-1.6.1.md new file mode 100644 index 000000000..9c15c9425 --- /dev/null +++ b/content/changelog/es/2024-08-22-version-1.6.1.md @@ -0,0 +1,27 @@ +--- +title: Versión 1.6.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 22/08/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Actualizaciones de Versión de Dependencies** +Actualizadas versiones de dependencies MQ, Elasticsearch, Memcache y Redis. +- **Mejoras en Autenticación** +Agregado soporte para almacenar tokens de autenticación vía cookies en lugar de almacenamiento local. +- Agregada impresión de registro de validación ACM en la pantalla de detalle de ACM, y el estado de ACM ahora está incluido en el sistema. + +--- + +## 🐛 Correcciones + +- Se han resuelto problemas con el flujo de provider. + +--- diff --git a/content/changelog/es/2024-09-19-V1.6.2.md b/content/changelog/es/2024-09-19-V1.6.2.md deleted file mode 100644 index eb09dc8d9..000000000 --- a/content/changelog/es/2024-09-19-V1.6.2.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.6.2" -slug: v1-6-2 -date: 2024-09-19 -tags: [release] ---- - -# 🚀 Versión 1.6.2 - - - - -19/09/2024 - -## Nuevas Funcionalidades - -- **Actualizaciones:** Actualizado **Prometheus**, **Loki**, y **EBS CSI Driver** a las últimas versiones a partir de agosto de 2024. -- **Migración de EBS CSI Driver:** SleakOps ahora usa el Addon EKS gestionado por AWS para el EBS CSI Driver, reemplazando la versión auto-gestionada. -- **Prometheus y Loki con EBS:** Prometheus ahora utiliza volúmenes EBS para persistencia de datos, previniendo pérdida de datos incluso si los pods fallan. -- **Loki con SimpleScalable:** Adopta una estructura **SimpleScalable** con almacenamiento **TSDB** para logs, mejorando el rendimiento. -- **Colas Dead-letter de SQS:** Ahora soporta la creación de **colas SQS** con colas dead-letter asociadas para mejor manejo de errores. - -## Correcciones de Errores - -- Varias correcciones menores de errores y mejoras en los flujos de workload de la plataforma. diff --git a/content/changelog/es/2024-09-19-version-1.6.2.md b/content/changelog/es/2024-09-19-version-1.6.2.md new file mode 100644 index 000000000..e10b4643c --- /dev/null +++ b/content/changelog/es/2024-09-19-version-1.6.2.md @@ -0,0 +1,32 @@ +--- +title: Versión 1.6.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 19/09/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Actualizaciones** +Actualizado **Prometheus**, **Loki**, y **EBS CSI Driver** a las últimas versiones a partir de agosto de 2024. +- **Migración de EBS CSI Driver** +SleakOps ahora usa el Addon EKS gestionado por AWS para el EBS CSI Driver, reemplazando la versión auto-gestionada. +- **Prometheus y Loki con EBS** +Prometheus ahora utiliza volúmenes EBS para persistencia de datos, previniendo pérdida de datos incluso si los pods fallan. +- **Loki con SimpleScalable** +Adopta una estructura **SimpleScalable** con almacenamiento **TSDB** para logs, mejorando el rendimiento. +- **Colas Dead-letter de SQS** +Ahora soporta la creación de **colas SQS** con colas dead-letter asociadas para mejor manejo de errores. + +--- + +## 🐛 Correcciones + +- Varias correcciones menores de errores y mejoras en los flujos de workload de la plataforma. + +--- diff --git a/content/changelog/es/2024-09-27-V1.6.3.md b/content/changelog/es/2024-09-27-V1.6.3.md deleted file mode 100644 index 0b1175478..000000000 --- a/content/changelog/es/2024-09-27-V1.6.3.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Versión 1.6.3" -slug: v1-6-3 -date: 2024-09-27 -tags: [release] ---- - -# 🚀 Versión 1.6.3 - - - - -27/09/2024 - -## Nuevas Funcionalidades - -- **Registro:** Implementado un nuevo flujo de registro. - -## Correcciones de Errores - -- Varias correcciones menores de errores y mejoras. diff --git a/content/changelog/es/2024-09-27-version-1.6.3.md b/content/changelog/es/2024-09-27-version-1.6.3.md new file mode 100644 index 000000000..3dd55c8ec --- /dev/null +++ b/content/changelog/es/2024-09-27-version-1.6.3.md @@ -0,0 +1,24 @@ +--- +title: Versión 1.6.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 27/09/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Registro** +Implementado un nuevo flujo de registro. + +--- + +## 🐛 Correcciones + +- Varias correcciones menores de errores y mejoras. + +--- diff --git a/content/changelog/es/2024-10-14-V1.7.0.md b/content/changelog/es/2024-10-14-V1.7.0.md deleted file mode 100644 index b4c97aa18..000000000 --- a/content/changelog/es/2024-10-14-V1.7.0.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Versión 1.7.0" -slug: v1-7-0 -date: 2024-10-14 -tags: [release] ---- - -# 🚀 Versión 1.7.0 - - - - -14/10/2024 - -## Nuevas Funcionalidades - -- **Gestión Avanzada de Nodos:** Introducida gestión de node pools para proporcionar mayor control sobre los tipos de nodos donde se ejecutan los workloads. -- **Migración de Módulos de Cluster:** Todos los módulos creados con el cluster ahora se ejecutan en instancias Graviton, mejorando el rendimiento y reduciendo costos. -- **Add-ons de Cluster:** Todos los add-ons ahora se ejecutan en instancias Graviton, mejorando aún más el rendimiento y reduciendo costos. -- **Nodos de Build Aislados:** Los builds ahora se ejecutan en nodos dedicados separados de los nodos de aplicación, mejorando la estabilidad de los nodos que ejecutan aplicaciones. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/content/changelog/es/2024-10-14-version-1.7.0.md b/content/changelog/es/2024-10-14-version-1.7.0.md new file mode 100644 index 000000000..a6e51f3ce --- /dev/null +++ b/content/changelog/es/2024-10-14-version-1.7.0.md @@ -0,0 +1,30 @@ +--- +title: Versión 1.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 14/10/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Gestión Avanzada de Nodos** +Introducida gestión de node pools para proporcionar mayor control sobre los tipos de nodos donde se ejecutan los workloads. +- **Migración de Módulos de Cluster** +Todos los módulos creados con el cluster ahora se ejecutan en instancias Graviton, mejorando el rendimiento y reduciendo costos. +- **Add-ons de Cluster** +Todos los add-ons ahora se ejecutan en instancias Graviton, mejorando aún más el rendimiento y reduciendo costos. +- **Nodos de Build Aislados** +Los builds ahora se ejecutan en nodos dedicados separados de los nodos de aplicación, mejorando la estabilidad de los nodos que ejecutan aplicaciones. + +--- + +## 🐛 Correcciones + +- Varias correcciones menores de errores. + +--- diff --git a/content/changelog/es/2024-10-30-V1.7.1.md b/content/changelog/es/2024-10-30-V1.7.1.md deleted file mode 100644 index 929a2d4b1..000000000 --- a/content/changelog/es/2024-10-30-V1.7.1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.1" -slug: v1-7-1 -date: 2024-10-30 -tags: [release] ---- - -# 🚀 Versión 1.7.1 - - - - -30/10/2024 - -## Nuevas Funcionalidades - -- **Creación de Environment y Dominio:** Mejorado el proceso para crear environments y dominios. Ahora puedes usar un dominio diferente al configurado globalmente sin limitaciones. -- **Notificaciones:** Agregado un sistema de notificaciones para informar a los usuarios sobre acciones manuales pendientes y actualizaciones de infraestructura programadas. -- **Documentación:** Actualizada documentación sobre gestión de dominios, proyectos, dependencies y variables de entorno. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/content/changelog/es/2024-10-30-version-1.7.1.md b/content/changelog/es/2024-10-30-version-1.7.1.md new file mode 100644 index 000000000..779df5ae3 --- /dev/null +++ b/content/changelog/es/2024-10-30-version-1.7.1.md @@ -0,0 +1,28 @@ +--- +title: Versión 1.7.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 30/10/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Creación de Environment y Dominio** +Mejorado el proceso para crear environments y dominios. Ahora puedes usar un dominio diferente al configurado globalmente sin limitaciones. +- **Notificaciones** +Agregado un sistema de notificaciones para informar a los usuarios sobre acciones manuales pendientes y actualizaciones de infraestructura programadas. +- **Documentación** +Actualizada documentación sobre gestión de dominios, proyectos, dependencies y variables de entorno. + +--- + +## 🐛 Correcciones + +- Varias correcciones menores de errores. + +--- diff --git a/content/changelog/es/2024-11-05-V1.7.2.md b/content/changelog/es/2024-11-05-V1.7.2.md deleted file mode 100644 index 21d24c5af..000000000 --- a/content/changelog/es/2024-11-05-V1.7.2.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.2" -slug: v1-7-2 -date: 2024-11-05 -tags: [release] ---- - -# 🚀 Versión 1.7.2 - - - -05/11/2024 - -## Nuevas Funcionalidades - -- **Eliminación de Bucket S3:** Introducida la capacidad de eliminar buckets S3 que contienen una gran cantidad de archivos. -- **VPN:** Actualizado el módulo Pritunl a la última versión para mayor seguridad y rendimiento. -- **Mejoras en Gestión de Suscripciones:** Mejorada la gestión de suscripciones para una mejor experiencia de usuario. -- **Registro de Usuarios:** Habilitado el registro de nuevos usuarios en la plataforma. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/content/changelog/es/2024-11-05-version-1.7.2.md b/content/changelog/es/2024-11-05-version-1.7.2.md new file mode 100644 index 000000000..5e76a6be8 --- /dev/null +++ b/content/changelog/es/2024-11-05-version-1.7.2.md @@ -0,0 +1,30 @@ +--- +title: Versión 1.7.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/11/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Eliminación de Bucket S3** +Introducida la capacidad de eliminar buckets S3 que contienen una gran cantidad de archivos. +- **VPN** +Actualizado el módulo Pritunl a la última versión para mayor seguridad y rendimiento. +- **Mejoras en Gestión de Suscripciones** +Mejorada la gestión de suscripciones para una mejor experiencia de usuario. +- **Registro de Usuarios** +Habilitado el registro de nuevos usuarios en la plataforma. + +--- + +## 🐛 Correcciones + +- Varias correcciones menores de errores. + +--- diff --git a/content/changelog/es/2024-11-14-V1.7.3.md b/content/changelog/es/2024-11-14-V1.7.3.md deleted file mode 100644 index fca2a6d4b..000000000 --- a/content/changelog/es/2024-11-14-V1.7.3.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.7.3" -slug: v1-7-3 -date: 2024-11-14 -tags: [release] ---- - -# 🚀 Versión 1.7.3 - - - - -14/11/2024 - -## Nuevas Funcionalidades - -- **Soporte para Oracle RDS (Beta):** Ahora puedes gestionar instancias Oracle RDS como dependencies dentro de SleakOps. -- **Soporte para Aurora PostgreSQL Serverless (Beta):** Agregada la capacidad de crear y gestionar bases de datos Aurora PostgreSQL Serverless. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/content/changelog/es/2024-11-14-version-1.7.3.md b/content/changelog/es/2024-11-14-version-1.7.3.md new file mode 100644 index 000000000..d1cacb695 --- /dev/null +++ b/content/changelog/es/2024-11-14-version-1.7.3.md @@ -0,0 +1,26 @@ +--- +title: Versión 1.7.3 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 14/11/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Soporte para Oracle RDS (Beta)** +Ahora puedes gestionar instancias Oracle RDS como dependencies dentro de SleakOps. +- **Soporte para Aurora PostgreSQL Serverless (Beta)** +Agregada la capacidad de crear y gestionar bases de datos Aurora PostgreSQL Serverless. + +--- + +## 🐛 Correcciones + +- Varias correcciones menores de errores. + +--- diff --git a/content/changelog/es/2024-12-05-V1.7.4.md b/content/changelog/es/2024-12-05-V1.7.4.md deleted file mode 100644 index 036f7575e..000000000 --- a/content/changelog/es/2024-12-05-V1.7.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.4" -slug: v1-7-4 -date: 2024-12-05 -tags: [release] ---- - -# 🚀 Versión 1.7.4 - - - -05/12/2024 - -## Nuevas Funcionalidades - -- **Accesibilidad de Add-on:** Agregados enlaces en SleakOps para fácil acceso a visualizar logs, APM o métricas para recursos específicos. -- **OpenTelemetry (Beta):** Introducido un add-on para mejorar la observabilidad en aplicaciones desplegadas con SleakOps. Con OpenTelemetry, puedes tener tu propio APM para monitorear métricas como tasa de solicitudes, latencia y tasa de errores de tu aplicación. -- **Configuraciones de Disponibilidad de Add-on:** Agregadas varias configuraciones de disponibilidad para cada add-on. -- **Documentación:** Actualizada la documentación de add-ons y disponible en español. - -## Correcciones de Errores - -- **Revisión de Integración Kubecost:** Revisada la integración Prometheus-Kubecost. Kubecost ahora mapea correctamente los nombres de recursos desplegados a sus costos, mejorando enormemente la precisión de sus estimaciones. Ahora es posible habilitar análisis aproximado de costos de tráfico de red dentro del cluster en Kubecost (Beta). diff --git a/content/changelog/es/2024-12-05-version-1.7.4.md b/content/changelog/es/2024-12-05-version-1.7.4.md new file mode 100644 index 000000000..36041e369 --- /dev/null +++ b/content/changelog/es/2024-12-05-version-1.7.4.md @@ -0,0 +1,31 @@ +--- +title: Versión 1.7.4 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/12/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Accesibilidad de Add-on** +Agregados enlaces en SleakOps para fácil acceso a visualizar logs, APM o métricas para recursos específicos. +- **OpenTelemetry (Beta)** +Introducido un add-on para mejorar la observabilidad en aplicaciones desplegadas con SleakOps. Con OpenTelemetry, puedes tener tu propio APM para monitorear métricas como tasa de solicitudes, latencia y tasa de errores de tu aplicación. +- **Configuraciones de Disponibilidad de Add-on** +Agregadas varias configuraciones de disponibilidad para cada add-on. +- **Documentación** +Actualizada la documentación de add-ons y disponible en español. + +--- + +## 🐛 Correcciones + +- **Revisión de Integración Kubecost** +Revisada la integración Prometheus-Kubecost. Kubecost ahora mapea correctamente los nombres de recursos desplegados a sus costos, mejorando enormemente la precisión de sus estimaciones. Ahora es posible habilitar análisis aproximado de costos de tráfico de red dentro del cluster en Kubecost (Beta). + +--- diff --git a/content/changelog/es/2024-12-09-V1.7.5.md b/content/changelog/es/2024-12-09-V1.7.5.md deleted file mode 100644 index 439b534f7..000000000 --- a/content/changelog/es/2024-12-09-V1.7.5.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Versión 1.7.5" -slug: v1-7-5 -date: 2024-12-09 -tags: [release] ---- - -# 🚀 Versión 1.7.5 - - - -09/12/2024 - -## Nuevas Funcionalidades - -- **Manejo de Errores de Integración AWS:**: Implementado un mecanismo para manejar retrasos en activaciones de cuentas AWS creadas por SleakOps. -- **Enlaces de Add-on en Builds:** Agregados enlaces para visualizar fácilmente logs y métricas durante el proceso de build. diff --git a/content/changelog/es/2024-12-09-version-1.7.5.md b/content/changelog/es/2024-12-09-version-1.7.5.md new file mode 100644 index 000000000..37d6824bf --- /dev/null +++ b/content/changelog/es/2024-12-09-version-1.7.5.md @@ -0,0 +1,20 @@ +--- +title: Versión 1.7.5 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 09/12/2024 + +--- + +## 🚀 Nuevas funcionalidades + +- **Manejo de Errores de Integración AWS** +Implementado un mecanismo para manejar retrasos en activaciones de cuentas AWS creadas por SleakOps. +- **Enlaces de Add-on en Builds** +Agregados enlaces para visualizar fácilmente logs y métricas durante el proceso de build. + +--- diff --git a/content/changelog/es/2025-01-06-V1.7.6.md b/content/changelog/es/2025-01-06-V1.7.6.md deleted file mode 100644 index 619978543..000000000 --- a/content/changelog/es/2025-01-06-V1.7.6.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.7.6" -slug: v1-7-6 -date: 2025-01-06 -tags: [release] ---- - -# 🚀 Versión 1.7.6 - - - -06/01/2025 - -## Nuevas Funcionalidades - -- **Nuevas Configuraciones de Nodepool**: Ahora puedes establecer parámetros adicionales, como tamaños mínimos de instancia y más. -- **Job con Imágenes Específicas**: Al crear un job, puedes especificar la imagen exacta y el tag que deseas ejecutar (ej: `postgres:16.4`). -- **(BETA) Extensión de Chart por Project**: SleakOps ahora puede extender los charts usados para desplegar workloads de proyecto, permitiéndote agregar dependencies. Para más información, consulta la [documentación de Helm](https://helm.sh/docs/helm/helm_dependency/). -- **Mejoras en CI/CD**: El archivo para configurar CI/CD ha sido simplificado y optimizado. - -## Correcciones de Errores - -- **URL de Web Service Interna**: Corrección de un problema que causaba URLs incorrectas para web services de tipo "interno". -- **Eliminación de Volumen**: Resueltos problemas relacionados con la eliminación de volúmenes bajo varias políticas de retención. -- **Mejoras de UX/UI**: Mejoras en la interfaz para Projects, Volumes y Variable Groups. diff --git a/content/changelog/es/2025-01-06-version-1.7.6.md b/content/changelog/es/2025-01-06-version-1.7.6.md new file mode 100644 index 000000000..c55080c5f --- /dev/null +++ b/content/changelog/es/2025-01-06-version-1.7.6.md @@ -0,0 +1,35 @@ +--- +title: Versión 1.7.6 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 06/01/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Nuevas Configuraciones de Nodepool** +Ahora puedes establecer parámetros adicionales, como tamaños mínimos de instancia y más. +- **Job con Imágenes Específicas** +Al crear un job, puedes especificar la imagen exacta y el tag que deseas ejecutar (ej: `postgres:16.4`). +- **(BETA) Extensión de Chart por Project** +SleakOps ahora puede extender los charts usados para desplegar workloads de proyecto, permitiéndote agregar dependencies. Para más información, consulta la [documentación de Helm](https://helm.sh/docs/helm/helm_dependency/). +- **Mejoras en CI/CD** +El archivo para configurar CI/CD ha sido simplificado y optimizado. + +--- + +## 🐛 Correcciones + +- **URL de Web Service Interna** +Corrección de un problema que causaba URLs incorrectas para web services de tipo "interno". +- **Eliminación de Volumen** +Resueltos problemas relacionados con la eliminación de volúmenes bajo varias políticas de retención. +- **Mejoras de UX/UI** +Mejoras en la interfaz para Projects, Volumes y Variable Groups. + +--- diff --git a/content/changelog/es/2025-02-05-V1.7.7.md b/content/changelog/es/2025-02-05-V1.7.7.md deleted file mode 100644 index 07c29035f..000000000 --- a/content/changelog/es/2025-02-05-V1.7.7.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.7.7" -slug: v1-7-7 -date: 2025-02-05 -tags: [release] ---- - -# 🚀 Versión 1.7.7 - - - -05/02/2025 - -## Nuevas Funcionalidades - -- **Importación desde Buckets Externos:** Copiar rápidamente archivos desde un Bucket S3 externo a SleakOps mediante la nueva función Import Bucket. -- **Revisión de Vista de Project:** Ver logs e información clave en una sola pantalla para mejor visibilidad. -- **Executions Renombrados a Workloads:** Terminología actualizada para alinearse con la notación interna de cluster. -- **Optimización de Eliminación de Cluster:** Agregada validación adicional para un proceso de eliminación más seguro y estable. - -## Correcciones de Errores - -- **Permisos de Project para Jobs:** Corrección de un problema donde los Jobs usaban permisos de nodo de cluster en lugar de permisos de Project. -- **Modificación de Docker Args:** Los builds ahora aplican correctamente cualquier Docker Args cambiado justo antes de ejecutarse. -- **Generación de Perfil VPN:** Resuelto un problema que impedía que los perfiles de usuario de terceros se generaran exitosamente. diff --git a/content/changelog/es/2025-02-05-version-1.7.7.md b/content/changelog/es/2025-02-05-version-1.7.7.md new file mode 100644 index 000000000..36becfe2d --- /dev/null +++ b/content/changelog/es/2025-02-05-version-1.7.7.md @@ -0,0 +1,35 @@ +--- +title: Versión 1.7.7 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 05/02/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Importación desde Buckets Externos** +Copiar rápidamente archivos desde un Bucket S3 externo a SleakOps mediante la nueva función Import Bucket. +- **Revisión de Vista de Project** +Ver logs e información clave en una sola pantalla para mejor visibilidad. +- **Executions Renombrados a Workloads** +Terminología actualizada para alinearse con la notación interna de cluster. +- **Optimización de Eliminación de Cluster** +Agregada validación adicional para un proceso de eliminación más seguro y estable. + +--- + +## 🐛 Correcciones + +- **Permisos de Project para Jobs** +Corrección de un problema donde los Jobs usaban permisos de nodo de cluster en lugar de permisos de Project. +- **Modificación de Docker Args** +Los builds ahora aplican correctamente cualquier Docker Args cambiado justo antes de ejecutarse. +- **Generación de Perfil VPN** +Resuelto un problema que impedía que los perfiles de usuario de terceros se generaran exitosamente. + +--- diff --git a/content/changelog/es/2025-02-10-V1.7.8.md b/content/changelog/es/2025-02-10-V1.7.8.md deleted file mode 100644 index 16ea40ee0..000000000 --- a/content/changelog/es/2025-02-10-V1.7.8.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Versión 1.7.8" -slug: v1-7-8 -date: 2025-02-10 -tags: [release] ---- - -# 🚀 Versión 1.7.8 - - - -10/02/2025 - -## Nuevas Funcionalidades - -- **Kubernetes 1.30:** Actualizado soporte de EKS a la versión 1.30. - -## Correcciones de Errores - -- **Mejoras Menores de UI:** Mejorado el diseño visual para pantallas de proyecto y workload. diff --git a/content/changelog/es/2025-02-10-version-1.7.8.md b/content/changelog/es/2025-02-10-version-1.7.8.md new file mode 100644 index 000000000..05155f43a --- /dev/null +++ b/content/changelog/es/2025-02-10-version-1.7.8.md @@ -0,0 +1,25 @@ +--- +title: Versión 1.7.8 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 10/02/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Kubernetes 1.30** +Actualizado soporte de EKS a la versión 1.30. + +--- + +## 🐛 Correcciones + +- **Mejoras Menores de UI** +Mejorado el diseño visual para pantallas de proyecto y workload. + +--- diff --git a/content/changelog/es/2025-02-17-V1.7.9.md b/content/changelog/es/2025-02-17-V1.7.9.md deleted file mode 100644 index 540cda251..000000000 --- a/content/changelog/es/2025-02-17-V1.7.9.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Versión 1.7.9" -slug: v1-7-9 -date: 2025-02-17 -tags: [release] ---- - -# 🚀 Versión 1.7.9 - - - - -17/02/2025 - -## Nuevas Funcionalidades - -- **Mejoras en Cronjobs:** Configurar políticas de cronjob y filtrar fácilmente entre cronjobs activos e inactivos. -- **Emails de Soporte en Notificaciones:** Cuando SleakOps genera una notificación, los usuarios ahora la reciben por email. -- **EKS Insights:** Durante las actualizaciones de cluster, SleakOps verifica EKS Insights para asegurar que todo funcione correctamente. - -## Correcciones de Errores - -- **Mejoras en Flujo de Project:** Mejorados varios ajustes, formularios y otros elementos para una gestión de proyectos más fluida. -- **Flujo de Creación de Cuenta AWS:** Ahora soporta cuentas AWS inactivas, proporcionando orientación clara sobre cómo activarlas manualmente antes de reanudar el proceso en SleakOps. diff --git a/content/changelog/es/2025-02-17-version-1.7.9.md b/content/changelog/es/2025-02-17-version-1.7.9.md new file mode 100644 index 000000000..631405d1c --- /dev/null +++ b/content/changelog/es/2025-02-17-version-1.7.9.md @@ -0,0 +1,31 @@ +--- +title: Versión 1.7.9 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 17/02/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Mejoras en Cronjobs** +Configurar políticas de cronjob y filtrar fácilmente entre cronjobs activos e inactivos. +- **Emails de Soporte en Notificaciones** +Cuando SleakOps genera una notificación, los usuarios ahora la reciben por email. +- **EKS Insights** +Durante las actualizaciones de cluster, SleakOps verifica EKS Insights para asegurar que todo funcione correctamente. + +--- + +## 🐛 Correcciones + +- **Mejoras en Flujo de Project** +Mejorados varios ajustes, formularios y otros elementos para una gestión de proyectos más fluida. +- **Flujo de Creación de Cuenta AWS** +Ahora soporta cuentas AWS inactivas, proporcionando orientación clara sobre cómo activarlas manualmente antes de reanudar el proceso en SleakOps. + +--- diff --git a/content/changelog/es/2025-04-01-V1.7.10.md b/content/changelog/es/2025-04-01-V1.7.10.md deleted file mode 100644 index 50d011428..000000000 --- a/content/changelog/es/2025-04-01-V1.7.10.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Versión 1.7.10" -slug: v1-7-10 -date: 2025-04-01 -tags: [release] ---- - -# 🚀 Versión 1.7.10 - - - -01/04/2025 - -## Nuevas Funcionalidades - -- **Control de Permisos Mejorado:** Los proyectos ahora pueden tener permisos adicionales asociados, ya sean Políticas IAM de AWS o permisos personalizados. -- **Detalles de Dependencies:** Los detalles de configuración de cada dependency ahora se muestran dentro de su vista de detalle. -- **Mejoras en Pantalla de Actualización de Cluster:** El análisis de EKS Insights ahora se incluye directamente en SleakOps para agilizar las actualizaciones de cluster. -- **Mejoras en Builds y Projects:** Información adicional durante builds y flujos de trabajo de validación de proyectos mejorados. - -## Correcciones de Errores - -- **Entrada de Texto Mejorada:** Resueltos problemas que afectaban las entradas de texto en formularios. -- **Datos de Acceso a Cluster:** Corrección de un bug al recuperar datos de conexión de cluster bajo una cuenta seleccionada diferente. -- **Filtros de Lista de Dominios:** Agregados filtros por cuenta a la lista de dominios. -- **Mejoras en Lista de Nodepool:** Refinados los visuales para la vista de lista de nodepool. -- **Actualizaciones de Instalación de Add-ons:** La lista de add-ons ahora se actualiza correctamente después de la instalación. -- **Edición de Variable Groups:** Corrección de un problema con la edición de grupos de variables. -- **Adjunto de Suscripción:** Solucionado un bug que impedía que nuevas suscripciones se adjuntaran correctamente. -- **Pronóstico de Costos:** Corrección de problemas de pronóstico para mejores estimaciones de costos. diff --git a/content/changelog/es/2025-04-01-version-1.7.10.md b/content/changelog/es/2025-04-01-version-1.7.10.md new file mode 100644 index 000000000..0e5b88f04 --- /dev/null +++ b/content/changelog/es/2025-04-01-version-1.7.10.md @@ -0,0 +1,45 @@ +--- +title: Versión 1.7.10 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 01/04/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Control de Permisos Mejorado** +Los proyectos ahora pueden tener permisos adicionales asociados, ya sean Políticas IAM de AWS o permisos personalizados. +- **Detalles de Dependencies** +Los detalles de configuración de cada dependency ahora se muestran dentro de su vista de detalle. +- **Mejoras en Pantalla de Actualización de Cluster** +El análisis de EKS Insights ahora se incluye directamente en SleakOps para agilizar las actualizaciones de cluster. +- **Mejoras en Builds y Projects** +Información adicional durante builds y flujos de trabajo de validación de proyectos mejorados. + +--- + +## 🐛 Correcciones + +- **Entrada de Texto Mejorada** +Resueltos problemas que afectaban las entradas de texto en formularios. +- **Datos de Acceso a Cluster** +Corrección de un bug al recuperar datos de conexión de cluster bajo una cuenta seleccionada diferente. +- **Filtros de Lista de Dominios** +Agregados filtros por cuenta a la lista de dominios. +- **Mejoras en Lista de Nodepool** +Refinados los visuales para la vista de lista de nodepool. +- **Actualizaciones de Instalación de Add-ons** +La lista de add-ons ahora se actualiza correctamente después de la instalación. +- **Edición de Variable Groups** +Corrección de un problema con la edición de grupos de variables. +- **Adjunto de Suscripción** +Solucionado un bug que impedía que nuevas suscripciones se adjuntaran correctamente. +- **Pronóstico de Costos** +Corrección de problemas de pronóstico para mejores estimaciones de costos. + +--- diff --git a/content/changelog/es/2025-04-24-V1.7.11.md b/content/changelog/es/2025-04-24-V1.7.11.md deleted file mode 100644 index 48ffd1992..000000000 --- a/content/changelog/es/2025-04-24-V1.7.11.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.7.11" -slug: v1-7-11 -date: 2025-04-24 -tags: [release] ---- - -# 🚀 Versión 1.7.11 - - - - -24/04/2025 - -## Nuevas Funcionalidades - -- **Kubernetes 1.31 & Karpenter 1.3:** SleakOps ahora provisiona clusters en EKS 1.31 y actualiza el autoscaler a Karpenter 1.3. -- **Gestión de Secretos Más Fuerte:** Todos los secretos ahora también se almacenan encriptados en AWS Systems Manager Parameter Store, agregando una capa adicional de durabilidad más allá de la copia en-cluster. - -## Correcciones de Errores - -- **Workers de Dev-Cluster:** Eliminado el PodDisruptionBudget mejorando la confiabilidad de workers en clusters de desarrollo cuando el cluster tenía el scheduler de apagado habilitado. -- **Builds:** Los builds ya no se activan por cada edición menor de proyecto. -- **Deployments:** Cambiados los jobs de deployments fuera de Fargate; los logs de builds ahora se persisten para facilitar la resolución de problemas. -- **Detalles de Web Service:** Refinada la página de detalles del servicio para mejor visibilidad de endpoints, estado y métricas. -- **Add-on de Kubecost:** Mejoras de estabilidad. diff --git a/content/changelog/es/2025-04-24-version-1.7.11.md b/content/changelog/es/2025-04-24-version-1.7.11.md new file mode 100644 index 000000000..e3d9319c2 --- /dev/null +++ b/content/changelog/es/2025-04-24-version-1.7.11.md @@ -0,0 +1,35 @@ +--- +title: Versión 1.7.11 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 24/04/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Kubernetes 1.31 & Karpenter 1.3** +SleakOps ahora provisiona clusters en EKS 1.31 y actualiza el autoscaler a Karpenter 1.3. +- **Gestión de Secretos Más Fuerte** +Todos los secretos ahora también se almacenan encriptados en AWS Systems Manager Parameter Store, agregando una capa adicional de durabilidad más allá de la copia en-cluster. + +--- + +## 🐛 Correcciones + +- **Workers de Dev-Cluster** +Eliminado el PodDisruptionBudget mejorando la confiabilidad de workers en clusters de desarrollo cuando el cluster tenía el scheduler de apagado habilitado. +- **Builds** +Los builds ya no se activan por cada edición menor de proyecto. +- **Deployments** +Cambiados los jobs de deployments fuera de Fargate; los logs de builds ahora se persisten para facilitar la resolución de problemas. +- **Detalles de Web Service** +Refinada la página de detalles del servicio para mejor visibilidad de endpoints, estado y métricas. +- **Add-on de Kubecost** +Mejoras de estabilidad. + +--- diff --git a/content/changelog/es/2025-05-14-V1.7.12.md b/content/changelog/es/2025-05-14-V1.7.12.md deleted file mode 100644 index 7b5085b47..000000000 --- a/content/changelog/es/2025-05-14-V1.7.12.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.12" -slug: v1-7-12 -date: 2025-05-14 -tags: [release] ---- - -# 🚀 Versión 1.7.12 - - - - -14/05/2025 - -## Nuevas Funcionalidades - -- **Nuevo Flujo de Soporte:** Introducido un chatbot de soporte y sistema de tickets para proporcionar mejor trazabilidad y tiempos de respuesta más rápidos. -- **Gestión de Suscripciones y Planes:** Herramientas mejoradas para gestionar suscripciones y planes de servicio. - -## Correcciones de Errores - -- **Mejoras en Formularios:** Mejoras generales en usabilidad y validación de formularios. -- **Consola de Project:** Mejoras de UI/UX en la pantalla de consola de proyecto. diff --git a/content/changelog/es/2025-05-14-version-1.7.12.md b/content/changelog/es/2025-05-14-version-1.7.12.md new file mode 100644 index 000000000..cb290aa19 --- /dev/null +++ b/content/changelog/es/2025-05-14-version-1.7.12.md @@ -0,0 +1,29 @@ +--- +title: Versión 1.7.12 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 14/05/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Nuevo Flujo de Soporte** +Introducido un chatbot de soporte y sistema de tickets para proporcionar mejor trazabilidad y tiempos de respuesta más rápidos. +- **Gestión de Suscripciones y Planes** +Herramientas mejoradas para gestionar suscripciones y planes de servicio. + +--- + +## 🐛 Correcciones + +- **Mejoras en Formularios** +Mejoras generales en usabilidad y validación de formularios. +- **Consola de Project** +Mejoras de UI/UX en la pantalla de consola de proyecto. + +--- diff --git a/content/changelog/es/2025-06-02-V1.7.13.md b/content/changelog/es/2025-06-02-V1.7.13.md deleted file mode 100644 index a9c019db0..000000000 --- a/content/changelog/es/2025-06-02-V1.7.13.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Versión 1.7.13" -slug: v1-7-13 -date: 2025-06-02 -tags: [release] ---- - -# 🚀 Versión 1.7.13 - - - -02/06/2025 - -## Nuevas Funcionalidades - -- **Monitoreo de Dependencies:** Mejora en visualización y seguimiento de dependencies. -- **Control de Servicios:** Nuevo toggle para encender o apagar webservices y workers. -- **Builds con o sin caché:** Opción para ejecutar builds usando caché o desde cero. -- **Importación de Bucket S3 con Versionado:** Agregado soporte para importar Buckets S3 con versionado activo. -- **Variable Groups:** Interfaz mejorada para gestionar grupos de variables. -- **Validación de Dockerfile:** Nuevas validaciones para asegurar la confiabilidad de Dockerfiles. - -## Correcciones de Errores - -- **Logs de Jobs:** Corrección de enlaces rotos de logs para Jobs. -- **Nombres de Ramas:** Agregado soporte para ramas con / en sus nombres. -- **Pipelines de GitLab:** Corrección de problemas que afectaban la ejecución de pipelines. diff --git a/content/changelog/es/2025-06-02-version-1.7.13.md b/content/changelog/es/2025-06-02-version-1.7.13.md new file mode 100644 index 000000000..b17f166ce --- /dev/null +++ b/content/changelog/es/2025-06-02-version-1.7.13.md @@ -0,0 +1,39 @@ +--- +title: Versión 1.7.13 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 02/06/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Monitoreo de Dependencies** +Mejora en visualización y seguimiento de dependencies. +- **Control de Servicios** +Nuevo toggle para encender o apagar webservices y workers. +- **Builds con o sin caché** +Opción para ejecutar builds usando caché o desde cero. +- **Importación de Bucket S3 con Versionado** +Agregado soporte para importar Buckets S3 con versionado activo. +- **Variable Groups** +Interfaz mejorada para gestionar grupos de variables. +- **Validación de Dockerfile** +Nuevas validaciones para asegurar la confiabilidad de Dockerfiles. + +--- + +## 🐛 Correcciones + +- **Logs de Jobs** +Corrección de enlaces rotos de logs para Jobs. +- **Nombres de Ramas** +Agregado soporte para ramas con / en sus nombres. +- **Pipelines de GitLab** +Corrección de problemas que afectaban la ejecución de pipelines. + +--- diff --git a/content/changelog/es/2025-06-26-V1.7.14.md b/content/changelog/es/2025-06-26-V1.7.14.md deleted file mode 100644 index bf93e7a1b..000000000 --- a/content/changelog/es/2025-06-26-V1.7.14.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.7.14" -slug: v1-7-14 -date: 2025-06-26 -tags: [release] ---- - -# 🚀 Versión 1.7.14 - - - -26/06/2025 - -## Nuevas Funcionalidades - -- **Mejoras en Transiciones de Estado:** Cambios de estado más fluidos para addons de cluster y formularios. -- **Soporte con Imágenes:** Los usuarios ahora pueden subir imágenes en el chat de soporte. -- **Jobs desde Cronjobs o Jobs Existentes:** Capacidad de lanzar un Job desde un cronjob o Job existente. -- **Errores de Infraestructura:** Mejora en el análisis y visualización de errores de infraestructura para facilitar la resolución de problemas. - -## Correcciones de Errores - -- **Volúmenes Duplicados:** Corrección del problema al crear volúmenes con el mismo nombre. -- **Usuarios Duplicados:** Prevención de creación de usuarios con el mismo email. -- **Dependencies Duplicadas:** Bloqueo de creación de dependencies con nombres duplicados. -- **Monitoreo de Dependencies:** Corrección de problemas de rango de fechas en la pantalla de monitoreo de dependencies. diff --git a/content/changelog/es/2025-06-26-version-1.7.14.md b/content/changelog/es/2025-06-26-version-1.7.14.md new file mode 100644 index 000000000..cf84ac7b4 --- /dev/null +++ b/content/changelog/es/2025-06-26-version-1.7.14.md @@ -0,0 +1,37 @@ +--- +title: Versión 1.7.14 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 26/06/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Mejoras en Transiciones de Estado** +Cambios de estado más fluidos para addons de cluster y formularios. +- **Soporte con Imágenes** +Los usuarios ahora pueden subir imágenes en el chat de soporte. +- **Jobs desde Cronjobs o Jobs Existentes** +Capacidad de lanzar un Job desde un cronjob o Job existente. +- **Errores de Infraestructura** +Mejora en el análisis y visualización de errores de infraestructura para facilitar la resolución de problemas. + +--- + +## 🐛 Correcciones + +- **Volúmenes Duplicados** +Corrección del problema al crear volúmenes con el mismo nombre. +- **Usuarios Duplicados** +Prevención de creación de usuarios con el mismo email. +- **Dependencies Duplicadas** +Bloqueo de creación de dependencies con nombres duplicados. +- **Monitoreo de Dependencies** +Corrección de problemas de rango de fechas en la pantalla de monitoreo de dependencies. + +--- diff --git a/content/changelog/es/2025-07-07-V1.7.15.md b/content/changelog/es/2025-07-07-V1.7.15.md deleted file mode 100644 index 096e92448..000000000 --- a/content/changelog/es/2025-07-07-V1.7.15.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.7.15" -slug: v1-7-15 -date: 2025-07-07 -tags: [release] ---- - -# 🚀 Versión 1.7.15 - - - -07/07/2025 - -## Nuevas Funcionalidades - -- **Resiliencia de Nodegroup Spot:** Los nodegroups Spot ahora previenen fallos cuando no hay instancias Spot disponibles. -- **VariableGroups Basados en Archivos:** Agregado soporte para crear variablegroups de tipo archivo. -- **Agent Bot (beta):** Bot agente experimental lanzado en beta. - -## Correcciones de Errores - -- **Configuración de dominio dependiente:** Generar registros DNS cuando el dominio padre ya está creado. -- **Estado de Cluster con apagado nocturno:** Corrección de visualización incorrecta del estado para clusters con apagado nocturno habilitado. -- **Filtros de VariableGroups:** Filtrar por proyectos en la lista de variablegroups. -- **Eliminar cluster:** Corrección del flujo de eliminación de cluster. -- **Estado de ticket de soporte:** Corrección del estado de cierre de ticket de soporte. diff --git a/content/changelog/es/2025-07-07-version-1.7.15.md b/content/changelog/es/2025-07-07-version-1.7.15.md new file mode 100644 index 000000000..429c549e3 --- /dev/null +++ b/content/changelog/es/2025-07-07-version-1.7.15.md @@ -0,0 +1,37 @@ +--- +title: Versión 1.7.15 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 07/07/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Resiliencia de Nodegroup Spot** +Los nodegroups Spot ahora previenen fallos cuando no hay instancias Spot disponibles. +- **VariableGroups Basados en Archivos** +Agregado soporte para crear variablegroups de tipo archivo. +- **Agent Bot (beta)** +Bot agente experimental lanzado en beta. + +--- + +## 🐛 Correcciones + +- **Configuración de dominio dependiente** +Generar registros DNS cuando el dominio padre ya está creado. +- **Estado de Cluster con apagado nocturno** +Corrección de visualización incorrecta del estado para clusters con apagado nocturno habilitado. +- **Filtros de VariableGroups** +Filtrar por proyectos en la lista de variablegroups. +- **Eliminar cluster** +Corrección del flujo de eliminación de cluster. +- **Estado de ticket de soporte** +Corrección del estado de cierre de ticket de soporte. + +--- diff --git a/content/changelog/es/2025-07-21-V1.7.16.md b/content/changelog/es/2025-07-21-V1.7.16.md deleted file mode 100644 index 8f7b9b6a7..000000000 --- a/content/changelog/es/2025-07-21-V1.7.16.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Versión 1.7.16" -slug: v1-7-16 -date: 2025-07-21 -tags: [release] ---- - -# 🚀 Versión 1.7.16 - - - -21/07/2025 - -## Nuevas Funcionalidades - -- **Projects con Repositorios Públicos:** Ahora puedes crear y gestionar proyectos vinculados a repositorios públicos. -- **Excluir Builds de Métricas:** Los builds pueden excluirse del dashboard de métricas de Grafana para reportes más precisos. - -## Correcciones de Errores - -- **Deployments de Nuevos Projects:** Corrección de problemas que impedían el despliegue exitoso de proyectos recién creados. diff --git a/content/changelog/es/2025-07-21-version-1.7.16.md b/content/changelog/es/2025-07-21-version-1.7.16.md new file mode 100644 index 000000000..d018f5703 --- /dev/null +++ b/content/changelog/es/2025-07-21-version-1.7.16.md @@ -0,0 +1,27 @@ +--- +title: Versión 1.7.16 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 21/07/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Projects con Repositorios Públicos** +Ahora puedes crear y gestionar proyectos vinculados a repositorios públicos. +- **Excluir Builds de Métricas** +Los builds pueden excluirse del dashboard de métricas de Grafana para reportes más precisos. + +--- + +## 🐛 Correcciones + +- **Deployments de Nuevos Projects** +Corrección de problemas que impedían el despliegue exitoso de proyectos recién creados. + +--- diff --git a/content/changelog/es/2025-10-01-V2.0.0.md b/content/changelog/es/2025-10-01-V2.0.0.md deleted file mode 100644 index 438b54bb6..000000000 --- a/content/changelog/es/2025-10-01-V2.0.0.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Versión 2.0.0" -slug: v2-0-0 -date: 2025-10-01 -tags: [release] ---- - -# 🚀 Versión 2.0.0 - - - -01/10/2025 - -## Nuevas Funcionalidades - -- **Rediseño Completo de Consola:** UI modernizada para una experiencia más limpia e intuitiva. -- **Soporte para Tema Claro:** Soporte completo para modo claro. -- **Bot de Soporte:** Respuestas automatizadas para preguntas comunes de soporte. -- **Documentación Integral:** Guías ampliadas cubriendo todas las funcionalidades. -- **Actualización de lambdas:** Actualización de versiones de Python para lambdas. -- **Project Chart:** Promovido a estable. -- **Project Access:** Promovido a estable. -- **Dependency Aurora MySQL:** Promovido a estable. -- **Dependency Oracle:** Promovido a estable. -- **Dependency MariaDB:** Promovido a estable. -- **Dependency Aurora PostgreSQL:** Promovido a estable. -- **Edición de Dependencies:** Capacidad de editar dependencies existentes. -- **Dockertron (beta):** Dockerización automática impulsada por IA. -- **Cancelación de Builds:** Posibilidad de cancelar builds pendientes. -- **Nueva Dependency MSK:** Soporte para Kafka vía AWS MSK. -- **Webservices Mejorados:** Configurar anotaciones de ingress personalizadas y healthchecks opcionales. -- **Nodepools Avanzados:** Nuevas estrategias de fallback y mezcla de instancias (reservadas, spot, on-demand) para mejor control de costos y rendimiento. - -## Correcciones de Errores - -- **GitLab self-hosted:** Corrección de validación de URL. -- **Eliminación de Cluster:** Mejoras en el manejo de eliminación en cascada. diff --git a/content/changelog/es/2025-10-01-version-2.0.0.md b/content/changelog/es/2025-10-01-version-2.0.0.md new file mode 100644 index 000000000..712be32cc --- /dev/null +++ b/content/changelog/es/2025-10-01-version-2.0.0.md @@ -0,0 +1,59 @@ +--- +title: Versión 2.0.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`major release` · 01/10/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Rediseño Completo de Consola** +UI modernizada para una experiencia más limpia e intuitiva. +- **Soporte para Tema Claro** +Soporte completo para modo claro. +- **Bot de Soporte** +Respuestas automatizadas para preguntas comunes de soporte. +- **Documentación Integral** +Guías ampliadas cubriendo todas las funcionalidades. +- **Actualización de lambdas** +Actualización de versiones de Python para lambdas. +- **Project Chart** +Promovido a estable. +- **Project Access** +Promovido a estable. +- **Dependency Aurora MySQL** +Promovido a estable. +- **Dependency Oracle** +Promovido a estable. +- **Dependency MariaDB** +Promovido a estable. +- **Dependency Aurora PostgreSQL** +Promovido a estable. +- **Edición de Dependencies** +Capacidad de editar dependencies existentes. +- **Dockertron (beta)** +Dockerización automática impulsada por IA. +- **Cancelación de Builds** +Posibilidad de cancelar builds pendientes. +- **Nueva Dependency MSK** +Soporte para Kafka vía AWS MSK. +- **Webservices Mejorados** +Configurar anotaciones de ingress personalizadas y healthchecks opcionales. +- **Nodepools Avanzados** +Nuevas estrategias de fallback y mezcla de instancias (reservadas, spot, on-demand) para mejor control de costos y rendimiento. + +--- + +## 🐛 Correcciones + +- **GitLab self-hosted** +Corrección de validación de URL. +- **Eliminación de Cluster** +Mejoras en el manejo de eliminación en cascada. + +--- diff --git a/content/changelog/es/2025-10-15-V2.0.1.md b/content/changelog/es/2025-10-15-V2.0.1.md deleted file mode 100644 index 6c718b475..000000000 --- a/content/changelog/es/2025-10-15-V2.0.1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Versión 2.0.1" -slug: v2-0-1 -date: 2025-10-15 -tags: [release] ---- - -# 🚀 Versión 2.0.1 - - - -15/10/2025 - -## Nuevas Funcionalidades - -- **Tabla de Builds y Deploys:** Mejoras en los datos mostrados en la tabla de builds y deploys. - -## Correcciones de Errores - -- **Cron de Apagado Nocturno:** Corrección de visualización del cron de apagado nocturno. -- **Estado de Cluster:** Corrección de actualización del estado de Cluster durante la actualización. -- **Notificaciones Largas:** Corrección de visualización de notificaciones largas. -- **VPN de Terceros:** Corrección de acceso VPN para terceros. -- **Cancelación de Deploy:** Corrección del flujo de cancelación de deploy. -- **Creación de Provider:** Corrección de jerarquías de texto en el flujo de creación de Provider. -- **Información Faltante:** Corrección de redirección en el flujo de información faltante para Project. -- **Usuario Viewer:** Corrección de navegación para usuarios viewer. -- **Toggles de Modo Claro:** Mejora de visibilidad de toggles en modo claro. -- **Contraseña de Dependency MQ:** Corrección de auto-generación de contraseña para Dependency MQ. -- **Carga de Iconos:** Mejoras en la carga de iconos. -- **Pantallas de Transición:** Corrección de pantallas de transición durante la carga de datos. -- **Tablas de Consola de Project:** Mejora de visualización de tablas en la pantalla "Consola de Project". -- **Errores de Infraestructura:** Corrección de mensajes de error cuando falla la ejecución de módulos de infraestructura. -- **Selector de Cuenta Móvil:** Soporte para selector de cuenta en dispositivos móviles. diff --git a/content/changelog/es/2025-10-15-version-2.0.1.md b/content/changelog/es/2025-10-15-version-2.0.1.md new file mode 100644 index 000000000..e2b077ebf --- /dev/null +++ b/content/changelog/es/2025-10-15-version-2.0.1.md @@ -0,0 +1,53 @@ +--- +title: Versión 2.0.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 15/10/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Tabla de Builds y Deploys** +Mejoras en los datos mostrados en la tabla de builds y deploys. + +--- + +## 🐛 Correcciones + +- **Cron de Apagado Nocturno** +Corrección de visualización del cron de apagado nocturno. +- **Estado de Cluster** +Corrección de actualización del estado de Cluster durante la actualización. +- **Notificaciones Largas** +Corrección de visualización de notificaciones largas. +- **VPN de Terceros** +Corrección de acceso VPN para terceros. +- **Cancelación de Deploy** +Corrección del flujo de cancelación de deploy. +- **Creación de Provider** +Corrección de jerarquías de texto en el flujo de creación de Provider. +- **Información Faltante** +Corrección de redirección en el flujo de información faltante para Project. +- **Usuario Viewer** +Corrección de navegación para usuarios viewer. +- **Toggles de Modo Claro** +Mejora de visibilidad de toggles en modo claro. +- **Contraseña de Dependency MQ** +Corrección de auto-generación de contraseña para Dependency MQ. +- **Carga de Iconos** +Mejoras en la carga de iconos. +- **Pantallas de Transición** +Corrección de pantallas de transición durante la carga de datos. +- **Tablas de Consola de Project** +Mejora de visualización de tablas en la pantalla "Consola de Project". +- **Errores de Infraestructura** +Corrección de mensajes de error cuando falla la ejecución de módulos de infraestructura. +- **Selector de Cuenta Móvil** +Soporte para selector de cuenta en dispositivos móviles. + +--- diff --git a/content/changelog/es/2025-11-10-V2.1.0.md b/content/changelog/es/2025-11-10-V2.1.0.md deleted file mode 100644 index cc0891b63..000000000 --- a/content/changelog/es/2025-11-10-V2.1.0.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Versión 2.1.0" -slug: v2-1-0 -date: 2025-11-10 -tags: [release] ---- - -# 🚀 Versión 2.1.0 - - - -10/11/2025 - -## Nuevas Funcionalidades - -- **Actualización de Cluster:** Soporte para actualización de Cluster de 1.31 a 1.32. -- **Tour de Dependencies:** Nuevo tour guiado para la pantalla de Dependencies. -- **Tour de Workloads:** Nuevo tour guiado para la pantalla de Workloads. -- **Tour de Variable Groups:** Nuevo tour guiado para la pantalla de Variable Groups. -- **Tour de Cluster:** Nuevo tour guiado para la pantalla de Cluster. -- **Tour de Projects:** Nuevo tour guiado para la pantalla de Projects. -- **Optimización de Actualización de Cluster:** Optimización de tareas de actualización de Cluster. -- **Carga de Pantallas:** Mejoras en la carga de drawers y pantallas secundarias. -- **Actualización Programada:** Nuevo flujo para programar actualizaciones de Cluster. -- **Onboarding:** Nuevo flujo de onboarding para usuarios nuevos. -- **Configuración de Nodepool:** Soporte para más parámetros de configuración de Nodepool (tipos de instancia, fallbacks, etc.). -- **Monitoreo de Actualización:** Nuevo flujo de monitoreo de servicios durante la actualización de Cluster con reporte de errores. -- **Logs de Builds:** Mejoras en logs de builds con más contexto. - -## Correcciones de Errores - -- **Certificado SSL para S3:** Corrección de errores de certificado SSL para S3 con CloudFront. -- **Logs de Actividad:** Corrección de nombres en algunos Logs de Actividad. -- **Creación de Usuarios:** Corrección de errores en el flujo de creación de usuarios. -- **Tickets de Soporte:** Corrección del estado de tickets de soporte. -- **Build con CLI:** Corrección de parámetros al construir usando el CLI. -- **Apagado Nocturno:** Corrección del estado de Cluster con apagado nocturno habilitado. -- **Resoluciones de Pantalla:** Ajustes para algunas resoluciones en la pantalla principal de la consola. -- **Eliminar Web Services:** Corrección de errores al eliminar un Web Service desde la tabla. diff --git a/content/changelog/es/2025-11-10-version-2.1.0.md b/content/changelog/es/2025-11-10-version-2.1.0.md new file mode 100644 index 000000000..4d8834770 --- /dev/null +++ b/content/changelog/es/2025-11-10-version-2.1.0.md @@ -0,0 +1,63 @@ +--- +title: Versión 2.1.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 10/11/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Actualización de Cluster** +Soporte para actualización de Cluster de 1.31 a 1.32. +- **Tour de Dependencies** +Nuevo tour guiado para la pantalla de Dependencies. +- **Tour de Workloads** +Nuevo tour guiado para la pantalla de Workloads. +- **Tour de Variable Groups** +Nuevo tour guiado para la pantalla de Variable Groups. +- **Tour de Cluster** +Nuevo tour guiado para la pantalla de Cluster. +- **Tour de Projects** +Nuevo tour guiado para la pantalla de Projects. +- **Optimización de Actualización de Cluster** +Optimización de tareas de actualización de Cluster. +- **Carga de Pantallas** +Mejoras en la carga de drawers y pantallas secundarias. +- **Actualización Programada** +Nuevo flujo para programar actualizaciones de Cluster. +- **Onboarding** +Nuevo flujo de onboarding para usuarios nuevos. +- **Configuración de Nodepool** +Soporte para más parámetros de configuración de Nodepool (tipos de instancia, fallbacks, etc.). +- **Monitoreo de Actualización** +Nuevo flujo de monitoreo de servicios durante la actualización de Cluster con reporte de errores. +- **Logs de Builds** +Mejoras en logs de builds con más contexto. + +--- + +## 🐛 Correcciones + +- **Certificado SSL para S3** +Corrección de errores de certificado SSL para S3 con CloudFront. +- **Logs de Actividad** +Corrección de nombres en algunos Logs de Actividad. +- **Creación de Usuarios** +Corrección de errores en el flujo de creación de usuarios. +- **Tickets de Soporte** +Corrección del estado de tickets de soporte. +- **Build con CLI** +Corrección de parámetros al construir usando el CLI. +- **Apagado Nocturno** +Corrección del estado de Cluster con apagado nocturno habilitado. +- **Resoluciones de Pantalla** +Ajustes para algunas resoluciones en la pantalla principal de la consola. +- **Eliminar Web Services** +Corrección de errores al eliminar un Web Service desde la tabla. + +--- diff --git a/content/changelog/es/2025-11-13-V2.2.0.md b/content/changelog/es/2025-11-13-V2.2.0.md deleted file mode 100644 index 81ffd496d..000000000 --- a/content/changelog/es/2025-11-13-V2.2.0.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 2.2.0" -slug: v2-2-0 -date: 2025-11-13 -tags: [release] ---- - -# 🚀 Versión 2.2.0 - - - -13/11/2025 - -## Nuevas Funcionalidades - -- **Visor de Código:** Nuevo componente para visualizar código dentro de la consola. - -## Correcciones de Errores - -- **Usuarios Eliminados:** Corrección de errores con usuarios eliminados. -- **Actualización de Ramas:** Corrección del flujo para actualizar ramas en Project. -- **Información Incompleta:** Corrección del flujo cuando la información del Project está incompleta. -- **Políticas Extra:** Corrección del flujo para configurar políticas extra en Project. diff --git a/content/changelog/es/2025-11-13-version-2.2.0.md b/content/changelog/es/2025-11-13-version-2.2.0.md new file mode 100644 index 000000000..4d591a90b --- /dev/null +++ b/content/changelog/es/2025-11-13-version-2.2.0.md @@ -0,0 +1,31 @@ +--- +title: Versión 2.2.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 13/11/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Visor de Código** +Nuevo componente para visualizar código dentro de la consola. + +--- + +## 🐛 Correcciones + +- **Usuarios Eliminados** +Corrección de errores con usuarios eliminados. +- **Actualización de Ramas** +Corrección del flujo para actualizar ramas en Project. +- **Información Incompleta** +Corrección del flujo cuando la información del Project está incompleta. +- **Políticas Extra** +Corrección del flujo para configurar políticas extra en Project. + +--- diff --git a/content/changelog/es/2025-11-18-V2.3.0.md b/content/changelog/es/2025-11-18-V2.3.0.md deleted file mode 100644 index d6baf7ba1..000000000 --- a/content/changelog/es/2025-11-18-V2.3.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 2.3.0" -slug: v2-3-0 -date: 2025-11-18 -tags: [release] ---- - -# 🚀 Versión 2.3.0 - -18/11/2025 - -## Nuevas Funcionalidades - -- **Clonación de Environments:** Nueva función para clonar Environments. -- **Clonación de Projects:** Nueva función para clonar Projects. -- **Clonación de Dependencies:** Nueva función para clonar Dependencies. -- **Clonación de Workloads:** Nueva función para clonar Workloads. -- **Clonación de Variable Groups:** Nueva función para clonar Variable Groups. -- **Filtros de Monitoreo de Cluster:** Agregados filtros para navegar eventos de Cluster en Cluster Monitoring. -- **Búsqueda de Variable Groups:** Capacidad de buscar Variable Groups por nombres de claves internas desde la búsqueda general. - -## Correcciones de Errores - -- **Cuenta Seleccionada:** La cuenta seleccionada ahora persiste al cambiar de usuario. -- **Apagado de Web Services:** Mejoras en el apagado de Web Services. diff --git a/content/changelog/es/2025-11-18-version-2.3.0.md b/content/changelog/es/2025-11-18-version-2.3.0.md new file mode 100644 index 000000000..51408d6be --- /dev/null +++ b/content/changelog/es/2025-11-18-version-2.3.0.md @@ -0,0 +1,39 @@ +--- +title: Versión 2.3.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · 18/11/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Clonación de Environments** +Nueva función para clonar Environments. +- **Clonación de Projects** +Nueva función para clonar Projects. +- **Clonación de Dependencies** +Nueva función para clonar Dependencies. +- **Clonación de Workloads** +Nueva función para clonar Workloads. +- **Clonación de Variable Groups** +Nueva función para clonar Variable Groups. +- **Filtros de Monitoreo de Cluster** +Agregados filtros para navegar eventos de Cluster en Cluster Monitoring. +- **Búsqueda de Variable Groups** +Capacidad de buscar Variable Groups por nombres de claves internas desde la búsqueda general. + +--- + +## 🐛 Correcciones + +- **Cuenta Seleccionada** +La cuenta seleccionada ahora persiste al cambiar de usuario. +- **Apagado de Web Services** +Mejoras en el apagado de Web Services. + +--- diff --git a/content/changelog/es/2025-12-01-V2.3.1.md b/content/changelog/es/2025-12-01-V2.3.1.md deleted file mode 100644 index 20327926a..000000000 --- a/content/changelog/es/2025-12-01-V2.3.1.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Versión 2.3.1" -slug: v2-3-1 -date: 2025-12-01 -tags: [release] ---- - -# 🚀 Versión 2.3.1 - -🗓️ _01/12/2025_ - -## Nuevas Funcionalidades - -- **Análisis de Imágenes en Soporte:** Soporte para análisis de imágenes en el bot de soporte. -- **Documentación:** Nueva documentación para Dockertron y gestión de charts. -- **Valores Personalizados en Addons:** Capacidad de usar valores personalizados al instalar un addon. -- **Cambio de Nodegroup:** Capacidad de cambiar el nodegroup de clusters no productivos. -- **Flujo de Soporte:** Flujo de conversación para soporte entre bot y humano. - -## Correcciones de Errores - -- **Modales de Confirmación:** Corrección de posición de modales de confirmación de eliminación. -- **Tabla de Builds:** Corrección de errores de datos y columnas en la tabla de builds. -- **Notificaciones del Dashboard:** Corrección de mensajes de notificación en el dashboard. -- **Nombres de Workloads:** Ajuste de tamaños de nombres para Workloads. -- **Dependencia de Chart:** Corrección del flujo de dependencia de charts. -- **Alertas de Consola:** Corrección de alertas de notificación en la consola. diff --git a/content/changelog/es/2025-12-01-version-2.3.1.md b/content/changelog/es/2025-12-01-version-2.3.1.md new file mode 100644 index 000000000..dab4d5c59 --- /dev/null +++ b/content/changelog/es/2025-12-01-version-2.3.1.md @@ -0,0 +1,43 @@ +--- +title: Versión 2.3.1 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · 01/12/2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **Análisis de Imágenes en Soporte** +Soporte para análisis de imágenes en el bot de soporte. +- **Documentación** +Nueva documentación para Dockertron y gestión de charts. +- **Valores Personalizados en Addons** +Capacidad de usar valores personalizados al instalar un addon. +- **Cambio de Nodegroup** +Capacidad de cambiar el nodegroup de clusters no productivos. +- **Flujo de Soporte** +Flujo de conversación para soporte entre bot y humano. + +--- + +## 🐛 Correcciones + +- **Modales de Confirmación** +Corrección de posición de modales de confirmación de eliminación. +- **Tabla de Builds** +Corrección de errores de datos y columnas en la tabla de builds. +- **Notificaciones del Dashboard** +Corrección de mensajes de notificación en el dashboard. +- **Nombres de Workloads** +Ajuste de tamaños de nombres para Workloads. +- **Dependencia de Chart** +Corrección del flujo de dependencia de charts. +- **Alertas de Consola** +Corrección de alertas de notificación en la consola. + +--- diff --git a/content/changelog/es/2025-12-19-V2.3.2.md b/content/changelog/es/2025-12-19-V2.3.2.md deleted file mode 100644 index 2f7854a39..000000000 --- a/content/changelog/es/2025-12-19-V2.3.2.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Versión 2.3.2" -slug: v2-3-2 -date: 2025-12-19 -authors: - - name: Equipo SleakOps - title: Equipo de Desarrollo -tags: [release] ---- - -# 🚀 Versión 2.3.2 - - - -## Nuevas Funcionalidades - -- **CLI de SleakOps:** Mejoras y nuevas funcionalidades, incluyendo la posibilidad de abrir una shell de Workload de forma local. -- **S3 con CloudFront:** Mejoras en la integración de S3 con CloudFront. -- **Python en Lambdas:** Actualización de versiones de Python para Lambdas. -- **Charts en Projects:** Mejoras en la pantalla de configuración de charts en Projects. -- **Tags de Subnet:** Mejoras en el manejo de tags de subnet para autodiscovery. -- **Restauración de DB:** Mejoras en el flujo de restauración de base de datos desde un snapshot. -- **Ingress en Web Services:** Soporte para configurar URL y anotaciones de ingress en Web Services. -- **Performance de APIs:** Optimización del rendimiento de las APIs. -- **Errores de Dominios:** Mejoras en el manejo de errores de dominios. -- **Botones de Addons:** Mejoras visuales en los botones de addons. -- **Notificaciones:** Mejoras visuales al mostrar notificaciones. -- **Opciones de Botones:** Mejoras visuales en las opciones de botones (configuración, copiar, etc.). -- **Versiones de RDS:** Actualización de versiones disponibles de RDS. -- **Módulos de Infraestructura:** Optimización de tiempos de ejecución para módulos de infraestructura. - -## Correcciones de Errores - -- **Eliminación de Roles:** Manejo de la eliminación de roles al eliminar un Project. -- **Facturación Multi-Proveedor:** Corrección en la pantalla de facturación con múltiples proveedores. -- **Registro y Login:** Manejo del flujo de registro y login con diferentes estados de suscripciones. -- **Formulario de Nodepool:** Manejo de errores en el formulario de Nodepool. -- **Cambio de Cuentas:** Manejo de errores al cambiar entre cuentas. -- **Caracteres en Variables:** Manejo de caracteres inválidos en nombres de variables en Variable Groups. -- **Acceso a Cluster:** Manejo del acceso a Cluster para diferentes tipos de usuarios. -- **Acceso a VPN:** Manejo de errores al obtener acceso a VPN para diferentes tipos de usuarios. -- **Textos en Listados:** Corrección de textos en listados y formularios. -- **Conexión con AWS:** Corrección de textos en la guía paso a paso para conectarse con AWS. -- **Deployments Pendientes:** Indicador de alerta para deployments pendientes de aprobación. -- **Actualización de Postgres:** Manejo de errores en la actualización de PostgreSQL de 14 a 17. -- **Security Group de RDS:** Corrección del security group para réplicas públicas y privadas de RDS. -- **Chat de Soporte:** Corrección en la delegación en el chat de soporte. diff --git a/content/changelog/es/2025-12-19-version-2.3.2.md b/content/changelog/es/2025-12-19-version-2.3.2.md new file mode 100644 index 000000000..305345787 --- /dev/null +++ b/content/changelog/es/2025-12-19-version-2.3.2.md @@ -0,0 +1,77 @@ +--- +title: Versión 2.3.2 +authors: + - name: SleakOps Team +tags: + - release +--- + +`patch release` · December 19, 2025 + +--- + +## 🚀 Nuevas funcionalidades + +- **CLI de SleakOps** +Mejoras y nuevas funcionalidades, incluyendo la posibilidad de abrir una shell de Workload de forma local. +- **S3 con CloudFront** +Mejoras en la integración de S3 con CloudFront. +- **Python en Lambdas** +Actualización de versiones de Python para Lambdas. +- **Charts en Projects** +Mejoras en la pantalla de configuración de charts en Projects. +- **Tags de Subnet** +Mejoras en el manejo de tags de subnet para autodiscovery. +- **Restauración de DB** +Mejoras en el flujo de restauración de base de datos desde un snapshot. +- **Ingress en Web Services** +Soporte para configurar URL y anotaciones de ingress en Web Services. +- **Performance de APIs** +Optimización del rendimiento de las APIs. +- **Errores de Dominios** +Mejoras en el manejo de errores de dominios. +- **Botones de Addons** +Mejoras visuales en los botones de addons. +- **Notificaciones** +Mejoras visuales al mostrar notificaciones. +- **Opciones de Botones** +Mejoras visuales en las opciones de botones (configuración, copiar, etc.). +- **Versiones de RDS** +Actualización de versiones disponibles de RDS. +- **Módulos de Infraestructura** +Optimización de tiempos de ejecución para módulos de infraestructura. + +--- + +## 🐛 Correcciones + +- **Eliminación de Roles** +Manejo de la eliminación de roles al eliminar un Project. +- **Facturación Multi-Proveedor** +Corrección en la pantalla de facturación con múltiples proveedores. +- **Registro y Login** +Manejo del flujo de registro y login con diferentes estados de suscripciones. +- **Formulario de Nodepool** +Manejo de errores en el formulario de Nodepool. +- **Cambio de Cuentas** +Manejo de errores al cambiar entre cuentas. +- **Caracteres en Variables** +Manejo de caracteres inválidos en nombres de variables en Variable Groups. +- **Acceso a Cluster** +Manejo del acceso a Cluster para diferentes tipos de usuarios. +- **Acceso a VPN** +Manejo de errores al obtener acceso a VPN para diferentes tipos de usuarios. +- **Textos en Listados** +Corrección de textos en listados y formularios. +- **Conexión con AWS** +Corrección de textos en la guía paso a paso para conectarse con AWS. +- **Deployments Pendientes** +Indicador de alerta para deployments pendientes de aprobación. +- **Actualización de Postgres** +Manejo de errores en la actualización de PostgreSQL de 14 a 17. +- **Security Group de RDS** +Corrección del security group para réplicas públicas y privadas de RDS. +- **Chat de Soporte** +Corrección en la delegación en el chat de soporte. + +--- diff --git a/content/changelog/es/2026-01-20-version-2.4.0.md b/content/changelog/es/2026-01-20-version-2.4.0.md index 2eabc67ab..bde392697 100644 --- a/content/changelog/es/2026-01-20-version-2.4.0.md +++ b/content/changelog/es/2026-01-20-version-2.4.0.md @@ -1,48 +1,81 @@ --- title: Versión 2.4.0 authors: - - name: Equipo Sleakops + - name: SleakOps Team tags: - release --- -# 🚀 Versión 2.4.0 - -🗓️ _01/08/2026_ - - -## Nuevas Funcionalidades - -- **Autodiagnóstico de Cargas de Trabajo:** Con la ayuda de la IA, ahora puedes descubrir de forma rápida y sencilla qué está sucediendo con tus Cargas de Trabajo. Con un solo clic desde la consola, obtendrás un diagnóstico completo. -- **Período de Gracia para Cargas de Trabajo:** Soporte para configurar el período de gracia en las Cargas de Trabajo. -- **Notificaciones de Etiquetas de Costo:** Se agregaron notificaciones para la configuración de etiquetas de costo. -- **Eliminación en Cascada:** Mejoras en el flujo de eliminación en cascada con Dependencias activas. -- **Grupos de Variables Basados en Archivos:** Mejoras en el formulario de Grupos de Variables para tipos de archivo. -- **Selector de Proyectos:** Mejoras en los formularios con selector de Proyectos. -- **Navegación de Registros de Actividad:** Se agregaron enlaces para navegar entre Registros de Actividad y recursos. -- **Barra Lateral:** Mejoras visuales en la barra lateral. -- **Pantalla de Facturación:** Mejoras en la pantalla de facturación. -- **Edición de Dominios:** Posibilidad de modificar dominios en Entornos existentes. -- **Nombres de Variables:** Manejo de la longitud del nombre de la variable en Grupos de Variables. -- **Nombres de Entornos:** Ajustes en los nombres predeterminados de los Entornos. -- **Monitoreo de Dependencias:** Mejoras en el monitoreo de Dependencias. -- **Resoluciones Pequeñas:** Mejoras en la interfaz de usuario para bajas resoluciones o pantallas pequeñas. -- **Variables Modificadas:** Mejoras en el formulario de Grupos de Variables para marcar qué variables fueron modificadas. -- **Puerto de Destino en Servicios Web:** Soporte para configurar el puerto de destino para servicios en Servicios Web. - -## Correcciones de Errores - -- **Nombres de Entornos:** Manejo de la longitud del nombre del Entorno. -- **Filtros Persistentes:** Los filtros de Proyecto y Entorno ahora persisten entre pantallas. -- **Iconos de Proyectos:** Iconos mejorados para Proyectos. -- **Complementos con Atributos Personalizados:** Se corrigió la edición de complementos con atributos personalizados. -- **Réplicas de RDS:** Validación de la longitud de las réplicas de RDS. -- **URL de Servicios Web:** Se corrigió la autogeneración de URL al editar un Servicio Web. -- **Selector de Proyectos:** Se corrigió la visibilidad del selector de Proyectos. -- **Formularios de Nodepool:** Se corrigieron errores en los formularios de edición y creación de Nodepool. -- **Transición de Estado:** Se corrigió la transición del estado pendiente a completado. -- **Certificado SSL:** Se corrigieron las alertas para la validación del certificado SSL. -- **Clonación con Versiones:** Se corrigió la clonación con versiones de Dependencias. -- **Correos Electrónicos de Notificación:** Se corrigieron errores visuales en los correos electrónicos de notificación. -- **URL de Clonación:** Se corrigió la URL de Servicios Web en el flujo de clonación. -- **Eliminar Proyecto con RDS:** Se corrigió la eliminación de un Proyecto con un RDS que tiene protección de eliminación habilitada. +`minor release` · 01/08/2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Autodiagnóstico de Cargas de Trabajo** +Con la ayuda de la IA, ahora puedes descubrir de forma rápida y sencilla qué está sucediendo con tus Cargas de Trabajo. Con un solo clic desde la consola, obtendrás un diagnóstico completo. +- **Período de Gracia para Cargas de Trabajo** +Soporte para configurar el período de gracia en las Cargas de Trabajo. +- **Notificaciones de Etiquetas de Costo** +Se agregaron notificaciones para la configuración de etiquetas de costo. +- **Eliminación en Cascada** +Mejoras en el flujo de eliminación en cascada con Dependencias activas. +- **Grupos de Variables Basados en Archivos** +Mejoras en el formulario de Grupos de Variables para tipos de archivo. +- **Selector de Proyectos** +Mejoras en los formularios con selector de Proyectos. +- **Navegación de Registros de Actividad** +Se agregaron enlaces para navegar entre Registros de Actividad y recursos. +- **Barra Lateral** +Mejoras visuales en la barra lateral. +- **Pantalla de Facturación** +Mejoras en la pantalla de facturación. +- **Edición de Dominios** +Posibilidad de modificar dominios en Entornos existentes. +- **Nombres de Variables** +Manejo de la longitud del nombre de la variable en Grupos de Variables. +- **Nombres de Entornos** +Ajustes en los nombres predeterminados de los Entornos. +- **Monitoreo de Dependencias** +Mejoras en el monitoreo de Dependencias. +- **Resoluciones Pequeñas** +Mejoras en la interfaz de usuario para bajas resoluciones o pantallas pequeñas. +- **Variables Modificadas** +Mejoras en el formulario de Grupos de Variables para marcar qué variables fueron modificadas. +- **Puerto de Destino en Servicios Web** +Soporte para configurar el puerto de destino para servicios en Servicios Web. + +--- + +## 🐛 Correcciones + +- **Nombres de Entornos** +Manejo de la longitud del nombre del Entorno. +- **Filtros Persistentes** +Los filtros de Proyecto y Entorno ahora persisten entre pantallas. +- **Iconos de Proyectos** +Iconos mejorados para Proyectos. +- **Complementos con Atributos Personalizados** +Se corrigió la edición de complementos con atributos personalizados. +- **Réplicas de RDS** +Validación de la longitud de las réplicas de RDS. +- **URL de Servicios Web** +Se corrigió la autogeneración de URL al editar un Servicio Web. +- **Selector de Proyectos** +Se corrigió la visibilidad del selector de Proyectos. +- **Formularios de Nodepool** +Se corrigieron errores en los formularios de edición y creación de Nodepool. +- **Transición de Estado** +Se corrigió la transición del estado pendiente a completado. +- **Certificado SSL** +Se corrigieron las alertas para la validación del certificado SSL. +- **Clonación con Versiones** +Se corrigió la clonación con versiones de Dependencias. +- **Correos Electrónicos de Notificación** +Se corrigieron errores visuales en los correos electrónicos de notificación. +- **URL de Clonación** +Se corrigió la URL de Servicios Web en el flujo de clonación. +- **Eliminar Proyecto con RDS** +Se corrigió la eliminación de un Proyecto con un RDS que tiene protección de eliminación habilitada. + +--- diff --git a/content/changelog/es/2026-01-28-version-2.5.0.md b/content/changelog/es/2026-01-28-version-2.5.0.md index aaf20d7d3..def661e30 100644 --- a/content/changelog/es/2026-01-28-version-2.5.0.md +++ b/content/changelog/es/2026-01-28-version-2.5.0.md @@ -1,25 +1,35 @@ --- title: Versión 2.5.0 authors: - - name: Equipo SleakOps + - name: SleakOps Team tags: - release --- -# 🚀 Versión 2.5.0 +`minor release` · 22/01/2026 -🗓️ _22/01/2026_ +--- + +## 🚀 Nuevas funcionalidades +- **Buildkit como Nuevo Motor de Build** +Incorporamos Buildkit como motor principal de build, logrando construcciones de contenedores más rápidas, estables y confiables. Esta mejora incluye la optimización de los flujos de validación y ejecución de builds junto con una migración progresiva desde Kaniko sin interrupciones. +- **Tours Guiados para Editor y Viewer** +Se agregaron recorridos de onboarding para los roles de editor y viewer, facilitando la adopción de funcionalidades clave y la navegación inicial. +- **Finalización de Tours** +Se mejoró la experiencia de los tours incorporando un botón de "Finalizar / Cerrar" en el último paso. -## Nuevas Funcionalidades +--- -- **Buildkit como Nuevo Motor de Build:** Incorporamos Buildkit como motor principal de build, logrando construcciones de contenedores más rápidas, estables y confiables. Esta mejora incluye la optimización de los flujos de validación y ejecución de builds junto con una migración progresiva desde Kaniko sin interrupciones. -- **Tours Guiados para Editor y Viewer:** Se agregaron recorridos de onboarding para los roles de editor y viewer, facilitando la adopción de funcionalidades clave y la navegación inicial. -- **Finalización de Tours:** Se mejoró la experiencia de los tours incorporando un botón de "Finalizar / Cerrar" en el último paso. +## 🐛 Correcciones -## Correcciones de Errores +- **Nombres de Campos en Variable Groups** +Corrección en la visualización de nombres de campos en Variable Groups de tipo archivo para mostrar los valores actuales. +- **Mensajes de Error en Textmode** +Corrección en la visualización de errores de longitud en Variable Groups en modo texto. +- **Creación de Snapshots de RDS** +Mejora en la validación de identificadores de instancia para snapshots, asegurando el uso de caracteres permitidos. +- **Visualización de Logs** +Se corrigió la carga de errores y detalles de logs desde el backend, permitiendo una mejor experiencia de troubleshooting. -- **Nombres de Campos en Variable Groups:** Corrección en la visualización de nombres de campos en Variable Groups de tipo archivo para mostrar los valores actuales. -- **Mensajes de Error en Textmode:** Corrección en la visualización de errores de longitud en Variable Groups en modo texto. -- **Creación de Snapshots de RDS:** Mejora en la validación de identificadores de instancia para snapshots, asegurando el uso de caracteres permitidos. -- **Visualización de Logs:** Se corrigió la carga de errores y detalles de logs desde el backend, permitiendo una mejor experiencia de troubleshooting. +--- diff --git a/content/changelog/es/2026-02-04-version-2.5.1.md b/content/changelog/es/2026-02-04-version-2.5.1.md index 5a18cccfa..3cb6f572c 100644 --- a/content/changelog/es/2026-02-04-version-2.5.1.md +++ b/content/changelog/es/2026-02-04-version-2.5.1.md @@ -1,36 +1,59 @@ --- title: Versión 2.5.1 authors: - - name: Equipo SleakOps + - name: SleakOps Team tags: - release --- -# 🚀 Versión 2.5.1 - -🗓️ _04/02/2026_ - -## Nuevas Funcionalidades - -- **Replicación de VariableGroups:** Ahora podés replicar VariableGroups fácilmente entre múltiples Projectos, permitiendo una distribución más amplia de secretos y recursos compartidos sin configuraciones redundantes. -- **Anotaciones Personalizadas en Pods:** Ahora podés agregar anotaciones personalizadas para pods en cualquier workload soportado (excepto jobs), incluyendo la anotación "karpenter.sh/do-not-disrupt" con explicación y guía integrada, ayudando a optimizar la compatibilidad con clústeres Karpenter. -- **Anotaciones en CronJobs:** Soporte adicional de anotaciones para CronJobs, facilitando la alineación con requisitos operacionales avanzados. -- **Nombre del CronJob Visible:** La interfaz de edición de cronjobs ahora muestra el nombre del cronjob en la parte superior, reduciendo errores al editar múltiples jobs. -- **Aviso al Cambiar Roles:** Se agregó un aviso informativo al editar el rol de un usuario para notificar que los kubeconfigs podrían necesitar reconfiguración, previniendo problemas de acceso después de cambios de rol. -- **Selector de Schema Mejorado:** Se eliminó la opción "None" del selector de schema de servicio, y ahora la visibilidad del schema se muestra en la lista de servicios, ayudando a distinguir rápidamente entre servicios públicos y privados. -- **Dashboard - Dominios:** Ahora se muestra texto más informativo y amigable en lugar de 'Reason:' para las explicaciones de estado de dominio. -- **Valores Personalizados en Addons:** Soporte mejorado para valores personalizados en Addons, asegurando la propagación correcta de valores a los helm releases desplegados (especialmente Grafana y Prometheus). La retención por defecto de Prometheus fue unificada a 90 días, con comentarios de formulario mejorados. -- **Filtro de Estado "Updating":** Se agregó "updating" como opción de filtro en los selectores de estado, permitiendo un mejor monitoreo de workloads. - -## Correcciones de Errores - -- **Filtrado de Servicios en VariableGroup:** Las operaciones PATCH de VariableGroup ya no muestran Servicios sin filtrar; solo aparecen los servicios relevantes del ProjectEnv. -- **Eliminación de Volúmenes:** Las eliminaciones de volúmenes ya no se quedan en estado 'Error while Deleting' o 'Deleting'; la lógica de despliegue asegura una limpieza adecuada. -- **Orden de Ejecución de Builds:** El orden de ejecución de los builds ahora se procesa correctamente, por lo que el historial de builds refleja el orden real de ejecución. -- **Botones de Build:** Los estados de error de builds ahora muestran un botón de "rebuild", y solo muestran un botón de "redeploy" si el build fue exitoso. -- **Scroll en Creación de Dependencias:** El paso final de la creación de dependencias ahora hace scroll correctamente, permitiendo una finalización fluida. -- **Modal de Creación:** Se previno que el modal de creación se cierre y se deshabilitó el botón "Crear" cuando hay errores de validación del formulario para evitar pérdida accidental de datos. -- **Eliminación de Usuarios:** Se corrigieron los mensajes de error al eliminar usuarios que podrían no existir en Chatwoot, previniendo crashes del backend. -- Reglas de VPN/Cuenta: La aplicación de reglas de selección de VPN/cuenta ahora es consistente para todos los roles de usuario durante la creación y edición. -- **Validación de Nombres RFC 1123:** Los nombres en deployments y jobs (incluyendo CronJobs) ahora se validan y corrigen para cumplir con RFC 1123. -- **Eliminación de DB Protegidas:** Eliminar una DB con 'deletion_protection' habilitado ahora funciona como se esperaba y no se queda en estado de reintento. \ No newline at end of file +`patch release` · 04/02/2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Replicación de VariableGroups** +Ahora podés replicar VariableGroups fácilmente entre múltiples Projectos, permitiendo una distribución más amplia de secretos y recursos compartidos sin configuraciones redundantes. +- **Anotaciones Personalizadas en Pods** +Ahora podés agregar anotaciones personalizadas para pods en cualquier workload soportado (excepto jobs), incluyendo la anotación "karpenter.sh/do-not-disrupt" con explicación y guía integrada, ayudando a optimizar la compatibilidad con clústeres Karpenter. +- **Anotaciones en CronJobs** +Soporte adicional de anotaciones para CronJobs, facilitando la alineación con requisitos operacionales avanzados. +- **Nombre del CronJob Visible** +La interfaz de edición de cronjobs ahora muestra el nombre del cronjob en la parte superior, reduciendo errores al editar múltiples jobs. +- **Aviso al Cambiar Roles** +Se agregó un aviso informativo al editar el rol de un usuario para notificar que los kubeconfigs podrían necesitar reconfiguración, previniendo problemas de acceso después de cambios de rol. +- **Selector de Schema Mejorado** +Se eliminó la opción "None" del selector de schema de servicio, y ahora la visibilidad del schema se muestra en la lista de servicios, ayudando a distinguir rápidamente entre servicios públicos y privados. +- **Dashboard - Dominios** +Ahora se muestra texto más informativo y amigable en lugar de 'Reason:' para las explicaciones de estado de dominio. +- **Valores Personalizados en Addons** +Soporte mejorado para valores personalizados en Addons, asegurando la propagación correcta de valores a los helm releases desplegados (especialmente Grafana y Prometheus). La retención por defecto de Prometheus fue unificada a 90 días, con comentarios de formulario mejorados. +- **Filtro de Estado "Updating"** +Se agregó "updating" como opción de filtro en los selectores de estado, permitiendo un mejor monitoreo de workloads. + +--- + +## 🐛 Correcciones + +- **Filtrado de Servicios en VariableGroup** +Las operaciones PATCH de VariableGroup ya no muestran Servicios sin filtrar; solo aparecen los servicios relevantes del ProjectEnv. +- **Eliminación de Volúmenes** +Las eliminaciones de volúmenes ya no se quedan en estado 'Error while Deleting' o 'Deleting'; la lógica de despliegue asegura una limpieza adecuada. +- **Orden de Ejecución de Builds** +El orden de ejecución de los builds ahora se procesa correctamente, por lo que el historial de builds refleja el orden real de ejecución. +- **Botones de Build** +Los estados de error de builds ahora muestran un botón de "rebuild", y solo muestran un botón de "redeploy" si el build fue exitoso. +- **Scroll en Creación de Dependencias** +El paso final de la creación de dependencias ahora hace scroll correctamente, permitiendo una finalización fluida. +- **Modal de Creación** +Se previno que el modal de creación se cierre y se deshabilitó el botón "Crear" cuando hay errores de validación del formulario para evitar pérdida accidental de datos. +- **Eliminación de Usuarios** +Se corrigieron los mensajes de error al eliminar usuarios que podrían no existir en Chatwoot, previniendo crashes del backend. +- **Reglas de VPN/Cuenta** +La aplicación de reglas de selección de VPN/cuenta ahora es consistente para todos los roles de usuario durante la creación y edición. +- **Validación de Nombres RFC 1123** +Los nombres en deployments y jobs (incluyendo CronJobs) ahora se validan y corrigen para cumplir con RFC 1123. +- **Eliminación de DB Protegidas** +Eliminar una DB con 'deletion_protection' habilitado ahora funciona como se esperaba y no se queda en estado de reintento. + +--- diff --git a/content/changelog/es/2026-02-23-version-2.6.0.md b/content/changelog/es/2026-02-23-version-2.6.0.md index 598eb7e10..253cbe0a3 100644 --- a/content/changelog/es/2026-02-23-version-2.6.0.md +++ b/content/changelog/es/2026-02-23-version-2.6.0.md @@ -1,36 +1,69 @@ --- title: Version 2.6.0 -authors: [] +authors: + - name: SleakOps Team tags: - release --- -## Nuevas Funcionalidades - -- **Soporte para EKS 1.33:** SleakOps ahora soporta upgrades de clusters a EKS 1.33, incluyendo actualizaciones de `code-dns`, `kubeproxy` y AMIs de NodePool (tanto Bottlerocket como AL2023). -- **Upgrade de Karpenter a v1.8:** Se actualizó Karpenter de la versión v1.3.2 a v1.8, mejorando el rendimiento y la estabilidad del autoescalado de nodos. -- **Dashboard de Monitoreo de Karpenter:** Se agregó un dashboard dedicado de Karpenter en Grafana, proporcionando visibilidad sobre el comportamiento y las m\u00e9tricas del autoescalado de nodos. -- **Menu Simplificado:** Se reorganizó el sidebar. -- **Nombre al Clonar Environment:** Al clonar un Environment, ahora se genera automáticamente un nombre modificado para evitar conflictos de nombres con el original. -- **Edición de VariableGroup tipo File:** Se mejoró la experiencia de edición de VariableGroups de tipo `file`, ofreciendo un flujo de trabajo más intuitivo. -- **Mejoras de navegación entre Formularios:** Cancelar un formulario ahora redirige al usuario a la página anterior en lugar de volver a la vista de lista del recurso por defecto. -- **Tooltip de Próxima Ejecución de CronJob:** El tooltip de los CronJobs ahora muestra la próxima fecha y hora de ejecución programada. -- **Delegación de Alias DNS por Registro A:** Se agregó soporte para la delegación de alias de dominio mediante registros DNS de tipo A, permitiendo a los usuarios con dominios gestionados fuera de SleakOps delegarlos correctamente. -- **CPU Requests en Prometheus:** Los usuarios ahora pueden definir valores de `request_cpu` en Prometheus junto con los existentes `backend_memory_requests` para un mejor control de la asignación de recursos. -- **Retención de Métricas en Grafana:** Se aumentó el tiempo de retención de métricas en Grafana para mayor disponibilidad de datos históricos. -- **Mejoras en Reportes de Downtime:** Se mejoró la estructura y el logging del ServiceDowntimeReport para un seguimiento más preciso de caídas de servicio de fracciones de segundo. - -## Correcciones de Errores - -- **Selección de Projects en VariableGroup:** Se corrigió la selección de Projects para la replicación de VariableGroups, ahora muestra correctamente solo los Projects que comparten el mismo Cluster. -- **Error Vertical de VariableGroup:** Se resolvió un error de visualización que ocurría al pegar VariableGroups en modo texto. -- **Validación de VariableGroup ENV:** Se corrigió la validación para VariableGroups de tipo ENV en modo texto para prevenir envíados con contenido inválido. -- **Contenido de Archivo en VariableGroup:** Se corrigieron problemas de visualización con contenido de archivo largo en el detalle de VariableGroup. -- **Eliminación de VariableGroup Replicada:** Eliminar un VariableGroup replicado ahora ejecuta correctamente los deploys en todos los Projects asociados, no solo en el principal. -- **Fecha en Monitoring Dependency:** Se corrigió la visualización del selector de fecha en el modulo de Monitoring Dependency para un aná1lisis de métricas adecuado. -- **Error al Cambiar Dominio:** Se resolvió un error al cambiar dominios en un Environment, asegurando la correcta actualización de URLs y creación de releases. -- **Patch de Cluster con Deletion Protection:** La configuración del cluster ahora puede editarse incluso cuando una dependencia RDS tiene `deletion_protection` habilitado. -- **Contraseña de Usuario IAM:** Se corrigió un problema con las contraseñas autogeneradas al crear usuarios de IAM. -- **Deploy de ChartDependency:** Crear o editar ChartDependencies`,` ahora ejecuta correctamente el proceso de deploy. -- **Optimización de Instancias en NodePool:** Se corrigió un problema donde los NodePools creaban instancias `t3a.micro` innecesarias, mejorando la eficiencia en la asignación de recursos. -- **Validación de Tarea de Update CNI:** Se agregó validación para prevenir la ejecución simultánea de tareas duplicadas de actualización de CNI. +`minor release` · February 23, 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Soporte para EKS 1.33** +SleakOps ahora soporta upgrades de clusters a EKS 1.33, incluyendo actualizaciones de `code-dns`, `kubeproxy` y AMIs de NodePool (tanto Bottlerocket como AL2023). +- **Upgrade de Karpenter a v1.8** +Se actualizó Karpenter de la versión v1.3.2 a v1.8, mejorando el rendimiento y la estabilidad del autoescalado de nodos. +- **Dashboard de Monitoreo de Karpenter** +Se agregó un dashboard dedicado de Karpenter en Grafana, proporcionando visibilidad sobre el comportamiento y las métricas del autoescalado de nodos. +- **Menu Simplificado** +Se reorganizó el sidebar. +- **Nombre al Clonar Environment** +Al clonar un Environment, ahora se genera automáticamente un nombre modificado para evitar conflictos de nombres con el original. +- **Edición de VariableGroup tipo File** +Se mejoró la experiencia de edición de VariableGroups de tipo `file`, ofreciendo un flujo de trabajo más intuitivo. +- **Mejoras de navegación entre Formularios** +Cancelar un formulario ahora redirige al usuario a la página anterior en lugar de volver a la vista de lista del recurso por defecto. +- **Tooltip de Próxima Ejecución de CronJob** +El tooltip de los CronJobs ahora muestra la próxima fecha y hora de ejecución programada. +- **Delegación de Alias DNS por Registro A** +Se agregó soporte para la delegación de alias de dominio mediante registros DNS de tipo A, permitiendo a los usuarios con dominios gestionados fuera de SleakOps delegarlos correctamente. +- **CPU Requests en Prometheus** +Los usuarios ahora pueden definir valores de `request_cpu` en Prometheus junto con los existentes `backend_memory_requests` para un mejor control de la asignación de recursos. +- **Retención de Métricas en Grafana** +Se aumentó el tiempo de retención de métricas en Grafana para mayor disponibilidad de datos históricos. +- **Mejoras en Reportes de Downtime** +Se mejoró la estructura y el logging del ServiceDowntimeReport para un seguimiento más preciso de caídas de servicio de fracciones de segundo. + +--- + +## 🐛 Correcciones + +- **Selección de Projects en VariableGroup** +Se corrigió la selección de Projects para la replicación de VariableGroups, ahora muestra correctamente solo los Projects que comparten el mismo Cluster. +- **Error Vertical de VariableGroup** +Se resolvió un error de visualización que ocurría al pegar VariableGroups en modo texto. +- **Validación de VariableGroup ENV** +Se corrigió la validación para VariableGroups de tipo ENV en modo texto para prevenir envíados con contenido inválido. +- **Contenido de Archivo en VariableGroup** +Se corrigieron problemas de visualización con contenido de archivo largo en el detalle de VariableGroup. +- **Eliminación de VariableGroup Replicada** +Eliminar un VariableGroup replicado ahora ejecuta correctamente los deploys en todos los Projects asociados, no solo en el principal. +- **Fecha en Monitoring Dependency** +Se corrigió la visualización del selector de fecha en el modulo de Monitoring Dependency para un aná1lisis de métricas adecuado. +- **Error al Cambiar Dominio** +Se resolvió un error al cambiar dominios en un Environment, asegurando la correcta actualización de URLs y creación de releases. +- **Patch de Cluster con Deletion Protection** +La configuración del cluster ahora puede editarse incluso cuando una dependencia RDS tiene `deletion_protection` habilitado. +- **Contraseña de Usuario IAM** +Se corrigió un problema con las contraseñas autogeneradas al crear usuarios de IAM. +- **Deploy de ChartDependency** +Crear o editar ChartDependencies`,` ahora ejecuta correctamente el proceso de deploy. +- **Optimización de Instancias en NodePool** +Se corrigió un problema donde los NodePools creaban instancias `t3a.micro` innecesarias, mejorando la eficiencia en la asignación de recursos. +- **Validación de Tarea de Update CNI** +Se agregó validación para prevenir la ejecución simultánea de tareas duplicadas de actualización de CNI. + +--- diff --git a/content/changelog/es/2026-03-17-version-2.7.0.md b/content/changelog/es/2026-03-17-version-2.7.0.md deleted file mode 100644 index ca2af43ef..000000000 --- a/content/changelog/es/2026-03-17-version-2.7.0.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Versión 2.7.0 -authors: - - name: SleakOps Team -tags: - - release ---- - -`release menor` · 17 de marzo de 2026 - ---- - -## 🚀 Nuevas funcionalidades - -- **Integración del addon Headlamp con acceso mediante token** -Ahora puedes instalar el IDE Headlamp como un addon y acceder directamente desde SleakOps utilizando autenticación automática por token, eliminando el ingreso manual y mejorando la eficiencia operativa. - -- **Addon Loki v2 con mayor confiabilidad** -Loki v2 ya está disponible como nuevo addon, empleando Grafana Alloy para la recolección de logs e incluyendo importantes mejoras de estabilidad. Se pueden instalar ambos Loki (clásico y v2) en paralelo; por defecto, las consultas priorizarán Loki v2. Se notifica a los usuarios sobre este gran cambio, permitiendo mantener el Loki anterior activo durante el período de migración para retención de datos. - -- **Enlace de Headlamp: acceso autenticado con un click** -El enlace de Headlamp ahora genera y reutiliza automáticamente tokens de acceso, permitiendo entrar a la interfaz de Headlamp desde el listado de addons del cluster de manera directa con los permisos del usuario, sin autenticación manual. - -- **Gestión y pantalla dedicada para tickets de autodiagnóstico** -Los tickets de autodiagnóstico ahora se gestionan mediante un flujo separado, con un inbox propio, drawer expandido para diagnósticos y nueva pantalla de consola para revisar, filtrar y administrar estas incidencias por workload. Esta separación facilita el seguimiento de chequeos de salud y mejora la productividad del equipo. - -- **Visualización del estado deprecado en addons** -Los addons marcados como obsoletos ahora muestran una etiqueta "Deprecated" tanto en el listado como en el detalle, ayudando a planificar migraciones, evitar la instalación de componentes desactualizados y tomar decisiones informadas de upgrade. - -- **Documentación AI-Driven para extender addons rápidamente** -Ahora hay documentación detallada para habilitar la creación e integración acelerada de nuevos addons con flujos de IA. Esta guía cubre tanto EKS como Helm Release, simplificando la gestión de dependencias y extensiones. - -- **Selección de entorno al crear proyecto y acceso rápido con permisos** -Al crear un proyecto, el selector de entorno ahora preselecciona automáticamente el entorno recién creado. El botón de creación rápida junto al selector solo es visible para usuarios con permisos de "Settings", acelerando la configuración y reforzando la seguridad RBAC. - ---- - -## ✨ Mejoras - -- **Integración completa de Dockertron en la creación de proyectos** -Ahora puedes generar un Dockerfile con Dockertron directamente desde el formulario de creación de proyecto. El flujo incluye mayor claridad en la interfaz, ingreso dinámico tipo quiz para GenAI, guardado seguro antes de dockerizar y feedback automático con redirección para una experiencia de onboarding mucho más fluida. - -- **Detección y selección mejorada de proyectos en Dockertron** -Dockertron ahora analiza repositorios completos de GitHub y presenta todos los subproyectos detectados para que decidas cuál deseas contenerizar. Esto reduce pasos manuales y potencia la automatización, especialmente en monorepositorios. - -- **Notificación al finalizar la dockerización en backend** -Ahora recibirás una notificación en SleakOps apenas finalice un proceso de dockerización iniciado con Dockertron, informando tanto éxitos como errores, para que no debas consultar manualmente el estado. - -- **Mejoras en la lista y flujo de trabajo de proyectos con Dockertron** -La interfaz de Dockertron en Projects ahora muestra botones de acción más claros, mejor orden de campos, botones más visibles y una UI desacoplada del layout anterior para una experiencia más ágil e intuitiva. - -- **API: listado completo de procesos Dockertron** -La API de backend expone ahora el listado completo de procesos Dockertron asociados a tus proyectos, facilitando el seguimiento y auditoría de todas las dockerizaciones automatizadas. - -- **Visibilidad de upgrades programados de clúster en Dashboard** -Los clústeres con upgrades pendientes o programados ahora muestran un indicador visual destacado directamente en la card del Dashboard, alertando sobre mantenimientos y mejorando la planificación operativa. - -- **Mejoras en la card "Get Access"** -Se analizaron y aplicaron mejoras en la card "Get Access" del Dashboard con base en las últimas propuestas de UX, optimizando los flujos de acceso para el usuario final. - -- **Editor avanzado de YAML para valores personalizados en addons** -El campo de valores YAML personalizados en la configuración de addons ahora utiliza un editor de código completo, permitiendo mejor legibilidad, indentación y menor riesgo de errores respecto al input textual previo. - -- **Indicadores claros de campos obligatorios en formularios** -Todos los formularios genéricos muestran ahora asteriscos u otro indicador visual junto al label de los campos obligatorios, facilitando completar la información requerida y reduciendo errores en envíos. - ---- - -## 🐛 Correcciones - -- **No se truncan los nombres de recursos al crear CronJobs** -Ahora los CronJobs con nombres extensos de proyecto y entorno mantienen el nombre completo del recurso, evitando sobreescrituras o fallos de despliegue. - -- **Estado correcto para alias de dominio de web services eliminados** -El Dashboard ahora refleja de manera precisa el estado de los alias de servicios web al eliminar dominios, evitando configuraciones inconsistentes. - -- **Redirección correcta tras crear proyecto con Dockertron** -Al finalizar la creación de un proyecto a través de Dockertron, ahora se redirige correctamente a la pantalla de ejecuciones de Dockertron mostrando el proyecto recién creado. - -- **Reseteo de filtros al cambiar de cuenta** -Los filtros de proyecto y entorno se limpian correctamente al cambiar de cuenta, evitando que filtros previos generen vistas inconsistentes o "pantallas vacías". - -- **Cambio de dominio en un entorno ya no produce errores 400** -Ahora puedes cambiar el dominio de un environment sin errores 400 y las URLs de los servicios se actualizan correctamente, reconociéndose como cambios válidos para un nuevo release. - -- **Corrección de subnet para read replica pública de Aurora** -Las replicas públicas de Aurora se aprovisionan ahora en la subnet correcta, resolviendo los problemas de conectividad reportados. - -- **Desbloqueo innecesario por deletion protection en apagado de clúster** -El apagado de clústeres ya no es bloqueado erróneamente por la protección de borrado en dependencias, permitiendo apagar clusters sin trabas. - -- **Error de transición de projectEnv al encender clúster resuelto** -Encender un clúster ahora es confiable incluso cuando un entorno de proyecto quedó en estado transitorio, evitando bloqueos debidos a operaciones de volúmenes. - ---- From c3c8acbc84f07091053a46416685f8559a68927f Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:08:05 -0300 Subject: [PATCH 29/45] Publish version 2.7.0 2026-03-17 en --- .../changelog/en/2026-03-17-version-2.7.0.md | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 content/changelog/en/2026-03-17-version-2.7.0.md diff --git a/content/changelog/en/2026-03-17-version-2.7.0.md b/content/changelog/en/2026-03-17-version-2.7.0.md new file mode 100644 index 000000000..d9fb6ae28 --- /dev/null +++ b/content/changelog/en/2026-03-17-version-2.7.0.md @@ -0,0 +1,74 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 17, 2026 + +--- + +## 🚀 New Features + +- **Install and access Headlamp addon with integrated authentication** + You can now install the Headlamp IDE addon and access it directly from SleakOps using automatic token-based authentication. This feature allows seamless, secure launch of the Headlamp UI from the addons catalog without manual credential entry. + +- **Loki V2 addon: Next-generation logs with dual deployment** + A new Loki V2 addon is available, powered by Grafana Alloy for improved reliability and compatibility. Both old and new Loki addons can be installed in parallel; the new version becomes the default log datasource in Grafana. A notification guides you for a smooth transition, ensuring persistent log history during migration. + +- **Dedicated inbox and UI for auto-diagnostic tickets** + Auto-diagnostic tickets are now processed in a dedicated inbox, improving support tracking and clarity. There's a new diagnostics screen accessible from workloads, displaying only diagnostic tickets filtered by resource. The diagnostic flow opens in an expandable drawer, providing a seamless and consistent experience distinct from support tickets. + +--- + +## ✨ Improvements + +- **Enhanced Dockertron experience in project creation** + The Dockertron integration in project creation now lets you generate Dockerfiles via AI directly from the form. UI adjustments improve usability: key actions are clearer, form order is optimized, and visual feedback ensures a fast, guided setup for new projects. + +- **Project environment selection and improved navigation** + When creating a new environment from the Project form, the recently created environment will now be automatically selected, streamlining the multi-step project setup. Access to quickly create environments is restricted to users with the right permissions, increasing security. + +- **Cluster upgrade scheduling visibility in the dashboard** + Clusters scheduled for upgrades now clearly display their upgrade status directly on the dashboard, with visual markers and badges. This improves operational planning and reduces the risk of missed or delayed upgrades. + +- **Visual labeling of deprecated addons** + Addons marked as deprecated now show a clear "Deprecated" tag in both the addon list and details screens, helping users avoid obsolete deployments and plan migrations efficiently. + +- **Code editor for Custom YAML values in addon configuration** + The Custom YAML input for advanced addon configuration now uses a dedicated code editor with syntax highlighting and multiline support, replacing the basic text field for a more comfortable and reliable editing experience. + +- **Mandatory fields now visibly marked in all forms** + All mandatory fields across generic forms are now clearly indicated (with an asterisk), making the required information unmistakable and reducing form submission errors. + +- **Enhanced Dockertron project/process visualization and workflow** + Dockertron now displays a list of detected projects from a GitHub repository, enabling users to select which ones to containerize. The process includes clear confirmation, improved navigation, and notification when containerization completes, closing the feedback loop. + +--- + +## 🐛 Bug Fixes + +- **Clear filters when switching accounts** + Switching accounts now automatically resets project and environment filters, preventing confusing empty screens or inconsistent data when moving between organizations. + +- **Correct redirect after project creation with Dockertron** + After creating a project using Dockertron, users are now properly redirected to the Dockertron execution screen with the relevant project pre-loaded. + +- **Resolved resource name truncation issue** + Resource creation now preserves the full names for each resource, preventing unwanted truncation and ensuring all created resources receive their correct, unique identifiers. + +- **Correct alias state display for deleted web services** + The dashboard now accurately updates the status of deleted web service aliases, reflecting their removal as expected. + +- **Fix for error 400 when changing environment domains** + Changing the domain in an environment now correctly updates service URLs and triggers the necessary deployments, eliminating previous errors and supporting seamless changes. + +- **Proper validation when shutting down clusters with dependencies** + Fixed the shutdown process to allow clusters to power off even when dependent resources have deletion protection, resolving issues that blocked cluster operations. + +- **Reliable cluster start after project or environment state transition errors** + Clusters can now be started reliably even after interrupted resource state transitions, eliminating previous blockers linked to project environment errors. + +--- From 4e58f35582b4d9b72c10359286282181aa1af604 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:08:06 -0300 Subject: [PATCH 30/45] Publish version 2.7.0 2026-03-17 esp --- .../changelog/es/2026-03-17-version-2.7.0.md | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 content/changelog/es/2026-03-17-version-2.7.0.md diff --git a/content/changelog/es/2026-03-17-version-2.7.0.md b/content/changelog/es/2026-03-17-version-2.7.0.md new file mode 100644 index 000000000..2976e071f --- /dev/null +++ b/content/changelog/es/2026-03-17-version-2.7.0.md @@ -0,0 +1,74 @@ +--- +title: Versión 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`release menor` · 17 de marzo de 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Instala y accede al addon Headlamp con autenticación integrada** + Ahora puedes instalar el addon Headlamp IDE y acceder directamente desde SleakOps utilizando autenticación automática con token. Esta funcionalidad permite lanzar Headlamp desde el catálogo de addons sin ingresar credenciales manualmente y de forma segura. + +- **Addon Loki V2: nueva generación de logs y despliegue dual** + Está disponible el nuevo addon Loki V2, impulsado por Grafana Alloy para mayor confiabilidad y compatibilidad. Es posible instalar tanto el viejo como el nuevo Loki en paralelo; la nueva versión es la fuente de logs por defecto en Grafana. Se notifica a los usuarios sobre la transición para mantener el historial de logs durante la migración. + +- **Inbox y pantalla dedicada para tickets de autodiagnóstico** + Los tickets de autodiagnóstico ahora se procesan en un inbox exclusivo, mejorando la gestión y visibilidad del soporte. Hay una nueva pantalla de autodiagnósticos accesible desde los workloads, que muestra solo tickets de autodiagnóstico filtrados por recurso. El flujo se abre en un drawer expandible, asegurando una experiencia clara e independiente de los tickets de soporte. + +--- + +## ✨ Mejoras + +- **Mejor experiencia Dockertron en la creación de proyectos** + La integración de Dockertron en la creación de proyectos ahora permite generar Dockerfiles usando IA directamente desde el formulario. Los ajustes en la interfaz mejoran la usabilidad: las acciones son más claras, el orden de los campos es óptimo y el feedback visual guía el proceso ágil de creación. + +- **Selección de environment y navegación optimizada en proyectos** + Al crear un nuevo environment desde el formulario de Proyectos, el entorno recién creado se selecciona automáticamente, agilizando la configuración de proyectos en varios pasos. El acceso para crear entornos rápidamente solo está disponible para usuarios con permisos adecuados, reforzando la seguridad. + +- **Visibilidad de planes de upgrade en clusters desde el dashboard** + Los clusters con upgrades programados muestran un indicador visual directamente en el dashboard, con badges y resaltados. Esto mejora la planificación operativa y reduce olvidos o atrasos en los upgrades. + +- **Etiquetado visual para addons en estado deprecated** + Los addons marcados como deprecated ahora muestran una etiqueta "Deprecated" en la lista y el detalle, ayudando a evitar despliegues obsoletos y facilitando el plan de migración. + +- **Editor de código para valores YAML en configuración avanzada de addons** + La edición avanzada de YAML en la configuración de addons utiliza ahora un editor especializado con resaltado de sintaxis y soporte multilinea, reemplazando el campo de texto simple para una experiencia más cómoda y fiable. + +- **Campos obligatorios visiblemente marcados en todos los formularios** + Todos los campos obligatorios en formularios genéricos se indican claramente con un asterisco, facilitando la identificación de información requerida y reduciendo errores en el envío. + +- **Visualización y flujo de procesos/proyectos mejorados en Dockertron** + Dockertron ahora muestra la lista de proyectos detectados desde un repositorio de GitHub, permitiendo seleccionar cuáles contenerizar. El flujo incluye confirmación clara, mejor navegación y notificación al finalizar, completando así el ciclo de automatización. + +--- + +## 🐛 Correcciones + +- **Limpieza automática de filtros al cambiar de cuenta** + Al cambiar de cuenta, los filtros de proyecto y entorno se reinician automáticamente, evitando datos inconsistentes y pantallas vacías al moverse entre organizaciones. + +- **Redirección correcta tras crear proyecto con Dockertron** + Luego de crear un proyecto usando Dockertron, ahora se redirige correctamente a la pantalla de ejecuciones de Dockertron con el proyecto relevante precargado. + +- **Corrección en la truncación de nombres de recursos** + La creación de recursos ahora respeta el nombre completo, impidiendo truncamientos y garantizando que cada recurso tenga su identificador único e informado correctamente. + +- **Actualización correcta del estado de alias eliminados** + El dashboard ahora muestra adecuadamente el estado de los alias de servicios eliminados, reflejando su remoción como corresponde. + +- **Solución al error 400 al cambiar el dominio de un environment** + Al modificar el dominio de un environment, se actualizan las URLs y se ejecutan los despliegues necesarios, eliminando errores previos y permitiendo cambios sin fricción. + +- **Validación adecuada para apagado de clusters con dependencias** + Se corrigió el proceso de apagado de clusters para permitir la operación incluso si existen dependencias protegidas, resolviendo los bloqueos de operación. + +- **Encendido de cluster confiable tras errores de transición** + Los clusters ahora pueden volver a iniciarse aunque hayan ocurrido errores o interrupciones en la transición de estados de proyectos o entornos. + +--- From be5d69f9115d23531c33e7a380bcd34aed0ff443 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 22:37:49 -0300 Subject: [PATCH 31/45] Publish version 2.8.0 2026-03-26 en --- .../changelog/en/2026-03-26-version-2.8.0.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 content/changelog/en/2026-03-26-version-2.8.0.md diff --git a/content/changelog/en/2026-03-26-version-2.8.0.md b/content/changelog/en/2026-03-26-version-2.8.0.md new file mode 100644 index 000000000..184ac344b --- /dev/null +++ b/content/changelog/en/2026-03-26-version-2.8.0.md @@ -0,0 +1,62 @@ +--- +title: Version 2.8.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`minor release` · March 26, 2026 + +--- + +## 🚀 New Features + +- **Support for Bitbucket and GitLab repositories in Dockertron** + You can now dockerize projects from Bitbucket and GitLab in addition to GitHub using Dockertron, streamlining multi-platform CI/CD pipelines. + +- **Preset Application Catalog** + Browse and deploy preconfigured applications such as n8n and Django directly from the new preset catalog screen. + +--- + +## ✨ Improvements + +- **Direct deep linking to resource details** + You can now access the detail view for workloads, dependencies, projects, variable groups, builds, and deployments directly via URL parameters, with automatic display of account context badges in each drawer. + +- **Cross-navigation and context badges in deployment and build views** + Deployment detail screens now show the deployment reason and allow one-click navigation directly to the associated build drawer. Build detail screens have a refreshed title, display up to three recent deployments in a rich table, and provide a convenient link to view all related deployments. + +- **Unified detail access from table resource names** + In any table, clicking on a resource name now opens its detail view, providing a consistent and intuitive navigation experience across the platform. + +- **Improved navigation from Activity Log** + Links in the Activity Log now take you directly to the detailed view of the affected resource instead of just the general listing, reducing navigation steps and improving troubleshooting. + +- **Quick navigation from any resource or user to filtered Activity Log** + Instantly audit activity for a specific resource or user by clicking new options that filter the Activity Log to the relevant context from any detail view or user list. + +- **Streamlined dependency messaging in Grafana Addon edits** + The warning message about dependency installation now appears only when creating an Addon in Grafana, preventing confusion during parameter edits and improving clarity. + +--- + +## 🐛 Bug Fixes + +- **Correct redirection after resolving notifications** + Fixed an issue where clicking 'Resolve' in notifications did not redirect users as expected. You are now accurately redirected after resolving a notification. + +- **Improved command autocomplete behavior** + Autocomplete no longer automatically fills commands when you fully clear an entry, ensuring a smoother command entry experience. + +- **Accurate progress display in Nodepools** + Progress bars for Nodepools now properly cap at 100%, preventing incorrect display of CPU or other metrics above their maximum. + +- **Reliable field validations in advanced Healthcheck settings** + Required field validations are now correctly enforced in advanced Healthcheck configuration forms, reducing the risk of submitting incomplete or invalid data. + +- **Consistent tooltips in Activity Log** + All tooltips in the Activity Log now display the correct information, eliminating empty or misleading tooltips and improving event clarity. + +--- From 6e76bd8ac0126297ad537986b0b7f1fffb2ad85f Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Fri, 20 Mar 2026 22:37:50 -0300 Subject: [PATCH 32/45] Publish version 2.8.0 2026-03-26 esp --- .../changelog/es/2026-03-26-version-2.8.0.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 content/changelog/es/2026-03-26-version-2.8.0.md diff --git a/content/changelog/es/2026-03-26-version-2.8.0.md b/content/changelog/es/2026-03-26-version-2.8.0.md new file mode 100644 index 000000000..bee2f7268 --- /dev/null +++ b/content/changelog/es/2026-03-26-version-2.8.0.md @@ -0,0 +1,62 @@ +--- +title: Versión 2.8.0 +authors: + - name: SleakOps Team +tags: + - release +--- + +`lanzamiento menor` · 26 de marzo de 2026 + +--- + +## 🚀 Nuevas funcionalidades + +- **Soporte para repositorios Bitbucket y GitLab en Dockertron** + Ahora puedes dockerizar proyectos de Bitbucket y GitLab, además de GitHub, usando Dockertron, lo que facilita la integración de pipelines CI/CD multiplataforma. + +- **Catálogo de aplicaciones preconfiguradas** + Explora y despliega aplicaciones predefinidas como n8n y Django directamente desde la nueva pantalla de catálogo de aplicaciones preconfiguradas. + +--- + +## ✨ Mejoras + +- **Acceso directo a detalles de recursos mediante URL** + Ahora puedes acceder al detalle de workloads, dependencias, proyectos, grupos de variables, builds y deployments directamente desde la URL, mostrando automáticamente el badge de contexto de cuenta en cada drawer. + +- **Navegación cruzada y badges en vistas de deployments y builds** + Las pantallas de detalle de despliegues muestran el motivo del deployment y permiten navegar con un solo clic al build asociado. Las vistas de builds ahora incluyen un nuevo título, muestran hasta tres deployments recientes en una tabla enriquecida y ofrecen un enlace rápido para ver todos los despliegues relacionados. + +- **Apertura unificada de detalles desde nombres en tablas** + Al hacer clic en el nombre de cualquier recurso dentro de cualquier tabla, ahora se abre el detalle correspondiente, estandarizando y agilizando la navegación en toda la plataforma. + +- **Mejora la navegación desde el Activity Log** + Los enlaces en el registro de actividades ahora te llevan directamente al detalle del recurso afectado, evitando pasos innecesarios y facilitando el troubleshooting. + +- **Acceso rápido desde cualquier recurso o usuario al Activity Log filtrado** + Puedes auditar al instante la actividad de un recurso o usuario específico, usando nuevas acciones que filtran el Activity Log según el contexto directamente desde cualquier detalle o listado de usuarios. + +- **Mensaje de dependencias más claro al editar Addons en Grafana** + El mensaje de advertencia sobre instalación de dependencias se muestra solo al crear un Addon en Grafana, evitando confusión durante la edición de parámetros y mejorando la claridad visual. + +--- + +## 🐛 Correcciones + +- **Redirección correcta al resolver notificaciones** + Se solucionó un problema donde al hacer clic en 'Resolver' en las notificaciones, los usuarios no eran redirigidos correctamente. Ahora la redirección funciona tal como se espera. + +- **Mejor comportamiento del autocompletado de comandos** + El autocompletado ya no completa automáticamente tras limpiar un comando, mejorando la experiencia al ingresar comandos. + +- **Visualización precisa del progreso en Nodepools** + Las barras de progreso de los Nodepools ahora se limitan correctamente al 100%, evitando mostrar valores de CPU u otros recursos por encima de su máximo. + +- **Validaciones obligatorias en configuraciones avanzadas de Healthcheck** + Ahora se aplican correctamente las validaciones de campos requeridos en los formularios avanzados de configuración de Healthcheck, reduciendo errores de datos incompletos o inválidos. + +- **Tooltips consistentes en el Activity Log** + Todos los tooltips en el registro de actividades muestran la información correcta, eliminando los vacíos o confusos y mejorando la claridad de los eventos. + +--- From 87cbcdca89985a73e95ff9284819aa9e23ca5340 Mon Sep 17 00:00:00 2001 From: Matias Izquierdo Date: Wed, 1 Apr 2026 16:27:20 -0300 Subject: [PATCH 33/45] chore: untrack generated files and fix install --- Makefile | 2 +- changelog/2023-08-23-V1.0.0.md | 28 - changelog/2023-08-29-V1.0.1.md | 18 - changelog/2023-09-04-V1.0.2.md | 22 - changelog/2023-09-25-V1.0.3.md | 23 - changelog/2023-10-11-V1.0.4.md | 23 - changelog/2023-10-27-V1.0.5.md | 17 - changelog/2023-11-06-V1.1.0.md | 25 - changelog/2023-12-05-V1.1.1.md | 18 - changelog/2024-01-05-V1.2.0.md | 26 - changelog/2024-01-12-V1.2.1.md | 22 - changelog/2024-01-25-V1.2.2.md | 22 - changelog/2024-02-05-V1.2.3.md | 21 - changelog/2024-02-15-V1.2.4.md | 22 - changelog/2024-03-01-V1.3.0.md | 28 - changelog/2024-03-06-V1.4.0.md | 25 - changelog/2024-04-11-V1.4.1.md | 24 - changelog/2024-04-25-V1.4.2.md | 21 - changelog/2024-05-13-V1.4.3.md | 25 - changelog/2024-05-23-V1.5.0.md | 27 - changelog/2024-06-24-V1.5.1.md | 21 - changelog/2024-08-12-V1.6.0.md | 28 - changelog/2024-08-22-V1.6.1.md | 22 - changelog/2024-09-19-V1.6.2.md | 24 - changelog/2024-09-27-V1.6.3.md | 20 - changelog/2024-10-14-V1.7.0.md | 23 - changelog/2024-10-30-V1.7.1.md | 22 - changelog/2024-11-05-V1.7.2.md | 23 - changelog/2024-11-14-V1.7.3.md | 22 - changelog/2024-12-05-V1.7.4.md | 23 - changelog/2024-12-09-V1.7.5.md | 17 - changelog/2025-01-06-V1.7.6.md | 25 - changelog/2025-02-05-V1.7.7.md | 25 - changelog/2025-02-10-V1.7.8.md | 20 - changelog/2025-02-17-V1.7.9.md | 24 - changelog/2025-04-01-V1.7.10.md | 30 - changelog/2025-04-24-V1.7.11.md | 26 - changelog/2025-05-14-V1.7.12.md | 23 - changelog/2025-06-02-V1.7.13.md | 27 - changelog/2025-06-26-V1.7.14.md | 27 - changelog/2025-07-07-V1.7.15.md | 27 - changelog/2025-07-21-V1.7.16.md | 22 - changelog/2025-10-01-V2.0.0.md | 37 - changelog/2025-10-15-V2.0.1.md | 35 - changelog/2025-11-10-V2.1.0.md | 39 - changelog/2025-11-13-V2.2.0.md | 23 - changelog/2025-11-18-V2.3.0.md | 28 - changelog/2025-12-01-V2.3.1.md | 30 - changelog/2025-12-19-V2.3.2.md | 44 - docs/cluster/access-cluster.mdx | 77 -- docs/cluster/addons/ebs.mdx | 58 -- docs/cluster/addons/efs.mdx | 66 -- docs/cluster/addons/grafana.mdx | 95 -- docs/cluster/addons/index.mdx | 46 - docs/cluster/addons/kubecost.mdx | 74 -- docs/cluster/addons/loki.mdx | 67 -- docs/cluster/addons/otel.mdx | 113 --- docs/cluster/addons/prometheus.mdx | 40 - docs/cluster/index.mdx | 196 ---- docs/cluster/nodepools/creating-nodepool.mdx | 45 - docs/cluster/nodepools/index.mdx | 94 -- docs/cluster/nodepools/instance-types.mdx | 84 -- docs/cluster/nodepools/managing-nodepool.mdx | 52 -- docs/cluster/shutdown-cluster.mdx | 62 -- docs/connect_to_git.mdx | 232 ----- docs/domain/delegation.mdx | 466 ---------- docs/domain/index.mdx | 430 --------- docs/domain/setup.mdx | 109 --- docs/environment/index.mdx | 81 -- docs/gettingstarted.mdx | 32 - docs/index.mdx | 151 ---- docs/network/index.mdx | 70 -- docs/project/access_config.mdx | 73 -- docs/project/build/build.mdx | 51 -- docs/project/build_resources.mdx | 111 --- docs/project/chart/chart_dependencies.mdx | 120 --- docs/project/chart/extra_templates.mdx | 122 --- docs/project/chart/index.mdx | 95 -- docs/project/configure_your_dockerfile.mdx | 79 -- docs/project/dependency/aurora-mysql-aws.mdx | 158 ---- .../dependency/aurora-postgresql-aws.mdx | 152 ---- docs/project/dependency/index.mdx | 110 --- docs/project/dependency/mariadb-aws.mdx | 152 ---- docs/project/dependency/memcached-aws.mdx | 105 --- docs/project/dependency/msk-aws.mdx | 147 --- docs/project/dependency/mysql-aws.mdx | 194 ---- docs/project/dependency/opensearch-aws.mdx | 76 -- docs/project/dependency/oracle-aws.mdx | 159 ---- docs/project/dependency/postgresql-aws.mdx | 193 ---- docs/project/dependency/redis-aws.mdx | 82 -- docs/project/dependency/s3bucket-aws.mdx | 139 --- docs/project/dependency/sqs-aws.mdx | 89 -- docs/project/deployment/index.mdx | 49 - .../project/deployment/more_on_deployment.mdx | 35 - docs/project/deployment/release.mdx | 37 - docs/project/dockertron.mdx | 266 ------ docs/project/index.mdx | 215 ----- docs/project/vargroup/index.mdx | 187 ---- docs/project/volumes.mdx | 61 -- docs/project/workload/cronjob.mdx | 87 -- docs/project/workload/hook.mdx | 84 -- docs/project/workload/index.mdx | 75 -- docs/project/workload/job.mdx | 106 --- docs/project/workload/webservice.mdx | 269 ------ docs/project/workload/worker.mdx | 84 -- docs/provider/accounts.mdx | 69 -- docs/provider/common-errors.mdx | 53 -- docs/provider/deleting-a-provider.mdx | 52 -- docs/provider/index.mdx | 92 -- docs/provider/schemas.mdx | 52 -- docs/responsability-model.mdx | 12 - docs/user/aws_console_authentication.mdx | 67 -- docs/user/index.mdx | 110 --- docs/user/vpn.mdx | 41 - .../2023-08-23-V1.0.0.md | 28 - .../2023-08-29-V1.0.1.md | 17 - .../2023-09-04-V1.0.2.md | 22 - .../2023-09-25-V1.0.3.md | 23 - .../2023-10-11-V1.0.4.md | 23 - .../2023-10-27-V1.0.5.md | 17 - .../2023-11-06-V1.1.0.md | 25 - .../2023-12-05-V1.1.1.md | 18 - .../2024-01-05-V1.2.0.md | 26 - .../2024-01-12-V1.2.1.md | 23 - .../2024-01-25-V1.2.2.md | 22 - .../2024-02-05-V1.2.3.md | 21 - .../2024-02-15-V1.2.4.md | 23 - .../2024-03-01-V1.3.0.md | 28 - .../2024-03-06-V1.4.0.md | 26 - .../2024-04-11-V1.4.1.md | 25 - .../2024-04-25-V1.4.2.md | 22 - .../2024-05-13-V1.4.3.md | 26 - .../2024-05-23-V1.5.0.md | 28 - .../2024-06-24-V1.5.1.md | 22 - .../2024-08-12-V1.6.0.md | 29 - .../2024-08-22-V1.6.1.md | 23 - .../2024-09-19-V1.6.2.md | 25 - .../2024-09-27-V1.6.3.md | 21 - .../2024-10-14-V1.7.0.md | 24 - .../2024-10-30-V1.7.1.md | 23 - .../2024-11-05-V1.7.2.md | 23 - .../2024-11-14-V1.7.3.md | 22 - .../2024-12-05-V1.7.4.md | 23 - .../2024-12-09-V1.7.5.md | 17 - .../2025-01-06-V1.7.6.md | 25 - .../2025-02-05-V1.7.7.md | 25 - .../2025-02-10-V1.7.8.md | 20 - .../2025-02-17-V1.7.9.md | 24 - .../2025-04-01-V1.7.10.md | 30 - .../2025-04-24-V1.7.11.md | 26 - .../2025-05-14-V1.7.12.md | 23 - .../2025-06-02-V1.7.13.md | 27 - .../2025-06-26-V1.7.14.md | 26 - .../2025-07-07-V1.7.15.md | 26 - .../2025-07-21-V1.7.16.md | 21 - .../2025-10-01-V2.0.0.md | 37 - .../2025-10-15-V2.0.1.md | 34 - .../2025-11-10-V2.1.0.md | 39 - .../2025-11-13-V2.2.0.md | 23 - .../2025-11-18-V2.3.0.md | 25 - .../2025-12-01-V2.3.1.md | 27 - .../2025-12-19-V2.3.2.md | 47 - .../options.json | 14 - .../current/basicconcepts.mdx | 43 - .../current/changelog.mdx | 838 ------------------ .../current/cli.mdx | 204 ----- .../current/cluster/_category_.json | 4 - .../current/cluster/access-cluster.mdx | 75 -- .../current/cluster/addons.mdx | 45 - .../current/cluster/addons/ebs.mdx | 58 -- .../current/cluster/addons/efs.mdx | 66 -- .../current/cluster/addons/grafana.mdx | 95 -- .../current/cluster/addons/index.mdx | 46 - .../current/cluster/addons/kubecost.mdx | 71 -- .../current/cluster/addons/loki.mdx | 67 -- .../current/cluster/addons/otel.mdx | 113 --- .../current/cluster/addons/prometheus.mdx | 40 - .../current/cluster/index.mdx | 185 ---- .../cluster/nodepools/creating-nodepool.mdx | 45 - .../current/cluster/nodepools/index.mdx | 92 -- .../cluster/nodepools/instance-types.mdx | 84 -- .../cluster/nodepools/managing-nodepool.mdx | 50 -- .../current/cluster/shutdown-cluster.mdx | 62 -- .../current/connect_to_git.mdx | 235 ----- .../current/domain/delegation.mdx | 467 ---------- .../current/domain/index.mdx | 423 --------- .../current/domain/setup.mdx | 104 --- .../current/environment/index.mdx | 85 -- .../current/gettingstarted.mdx | 33 - .../current/index.mdx | 125 --- .../current/network/index.mdx | 71 -- .../current/project/_category_.json | 4 - .../current/project/access_config.mdx | 73 -- .../current/project/build/build.mdx | 51 -- .../current/project/build/index.mdx | 88 -- .../current/project/build_resources.mdx | 111 --- .../project/chart/chart_dependencies.mdx | 118 --- .../current/project/chart/extra_templates.mdx | 122 --- .../current/project/chart/index.mdx | 98 -- .../project/configure_your_dockerfile.mdx | 73 -- .../project/dependency/_category_.json | 5 - .../project/dependency/aurora-mysql-aws.mdx | 158 ---- .../dependency/aurora-postgresql-aws.mdx | 152 ---- .../current/project/dependency/index.mdx | 173 ---- .../project/dependency/mariadb-aws.mdx | 152 ---- .../project/dependency/memcached-aws.mdx | 105 --- .../current/project/dependency/msk-aws.mdx | 147 --- .../current/project/dependency/mysql-aws.mdx | 193 ---- .../project/dependency/opensearch-aws.mdx | 76 -- .../project/dependency/postgresql-aws.mdx | 193 ---- .../current/project/dependency/redis-aws.mdx | 82 -- .../project/dependency/s3bucket-aws.mdx | 137 --- .../current/project/dependency/sqs-aws.mdx | 95 -- .../project/deployment/_category_.json | 5 - .../current/project/deployment/index.mdx | 49 - .../project/deployment/more_on_deployment.mdx | 35 - .../current/project/deployment/release.mdx | 37 - .../current/project/dockertron.mdx | 266 ------ .../current/project/index.mdx | 214 ----- .../current/project/vargroup/_category_.json | 4 - .../current/project/vargroup/index.mdx | 184 ---- .../current/project/volumes.mdx | 64 -- .../current/project/workload/_category_.json | 4 - .../current/project/workload/cronjob.mdx | 86 -- .../current/project/workload/hook.mdx | 82 -- .../current/project/workload/index.mdx | 75 -- .../current/project/workload/job.mdx | 97 -- .../current/project/workload/webservice.mdx | 270 ------ .../current/project/workload/worker.mdx | 83 -- .../current/provider/_category_.json | 4 - .../current/provider/accounts.mdx | 69 -- .../current/provider/common-errors.mdx | 53 -- .../current/provider/deleting-a-provider.mdx | 52 -- .../current/provider/index.mdx | 92 -- .../current/provider/schemas.mdx | 51 -- .../current/provider/sidebar.js | 1 - .../quickstart/django_celery/index.mdx | 414 --------- .../current/quickstart/n8n/index.mdx | 475 ---------- .../current/responsability-model.mdx | 12 - .../current/user/_category_.json | 4 - .../user/aws_console_authentication.mdx | 67 -- .../current/user/index.mdx | 110 --- .../current/user/vpn.mdx | 41 - tutorials/config-aws-waf.mdx | 105 --- tutorials/dashboard-loki-not-responding.mdx | 89 -- tutorials/django-celery.mdx | 486 ---------- tutorials/install-keda.mdx | 120 --- tutorials/make-rds-public.mdx | 151 ---- tutorials/n8n-worker.mdx | 499 ----------- tutorials/s3-batch.mdx | 96 -- tutorials/s3-replication.mdx | 172 ---- tutorials/third-party-integration-vpn.mdx | 179 ---- 252 files changed, 1 insertion(+), 20788 deletions(-) delete mode 100644 changelog/2023-08-23-V1.0.0.md delete mode 100644 changelog/2023-08-29-V1.0.1.md delete mode 100644 changelog/2023-09-04-V1.0.2.md delete mode 100644 changelog/2023-09-25-V1.0.3.md delete mode 100644 changelog/2023-10-11-V1.0.4.md delete mode 100644 changelog/2023-10-27-V1.0.5.md delete mode 100644 changelog/2023-11-06-V1.1.0.md delete mode 100644 changelog/2023-12-05-V1.1.1.md delete mode 100644 changelog/2024-01-05-V1.2.0.md delete mode 100644 changelog/2024-01-12-V1.2.1.md delete mode 100644 changelog/2024-01-25-V1.2.2.md delete mode 100644 changelog/2024-02-05-V1.2.3.md delete mode 100644 changelog/2024-02-15-V1.2.4.md delete mode 100644 changelog/2024-03-01-V1.3.0.md delete mode 100644 changelog/2024-03-06-V1.4.0.md delete mode 100644 changelog/2024-04-11-V1.4.1.md delete mode 100644 changelog/2024-04-25-V1.4.2.md delete mode 100644 changelog/2024-05-13-V1.4.3.md delete mode 100644 changelog/2024-05-23-V1.5.0.md delete mode 100644 changelog/2024-06-24-V1.5.1.md delete mode 100644 changelog/2024-08-12-V1.6.0.md delete mode 100644 changelog/2024-08-22-V1.6.1.md delete mode 100644 changelog/2024-09-19-V1.6.2.md delete mode 100644 changelog/2024-09-27-V1.6.3.md delete mode 100644 changelog/2024-10-14-V1.7.0.md delete mode 100644 changelog/2024-10-30-V1.7.1.md delete mode 100644 changelog/2024-11-05-V1.7.2.md delete mode 100644 changelog/2024-11-14-V1.7.3.md delete mode 100644 changelog/2024-12-05-V1.7.4.md delete mode 100644 changelog/2024-12-09-V1.7.5.md delete mode 100644 changelog/2025-01-06-V1.7.6.md delete mode 100644 changelog/2025-02-05-V1.7.7.md delete mode 100644 changelog/2025-02-10-V1.7.8.md delete mode 100644 changelog/2025-02-17-V1.7.9.md delete mode 100644 changelog/2025-04-01-V1.7.10.md delete mode 100644 changelog/2025-04-24-V1.7.11.md delete mode 100644 changelog/2025-05-14-V1.7.12.md delete mode 100644 changelog/2025-06-02-V1.7.13.md delete mode 100644 changelog/2025-06-26-V1.7.14.md delete mode 100644 changelog/2025-07-07-V1.7.15.md delete mode 100644 changelog/2025-07-21-V1.7.16.md delete mode 100644 changelog/2025-10-01-V2.0.0.md delete mode 100644 changelog/2025-10-15-V2.0.1.md delete mode 100644 changelog/2025-11-10-V2.1.0.md delete mode 100644 changelog/2025-11-13-V2.2.0.md delete mode 100644 changelog/2025-11-18-V2.3.0.md delete mode 100644 changelog/2025-12-01-V2.3.1.md delete mode 100644 changelog/2025-12-19-V2.3.2.md delete mode 100644 docs/cluster/access-cluster.mdx delete mode 100644 docs/cluster/addons/ebs.mdx delete mode 100644 docs/cluster/addons/efs.mdx delete mode 100644 docs/cluster/addons/grafana.mdx delete mode 100644 docs/cluster/addons/index.mdx delete mode 100644 docs/cluster/addons/kubecost.mdx delete mode 100644 docs/cluster/addons/loki.mdx delete mode 100644 docs/cluster/addons/otel.mdx delete mode 100644 docs/cluster/addons/prometheus.mdx delete mode 100644 docs/cluster/index.mdx delete mode 100644 docs/cluster/nodepools/creating-nodepool.mdx delete mode 100644 docs/cluster/nodepools/index.mdx delete mode 100644 docs/cluster/nodepools/instance-types.mdx delete mode 100644 docs/cluster/nodepools/managing-nodepool.mdx delete mode 100644 docs/cluster/shutdown-cluster.mdx delete mode 100644 docs/connect_to_git.mdx delete mode 100644 docs/domain/delegation.mdx delete mode 100644 docs/domain/index.mdx delete mode 100644 docs/domain/setup.mdx delete mode 100644 docs/environment/index.mdx delete mode 100644 docs/gettingstarted.mdx delete mode 100644 docs/index.mdx delete mode 100644 docs/network/index.mdx delete mode 100644 docs/project/access_config.mdx delete mode 100644 docs/project/build/build.mdx delete mode 100644 docs/project/build_resources.mdx delete mode 100644 docs/project/chart/chart_dependencies.mdx delete mode 100644 docs/project/chart/extra_templates.mdx delete mode 100644 docs/project/chart/index.mdx delete mode 100644 docs/project/configure_your_dockerfile.mdx delete mode 100644 docs/project/dependency/aurora-mysql-aws.mdx delete mode 100644 docs/project/dependency/aurora-postgresql-aws.mdx delete mode 100644 docs/project/dependency/index.mdx delete mode 100644 docs/project/dependency/mariadb-aws.mdx delete mode 100644 docs/project/dependency/memcached-aws.mdx delete mode 100644 docs/project/dependency/msk-aws.mdx delete mode 100644 docs/project/dependency/mysql-aws.mdx delete mode 100644 docs/project/dependency/opensearch-aws.mdx delete mode 100644 docs/project/dependency/oracle-aws.mdx delete mode 100644 docs/project/dependency/postgresql-aws.mdx delete mode 100644 docs/project/dependency/redis-aws.mdx delete mode 100644 docs/project/dependency/s3bucket-aws.mdx delete mode 100644 docs/project/dependency/sqs-aws.mdx delete mode 100644 docs/project/deployment/index.mdx delete mode 100644 docs/project/deployment/more_on_deployment.mdx delete mode 100644 docs/project/deployment/release.mdx delete mode 100644 docs/project/dockertron.mdx delete mode 100644 docs/project/index.mdx delete mode 100644 docs/project/vargroup/index.mdx delete mode 100644 docs/project/volumes.mdx delete mode 100644 docs/project/workload/cronjob.mdx delete mode 100644 docs/project/workload/hook.mdx delete mode 100644 docs/project/workload/index.mdx delete mode 100644 docs/project/workload/job.mdx delete mode 100644 docs/project/workload/webservice.mdx delete mode 100644 docs/project/workload/worker.mdx delete mode 100644 docs/provider/accounts.mdx delete mode 100644 docs/provider/common-errors.mdx delete mode 100644 docs/provider/deleting-a-provider.mdx delete mode 100644 docs/provider/index.mdx delete mode 100644 docs/provider/schemas.mdx delete mode 100644 docs/responsability-model.mdx delete mode 100644 docs/user/aws_console_authentication.mdx delete mode 100644 docs/user/index.mdx delete mode 100644 docs/user/vpn.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-23-V1.0.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-29-V1.0.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-04-V1.0.2.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-25-V1.0.3.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-11-V1.0.4.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-27-V1.0.5.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-11-06-V1.1.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2023-12-05-V1.1.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-05-V1.2.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-12-V1.2.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-25-V1.2.2.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-05-V1.2.3.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-15-V1.2.4.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-01-V1.3.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-06-V1.4.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-11-V1.4.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-25-V1.4.2.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-13-V1.4.3.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-23-V1.5.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-06-24-V1.5.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-12-V1.6.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-22-V1.6.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-19-V1.6.2.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-27-V1.6.3.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-14-V1.7.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-30-V1.7.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-05-V1.7.2.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-14-V1.7.3.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-05-V1.7.4.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-09-V1.7.5.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-01-06-V1.7.6.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-05-V1.7.7.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-10-V1.7.8.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-17-V1.7.9.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-01-V1.7.10.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-24-V1.7.11.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-05-14-V1.7.12.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-02-V1.7.13.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-26-V1.7.14.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-07-V1.7.15.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-21-V1.7.16.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-01-V2.0.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-15-V2.0.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-10-V2.1.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-13-V2.2.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-18-V2.3.0.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-01-V2.3.1.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-19-V2.3.2.md delete mode 100644 i18n/es/docusaurus-plugin-content-blog-changelog/options.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/basicconcepts.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cli.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/access-cluster.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/ebs.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/efs.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/grafana.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/kubecost.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/loki.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/otel.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/prometheus.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/creating-nodepool.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/instance-types.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/managing-nodepool.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/cluster/shutdown-cluster.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/domain/delegation.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/domain/setup.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/gettingstarted.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/access_config.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/build/build.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/build/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/build_resources.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/chart/chart_dependencies.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/chart/extra_templates.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/chart/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/configure_your_dockerfile.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-mysql-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-postgresql-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mariadb-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/memcached-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/msk-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mysql-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/opensearch-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/postgresql-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/redis-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/s3bucket-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dependency/sqs-aws.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/deployment/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/deployment/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/deployment/more_on_deployment.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/deployment/release.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/dockertron.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/volumes.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/cronjob.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/hook.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/job.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/webservice.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/project/workload/worker.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/accounts.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/common-errors.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/deleting-a-provider.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/schemas.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/provider/sidebar.js delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/quickstart/django_celery/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/quickstart/n8n/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/user/_category_.json delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/user/aws_console_authentication.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx delete mode 100644 i18n/es/docusaurus-plugin-content-docs/current/user/vpn.mdx delete mode 100644 tutorials/config-aws-waf.mdx delete mode 100644 tutorials/dashboard-loki-not-responding.mdx delete mode 100644 tutorials/django-celery.mdx delete mode 100644 tutorials/install-keda.mdx delete mode 100644 tutorials/make-rds-public.mdx delete mode 100644 tutorials/n8n-worker.mdx delete mode 100644 tutorials/s3-batch.mdx delete mode 100644 tutorials/s3-replication.mdx delete mode 100644 tutorials/third-party-integration-vpn.mdx diff --git a/Makefile b/Makefile index 5e814298a..de3486bbe 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ stop: ## Stop Docusaurus docker compose down install: ## Install dependencies - docker compose run --rm doc yarn + docker compose run --rm doc yarn --frozen-lockfile logs: ## View Docusaurus logs docker compose logs -f doc diff --git a/changelog/2023-08-23-V1.0.0.md b/changelog/2023-08-23-V1.0.0.md deleted file mode 100644 index 1ebda11d0..000000000 --- a/changelog/2023-08-23-V1.0.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 1.0.0" -slug: v1-0-0 -date: 2023-08-23 -tags: [release] ---- - -# 🚀 Version 1.0.0 - - - -23/08/2023 - -## New Features - -- **Volume Configuration:** You can now configure volumes in project environments directly from the form. -- **Nightly Shutdown with Timezone:** Added support for selecting time zones in the nightly shutdown. -- **Manual Cluster Startup:** New button to manually start clusters. -- **CloudFront Integration:** Support for using CloudFront to improve content delivery. -- **Automatic Backups:** You can configure automatic backups for dependencies. -- **Graviton Instances:** Support for using Graviton instances on nodes. -- **Encryption:** Implemented encryption in StackSettings for added security. - -## Bug Fixes - -- Resolved an issue in the billing API and cost estimation. -- Fixed errors when deleting Providers and VPNs. -- You can now delete ACM certificates used by a Load Balancer without problems. diff --git a/changelog/2023-08-29-V1.0.1.md b/changelog/2023-08-29-V1.0.1.md deleted file mode 100644 index 74963ce73..000000000 --- a/changelog/2023-08-29-V1.0.1.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Version 1.0.1" -slug: v1-0-1 -date: 2023-08-29 -tags: [release] ---- - -# 🚀 Version 1.0.1 - - - - -29/08/2023 - -## New Features - -- **Subscription Management:** Login and token updates are controlled based on the subscription status. Additionally, a new API was implemented to register users and companies, validating pending subscriptions, with a new model to better manage subscriptions, integrating AwsClient. -- **Marketplace Onboarding:** Simplified process for creating users who come from a marketplace. \ No newline at end of file diff --git a/changelog/2023-09-04-V1.0.2.md b/changelog/2023-09-04-V1.0.2.md deleted file mode 100644 index 390a0ffcd..000000000 --- a/changelog/2023-09-04-V1.0.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.0.2" -slug: v1-0-2 -date: 2023-09-04 -tags: [release] ---- - -# 🚀 Version 1.0.2 - - - -04/09/2023 - -## New Features - -- **Deployment Optimization:** Simplified the deployment process and project environment (ProjectEnv) editing, facilitating configuration and deployment. -- **Resource and Configuration Adjustments:** You can now create custom aliases for buckets. -- **Health Check Improvements:** The readiness probe for services in the development account is now optional. - -## Bug Fixes - -- Solved issues related to VPN and security parameter configuration. diff --git a/changelog/2023-09-25-V1.0.3.md b/changelog/2023-09-25-V1.0.3.md deleted file mode 100644 index f8ec3d87d..000000000 --- a/changelog/2023-09-25-V1.0.3.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.0.3" -slug: v1-0-3 -date: 2023-09-25 -tags: [release] ---- - -# 🚀 Version 1.0.3 - - - -25/09/2023 - -## New Features - -- **Management Buttons and Form Improvements:** Added buttons for resource management and improved variable mapping forms. -- **Cronjobs and Domain Regeneration:** You can now stop or activate cronjobs and regenerate domains. - -## Bug Fixes - -- Solved the issue of obtaining the VPN URI in Pritunl. -- Fixed the account selection issue for viewer users. -- Improved the handling of health check information sent to the backend. diff --git a/changelog/2023-10-11-V1.0.4.md b/changelog/2023-10-11-V1.0.4.md deleted file mode 100644 index be17427a0..000000000 --- a/changelog/2023-10-11-V1.0.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.0.4" -slug: v1-0-4 -date: 2023-10-11 -tags: [release] ---- - -# 🚀 Version 1.0.4 - - - -11/10/2023 - -## New Features - -- **Refactoring and Improvements:** Refactored the dashboard and improved log visualization and the management of entity deletion. - -## Bug Fixes - -- Fixed user editing issues. -- Corrected cluster state management. -- Solved problems with environment domains. -- Fixed error handling in S3 responses with CloudFront. diff --git a/changelog/2023-10-27-V1.0.5.md b/changelog/2023-10-27-V1.0.5.md deleted file mode 100644 index b0211fa26..000000000 --- a/changelog/2023-10-27-V1.0.5.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Version 1.0.5" -slug: v1-0-5 -date: 2023-10-27 -tags: [release] ---- - -# 🚀 Version 1.0.5 - - - -27/10/2023 - -## Bug Fixes - -- Solved deployment issues and fixed Karpenter with spot instances. -- Fixed issues in deleting entities and validating service URLs. diff --git a/changelog/2023-11-06-V1.1.0.md b/changelog/2023-11-06-V1.1.0.md deleted file mode 100644 index d532ebe79..000000000 --- a/changelog/2023-11-06-V1.1.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.1.0" -slug: v1-1-0 -date: 2023-11-06 -tags: [release] ---- - -# 🚀 Version 1.1.0 - - - -06/11/2023 - -## New Features - -- **Vargroups Management:** Added the option to show vargroups in the forms for services, workers, hooks, and cronjobs. -- **Kubecost:** Integrated Kubecost with Prometheus-stack. - -## Bug Fixes - -- Solved the issue with Karpenter on spot instances. -- Fixed user roles and user editing. -- Corrected problems when deleting an environment and the incorrect deletion of domains. -- Fixed the error when trying to manually start the cluster. -- Resolved an error in generating hooks. diff --git a/changelog/2023-12-05-V1.1.1.md b/changelog/2023-12-05-V1.1.1.md deleted file mode 100644 index 10ea95e81..000000000 --- a/changelog/2023-12-05-V1.1.1.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Version 1.1.1" -slug: v1-1-1 -date: 2023-12-05 -tags: [release] ---- - -# 🚀 Version 1.1.1 - - - -05/12/2023 - -## New Features - -- **Log Viewer in Jobs:** Added a log viewer in the job list, similar to what already exists for deployments. -- **Dashboard v2:** Improvements in the second version of the Dashboard, with more options and better organization of information. -- **Cluster Certificates:** Cluster certificates are now automatically deleted and updated to prevent expiration issues. diff --git a/changelog/2024-01-05-V1.2.0.md b/changelog/2024-01-05-V1.2.0.md deleted file mode 100644 index 4faa0bdd5..000000000 --- a/changelog/2024-01-05-V1.2.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Version 1.2.0" -slug: v1-2-0 -date: 2024-01-05 -tags: [release] ---- - -# 🚀 Version 1.2.0 - - - -05/01/2024 - -## New Features - -- **Logs in Grafana:** A data source has been configured in Grafana to display logs from S3. -- **Cluster Update Button:** A button has been added to allow cluster updates from the interface. -- **User Activity Log:** An activity log for user actions has been created. -- **Domain Validation Deploy:** You can now create a deploy that runs once domains are validated. -- **Two-Factor Authentication:** Two-factor authentication (2FA) has been added to the login for enhanced security. - -## Bug Fixes - -- An issue with builds using the same branch as the default has been fixed. -- Log reading has been improved for faster processing. -- Various frontend optimizations, including styles, search, and pending resource visibility, have been made. diff --git a/changelog/2024-01-12-V1.2.1.md b/changelog/2024-01-12-V1.2.1.md deleted file mode 100644 index 32630ffc7..000000000 --- a/changelog/2024-01-12-V1.2.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.2.1" -slug: v1-2-1 -date: 2024-12-01 -tags: [release] ---- - -# 🚀 Version 1.2.1 - - - -12/01/2024 - -## New Features - -- **Vargroup Form Optimization:** Usability improvements have been made to the Vargroup forms. -- **Provider and User Account Deletion:** Deleting a provider now also deletes associated user accounts. - -## Bug Fixes - -- A bug in ACM certificate regeneration has been fixed. -- A provider deletion issue has been corrected. diff --git a/changelog/2024-01-25-V1.2.2.md b/changelog/2024-01-25-V1.2.2.md deleted file mode 100644 index 11b86e920..000000000 --- a/changelog/2024-01-25-V1.2.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.2.2" -slug: v1-2-2 -date: 2024-01-25 -tags: [release] ---- - -# 🚀 Version 1.2.2 - - - -25/01/2024 - -## New Features - -- **Domain Validation Button:** A "check validation" button has been added to the domain drawer for easier domain management. -- **Activity Log Table:** An activity log table has been created. -- **Access Key Encryption:** Access keys for code version providers (GIT) are now encrypted. - -## Bug Fixes - -- An issue where the API didn't correctly recreate the ACM module during regeneration has been fixed. diff --git a/changelog/2024-02-05-V1.2.3.md b/changelog/2024-02-05-V1.2.3.md deleted file mode 100644 index 0628ce03b..000000000 --- a/changelog/2024-02-05-V1.2.3.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Version 1.2.3" -slug: v1-2-3 -date: 2024-02-05 -tags: [release] ---- - -# 🚀 Version 1.2.3 - - - -05/02/2024 - -## New Features - -- **Alias Decoupling in Web Services:** The creation of aliases is now separated from the web services form. -- **IAM Password Reset:** It is now possible to reset the IAM password for a user. - -## Bug Fixes - -- A minor issue with release tasks has been corrected. diff --git a/changelog/2024-02-15-V1.2.4.md b/changelog/2024-02-15-V1.2.4.md deleted file mode 100644 index fb497524d..000000000 --- a/changelog/2024-02-15-V1.2.4.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.2.4" -slug: v1-2-4 -date: 2024-02-15 -tags: [release] ---- - -# 🚀 Version 1.2.4 - - - -15/02/2024 - -## New Features - -- **Cluster Switcher Optimization:** Cluster selector behavior has been optimized. -- **Login in AWS Subscription Flow:** The AWS subscription flow now includes the ability to log in directly. - -## Bug Fixes - -- Callback issues for Git integrations and Docker file path for GitLab have been resolved. -- Minor billing screen-related bugs have been fixed. diff --git a/changelog/2024-03-01-V1.3.0.md b/changelog/2024-03-01-V1.3.0.md deleted file mode 100644 index c5c85bc7b..000000000 --- a/changelog/2024-03-01-V1.3.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 1.3.0" -slug: v1-3-0 -date: 2024-03-01 -tags: [release] ---- - -# 🚀 Version 1.3.0 - - - -01/03/2024 - -## New Features - -- **Project Details View:** A detailed project view is now available in the new interface. -- **RDS Metrics API:** A new API for displaying RDS metrics has been added, improving resource visibility. -- **Improved LogViewer:** LogViewer loading is now faster and more efficient. -- **Enhanced Onboarding:** A new onboarding process has been implemented for easier setup. -- **Redis Monitoring:** Redis monitoring has been added, improving infrastructure supervision. -- **RDS Replica Configuration:** The option to configure replicas in the RDS Dependency has been added for more flexibility. -- **Domain Deletion Status:** Domain deletion now creates a deploy with `pending-approval` status, rather than an automatic deploy. -- **Job Workload Improvements:** Job workload has been improved, allowing automatic retries in case of an initial failure. - -## Bug Fixes - -- Bitbucket integration issues have been resolved. -- Undefined value issues in Vargroups have been fixed. diff --git a/changelog/2024-03-06-V1.4.0.md b/changelog/2024-03-06-V1.4.0.md deleted file mode 100644 index 69d158f9d..000000000 --- a/changelog/2024-03-06-V1.4.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.4.0" -slug: v1-4-0 -date: 2024-03-06 -tags: [release] ---- - -# 🚀 Version 1.4.0 - - - -03/06/2024 - -## New Features - -- **Grafana Configuration:** The database for the Grafana addon was configured, along with DataSources and Dashboards. -- **Prometheus Metrics Persistence with Thanos:** Added support for persisting Prometheus metrics using Thanos. -- **New Volume API:** Implemented support for the new volume API, displaying statuses and applying configuration for deployments. -- The update option in addons has been disabled. -- Now, when a dependency is deleted, a deploy with "pending-approval" will be created instead of an automatic one. - -## Bug Fixes - -- Fixed an issue where pre-hooks and new volumes were added during deploys, preventing them from being generated. -- Subdomains are now correctly marked as delegated if the parent domains are already delegated. diff --git a/changelog/2024-04-11-V1.4.1.md b/changelog/2024-04-11-V1.4.1.md deleted file mode 100644 index 0566760b5..000000000 --- a/changelog/2024-04-11-V1.4.1.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Version 1.4.1" -slug: v1-4-1 -date: 2024-04-11 -tags: [release] ---- - -# 🚀 Version 1.4.1 - - - -04/11/2024 - -## New Features - -- **Dependency and OpenSearch Monitoring:** A new monitoring page was created for dependencies, facilitating the tracking of their status. OpenSearch was included. -- **ECR Lifecycle Policy:** A lifecycle policy was configured for ECR, improving image management. - -## Bug Fixes - -- Fixed the issue of duplicate names between cluster and node in Redis. -- Resolved various frontend errors that affected the user experience. -- Fixed the problem where an error was displayed when attempting to publish a vargroup without an associated service. -- Issues with performing multiple deployments and releases in a row were fixed. diff --git a/changelog/2024-04-25-V1.4.2.md b/changelog/2024-04-25-V1.4.2.md deleted file mode 100644 index 21190880c..000000000 --- a/changelog/2024-04-25-V1.4.2.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Version 1.4.2" -slug: v1-4-2 -date: 2024-04-25 -tags: [release] ---- - -# 🚀 Version 1.4.2 - - - -04/25/2024 - -## New Features - -- **New Metrics:** Added new metrics for S3 buckets and RabbitMQ, improving service monitoring. An OpenSearch metrics monitoring system was also implemented. -- **Monitoring Schema Reorganization:** Monitoring schema structures were reorganized for better management and visualization. The Dependencies monitoring screen now supports different resource types, providing a more detailed view. - -## Bug Fixes - -- A critical issue with vargroups was resolved, ensuring their proper functioning. diff --git a/changelog/2024-05-13-V1.4.3.md b/changelog/2024-05-13-V1.4.3.md deleted file mode 100644 index eb5218097..000000000 --- a/changelog/2024-05-13-V1.4.3.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.4.3" -slug: v1-4-3 -date: 2024-05-13 -tags: [release] ---- - -# 🚀 Version 1.4.3 - - - -05/13/2024 - -## New Features - -- **Dashboard Management Improvements:** Dashboard loading was improved, allowing it to be viewed even if no account is selected. -- **Billing and Project Screen Improvements:** Improvements to the billing screen were made, including a new "others" section to account for previously unconsidered costs. The project environment screen was also improved. -- **Policy Updates:** CloudFormation policy has been updated to enhance management and security. - -## Bug Fixes - -- Fixed a critical error that prevented the creation of providers. -- Reviewed and resolved an issue related to NewRelic integration. -- Fixed a problem with the refresh token when requesting the VPN URI. -- **ACM Validation Screen and Build Logs Errors:** Corrections made to the ACM validation table and logs display for builds in creation state. diff --git a/changelog/2024-05-23-V1.5.0.md b/changelog/2024-05-23-V1.5.0.md deleted file mode 100644 index 10e0a1b97..000000000 --- a/changelog/2024-05-23-V1.5.0.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.5.0" -slug: v1-5-0 -date: 2024-05-23 -tags: [release] ---- - -# 🚀 Version 1.5.0 - - - -05/23/2024 - -## New Features - -- **Multiple Project Environments Creation:** You can now create multiple project environments using the same repository and branch. -- **Domain Validation for Aliases:** Improved domain creation validation for aliases by using an existing usable ACM for ingress. -- **Resource Configuration in Project Env:** Added the ability to configure build and deploy resources per project environment. -- **Deploy and Build Request Configuration:** Added the option to configure deploy and build requests in a ProjectEnv. -- **Grafana Dashboard:** A Grafana dashboard was incorporated to visualize consumption by namespace. -- **Loki Configuration:** Logs can now be searched by namespace with the new Loki configuration. -- **Data Collection:** Improved the billing collection script to be idempotent and executable for specific dates. - -## Bug Fixes - -- Fixed an error when creating S3 dependencies and solved a critical problem with vargroups during cluster shutdown updates. -- Fixed a critical error when inviting collaborators. diff --git a/changelog/2024-06-24-V1.5.1.md b/changelog/2024-06-24-V1.5.1.md deleted file mode 100644 index cf4b39f2f..000000000 --- a/changelog/2024-06-24-V1.5.1.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Version 1.5.1" -slug: v1-5-1 -date: 2024-06-24 -tags: [release] ---- - -# 🚀 Version 1.5.1 - - - -06/24/2024 - -## New Features - -- **Advanced Resource Configuration:** Advanced options for resource configuration in project environments have been implemented. -- **Optimization of Data Collection Scripts:** Improved the efficiency of data collection scripts for faster workload. - -## Bug Fixes - -- Several interface errors affecting system usability have been resolved. diff --git a/changelog/2024-08-12-V1.6.0.md b/changelog/2024-08-12-V1.6.0.md deleted file mode 100644 index 005e034bf..000000000 --- a/changelog/2024-08-12-V1.6.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 1.6.0" -slug: v1-6-0 -date: 2024-08-12 -tags: [release] ---- - -# 🚀 Version 1.6.0 - - - -08/12/2024 - -## New Features - -- **Support for ARM Instances and Additional RDS Versions:** Added ARM instances and extra versions in RDS. -- **EKS Updated to Version 1.29:** EKS has been updated to version 1.29. Changelogs for EKS updates are now displayed. -- **Improvements in Provider Creation and Editing:** Screens and fields for provider forms were updated, including changes in states and visual display. -- **Improved Repository Search:** Added support for asynchronous search in the repository selector and enhanced the search function for GitHub, GitLab, and Bitbucket. -- **Healthcheck Parameterization:** Healthcheck properties can now be parameterized with JSONSchema. -- **New Dashboard:** A new dashboard has been added to view consumption by namespace. -- Fixed an error when regenerating certificates, as well as issues with builds not running properly. -- Frontend errors related to listing and API problems that caused filtering errors have been corrected. - -## Bug Fixes - -- Fixed an error when regenerating certificates, as well as issues with builds not running properly. -- Frontend errors related to listing and API problems that caused filtering errors have been corrected. diff --git a/changelog/2024-08-22-V1.6.1.md b/changelog/2024-08-22-V1.6.1.md deleted file mode 100644 index 830509904..000000000 --- a/changelog/2024-08-22-V1.6.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.6.1" -slug: v1-6-1 -date: 2024-08-22 -tags: [release] ---- - -# 🚀 Version 1.6.1 - - - -08/22/2024 - -## New Features - -- **Dependency Version Updates:** Updated versions of MQ, Elasticsearch, Memcache, and Redis dependencies. -- **Authentication Improvements:** Added support for storing authentication tokens via cookies instead of local storage. -- Added ACM validation record printing on the ACM detail screen, and ACM status is now included in the system. - -## Bug Fixes - -- Issues with the provider flow have been resolved. diff --git a/changelog/2024-09-19-V1.6.2.md b/changelog/2024-09-19-V1.6.2.md deleted file mode 100644 index b2b547e1d..000000000 --- a/changelog/2024-09-19-V1.6.2.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Version 1.6.2" -slug: v1-6-2 -date: 2024-09-19 -tags: [release] ---- - -# 🚀 Version 1.6.2 - - - -09/19/2024 - -## New Features - -- **Upgrades:** Updated **Prometheus**, **Loki**, and **EBS CSI Driver** to the latest versions as of August 2024. -- **EBS CSI Driver Migration:** SleakOps now uses the AWS-managed EKS Addon for the EBS CSI Driver, replacing the self-managed version. -- **Prometheus and Loki with EBS:** Prometheus now utilizes EBS volumes for data persistence, preventing data loss even if the pods crash. -- **Loki with SimpleScalable: I**t adopts a **SimpleScalable** structure with **TSDB** storage for logs, enhancing performance. -- **SQS Dead-letter Queues:** Now supports the creation of **SQS queues** with associated dead-letter queues for improved error handling. - -## Bug Fixes - -- Various minor bug fixes and improvements to the platform's workload flows. diff --git a/changelog/2024-09-27-V1.6.3.md b/changelog/2024-09-27-V1.6.3.md deleted file mode 100644 index ae547729a..000000000 --- a/changelog/2024-09-27-V1.6.3.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Version 1.6.3" -slug: v1-6-3 -date: 2024-09-27 -tags: [release] ---- - -# 🚀 Version 1.6.3 - - - -27/09/2024 - -## New Features - -- **Registration:** Implemented a new registration flow. - -## Bug Fixes - -- Various minor bug fixes and improvements. diff --git a/changelog/2024-10-14-V1.7.0.md b/changelog/2024-10-14-V1.7.0.md deleted file mode 100644 index aa3b46fea..000000000 --- a/changelog/2024-10-14-V1.7.0.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.0" -slug: v1-7-0 -date: 2024-10-14 -tags: [release] ---- - -# 🚀 Version 1.7.0 - - - -14/10/2024 - -## New Features - -- **Advanced Node Management:** Introduced node pool management to provide greater control over the types of nodes where workloads are executed. -- **Cluster Module Migration:** All modules created with the cluster now run on Graviton instances, enhancing performance and reducing costs. -- **Cluster Add-ons:** All add-ons now run on Graviton instances, further improving performance and lowering costs. -- **Isolated Build Nodes:** Builds are now executed on dedicated nodes separate from the application nodes, improving the stability of the nodes running applications. - -## Bug Fixes - -- Various minor bug fixes. diff --git a/changelog/2024-10-30-V1.7.1.md b/changelog/2024-10-30-V1.7.1.md deleted file mode 100644 index 797c715d0..000000000 --- a/changelog/2024-10-30-V1.7.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.7.1" -slug: v1-7-1 -date: 2024-10-30 -tags: [release] ---- - -# 🚀 Version 1.7.1 - - - -30/10/2024 - -## New Features - -- **Environment and Domain Creation:** Improved the process for creating environments and domains. You can now use a different domain than the one configured globally without any limitations. -- **Notifications:** Added a notification system to inform users about pending manual actions and scheduled infrastructure updates. -- **Documentation:** Updated documentation on managing domains, projects, dependencies, and environment variables. - -## Bug Fixes - -- Various minor bug fixes. diff --git a/changelog/2024-11-05-V1.7.2.md b/changelog/2024-11-05-V1.7.2.md deleted file mode 100644 index f57256ee4..000000000 --- a/changelog/2024-11-05-V1.7.2.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.2" -slug: v1-7-2 -date: 2024-11-05 -tags: [release] ---- - -# 🚀 Version 1.7.2 - - - -05/11/2024 - -## New Features - -- **S3 Bucket Deletion:** Introduced the ability to delete S3 buckets containing a large number of files. -- **VPN:** Updated the Pritunl module to the latest version for enhanced security and performance. -- **Subscription Management Improvements:** Enhanced the management of subscriptions for a better user experience. -- **User Registration:** Enabled the registration of new users to the platform. - -## Bug Fixes - -- Various minor bug fixes. diff --git a/changelog/2024-11-14-V1.7.3.md b/changelog/2024-11-14-V1.7.3.md deleted file mode 100644 index a458ada59..000000000 --- a/changelog/2024-11-14-V1.7.3.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.7.3" -slug: v1-7-3 -date: 2024-11-14 -tags: [release] ---- - -# 🚀 Version 1.7.3 - - - - -14/11/2024 - -## New Features - -- **Oracle RDS Support (Beta):** You can now manage Oracle RDS instances as dependencies within SleakOps. -- **Aurora PostgreSQL Serverless Support (Beta):** Added the ability to create and manage Aurora PostgreSQL Serverless databases. - -## Bug Fixes - -- Various minor bug fixes. \ No newline at end of file diff --git a/changelog/2024-12-05-V1.7.4.md b/changelog/2024-12-05-V1.7.4.md deleted file mode 100644 index 112b590d5..000000000 --- a/changelog/2024-12-05-V1.7.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.4" -slug: v1-7-4 -date: 2024-12-05 -tags: [release] ---- - -# 🚀 Version 1.7.4 - - - -05/12/2024 - -## New Features - -- **Add-on Accessibility:** Added links in SleakOps for easy access to view logs, APM, or metrics for specific resources. -- **OpenTelemetry (Beta):** Introduced an add-on to enhance observability in applications deployed with SleakOps. With OpenTelemetry, you can have your own APM to monitor metrics like request rate, latency, and error rate of your application. -- **Add-on Availability Configurations:** Added various availability settings for each add-on. -- **Documentation:** Updated the add-on documentation and made it available in Spanish. - -## Bug Fixes - -- **Kubecost Integration Review:** Reviewed the Prometheus-Kubecost integration. Kubecost now correctly maps the names of deployed resources to their costs, greatly improving the accuracy of its estimates. It's now possible to enable approximate network traffic cost analysis within the cluster in Kubecost (Beta). diff --git a/changelog/2024-12-09-V1.7.5.md b/changelog/2024-12-09-V1.7.5.md deleted file mode 100644 index ad11e6c6c..000000000 --- a/changelog/2024-12-09-V1.7.5.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Version 1.7.5" -slug: v1-7-5 -date: 2024-12-09 -tags: [release] ---- - -# 🚀 Version 1.7.5 - - - -09/12/2024 - -## New Features - -- **AWS Integration Error Handling:**: Implemented a mechanism to handle delays in AWS account activations created by SleakOps. -- **Add-on Links in Builds:** Added links for easily viewing logs and metrics during the build process. diff --git a/changelog/2025-01-06-V1.7.6.md b/changelog/2025-01-06-V1.7.6.md deleted file mode 100644 index 6b1acc61d..000000000 --- a/changelog/2025-01-06-V1.7.6.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.7.6" -slug: v1-7-6 -date: 2025-01-06 -tags: [release] ---- - -# 🚀 Version 1.7.6 - - - -06/01/2025 - -## New Features - -- **New Nodepool Configurations**: You can now set additional parameters, such as minimum instance sizes and more. -- **Job with Specific Images**: When creating a job, you can specify the exact image and tag you want to run (e.g., `postgres:16.4`). -- **(BETA) Chart Extension by Project**: SleakOps can now extend the charts used to deploy project workloads, allowing you to add dependencies. For more information, see the [Helm documentation](https://helm.sh/docs/helm/helm_dependency/). -- **CI/CD Improvements**: The file for configuring CI/CD has been simplified and optimized. - -## Bug Fixes - -- **Internal Web Service URL**: Fixed an issue that caused incorrect URLs for “internal” type web services. -- **Volume Deletion**: Resolved problems related to volume deletion under various retention policies. -- **UX/UI Enhancements**: Improvements in the interface for Projects, Volumes, and Variable Groups. diff --git a/changelog/2025-02-05-V1.7.7.md b/changelog/2025-02-05-V1.7.7.md deleted file mode 100644 index 1c815f02b..000000000 --- a/changelog/2025-02-05-V1.7.7.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Version 1.7.7" -slug: v1-7-7 -date: 2025-02-05 -tags: [release] ---- - -# 🚀 Version 1.7.7 - - - -05/02/2025 - -## New Features - -- **Import from External Buckets:** Quickly copy files from an external S3 Bucket into SleakOps via the new Import Bucket feature. -- **Project View Overhaul:** See logs and key info in a single screen for better visibility. -- **Executions Renamed to Workloads:** Updated terminology to align with internal cluster notation. -- **Cluster Deletion Optimization:** Added extra validation for a more secure and stable deletion process. - -## Bug Fixes - -- **Project Permissions for Jobs:** Fixed an issue where Jobs used cluster node permissions instead of Project permissions. -- **Docker Args Modification:** Builds now correctly apply any Docker Args changed just before they run. -- **VPN Profile Generation:** Resolved an issue preventing third-party user profiles from being generated successfully. diff --git a/changelog/2025-02-10-V1.7.8.md b/changelog/2025-02-10-V1.7.8.md deleted file mode 100644 index ca145d9c0..000000000 --- a/changelog/2025-02-10-V1.7.8.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Version 1.7.8" -slug: v1-7-8 -date: 2025-02-10 -tags: [release] ---- - -# 🚀 Version 1.7.8 - - - -10/02/2025 - -## New Features - -- **Kubernetes 1.30:** Updated EKS support to version 1.30. - -## Bug Fixes - -- **Minor UI Enhancements:** Improved the visual design for project and workload screens. diff --git a/changelog/2025-02-17-V1.7.9.md b/changelog/2025-02-17-V1.7.9.md deleted file mode 100644 index 6a63becdd..000000000 --- a/changelog/2025-02-17-V1.7.9.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Version 1.7.9" -slug: v1-7-9 -date: 2025-02-17 -tags: [release] ---- - -# 🚀 Version 1.7.9 - - - - -17/02/2025 - -## New Features - -- **Cronjob Enhancements:** Configure cronjob policies and easily filter between active and inactive cronjobs. -- **Support Emails on Notifications:** When SleakOps generates a notification, users now receive it via email. -- **EKS Insights:** During cluster upgrades, SleakOps checks EKS Insights to ensure everything is running smoothly. - -## Bug Fixes - -- **Project Flow Improvements:** Enhanced various settings, forms, and other elements for smoother project management. -- **AWS Account Creation Flow:** Now supports inactive AWS accounts, providing clear guidance on how to manually activate them before resuming the process in SleakOps. \ No newline at end of file diff --git a/changelog/2025-04-01-V1.7.10.md b/changelog/2025-04-01-V1.7.10.md deleted file mode 100644 index c07461667..000000000 --- a/changelog/2025-04-01-V1.7.10.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Version 1.7.10" -slug: v1-7-10 -date: 2025-04-01 -tags: [release] ---- - -# 🚀 Version 1.7.10 - - - -01/04/2025 - -## New Features - -- **Enhanced Permission Control:** Projects can now have additional associated permissions, whether they are AWS IAM Policies or custom permissions. -- **Dependency Details:** The configuration details of each dependency are now displayed within its detail view. -- **Cluster Update Screen Improvements:** EKS Insights analysis is now included directly in SleakOps to streamline cluster updates. -- **Build & Project Enhancements:** Additional information during builds and improved project validation workflows. - -## Bug Fixes - -- **Improved Text Input:** Resolved issues affecting text inputs in forms. -- **Cluster Access Data:** Fixed a bug when retrieving cluster connection data under a different selected account. -- **Domain List Filters:** Added filters by account to the domain listing. -- **Nodepool List Improvements:** Refined visuals for the nodepool list view. -- **Add-on Installation Updates:** The list of add-ons now refreshes properly after installation. -- **Variable Group Editing:** Fixed an issue with editing variable groups. -- **Subscription Attachment:** Addressed a bug that prevented new subscriptions from attaching correctly. -- **Cost Forecast:** Fixed forecasting issues for better cost estimations. diff --git a/changelog/2025-04-24-V1.7.11.md b/changelog/2025-04-24-V1.7.11.md deleted file mode 100644 index 048ac7671..000000000 --- a/changelog/2025-04-24-V1.7.11.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Version 1.7.11" -slug: v1-7-11 -date: 2025-04-24 -tags: [release] ---- - -# 🚀 Version 1.7.11 - - - - -24/04/2025 - -## New Features - -- **Kubernetes 1.31 & Karpenter 1.3:** SleakOps now provisions clusters on EKS 1.31 and upgrades the autoscaler to Karpenter 1.3. -- **Stronger Secret Management :** All secrets are now also stored encrypted in AWS Systems Manager Parameter Store, adding an extra layer of durability beyond the in-cluster copy. - -## Bug Fixes - -- **Dev-Cluster Workers:** Removed the PodDisruptionBudge improving worker reliability in development clusters when the cluster had the scheduler shutdown enabled. -- **Builds:** Builds are no longer triggered for every minor project edit. -- **Deployments:** Switched deployments jobs away from Fargate; build logs are now persisted for easier troubleshooting. -- **Web Service Details:** Refined the service detail page for clearer visibility of endpoints, status, and metrics. -- **Kubecost Add-on:** Stability improvements \ No newline at end of file diff --git a/changelog/2025-05-14-V1.7.12.md b/changelog/2025-05-14-V1.7.12.md deleted file mode 100644 index 54dd9d6d3..000000000 --- a/changelog/2025-05-14-V1.7.12.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 1.7.12" -slug: v1-7-12 -date: 2025-05-14 -tags: [release] ---- - -# 🚀 Version 1.7.12 - - - - -14/05/2025 - -## New Features - -- **New Support Flow:** Introduced a support chatbot and ticketing system to provide better traceability and faster response times. -- **Subscription & Plan Management:** Enhanced tools for managing subscriptions and service plans. - -## Bug Fixes - -- **Form Improvements:** General enhancements to form usability and validation. -- **Project Console:** UI/UX improvements in the project console screen. \ No newline at end of file diff --git a/changelog/2025-06-02-V1.7.13.md b/changelog/2025-06-02-V1.7.13.md deleted file mode 100644 index f85c58a90..000000000 --- a/changelog/2025-06-02-V1.7.13.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.7.13" -slug: v1-7-13 -date: 2025-06-02 -tags: [release] ---- - -# 🚀 Version 1.7.13 - - - -02/06/2025 - -## New Features - -- **Dependency Monitoring:** Improved visualization and tracking of dependencies. -- **Service Control:** New toggle to turn webservices and workers on or off. -- **Builds with or without cache:** Option to run builds using cache or from scratch. -- **S3 Bucket Import with Versioning:** Added support for importing S3 Buckets with active versioning. -- **Variable Groups:** Enhanced interface for managing variable groups. -- **Dockerfile Validation:** New validations to ensure reliability of Dockerfiles. - -## Bug Fixes - -- **Job Logs:** Fixed broken log links for Jobs. -- **Branch Names:** Added support for branches with / in their names. -- **GitLab Pipelines:** Fixed issues affecting pipeline execution. diff --git a/changelog/2025-06-26-V1.7.14.md b/changelog/2025-06-26-V1.7.14.md deleted file mode 100644 index 3f44c0c43..000000000 --- a/changelog/2025-06-26-V1.7.14.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.7.14" -slug: v1-7-14 -date: 2025-06-26 -tags: [release] ---- - -# 🚀 Version 1.7.14 - - - - -26/06/2025 - -## New Features - -- **State Transition Improvements:** Smoother state changes for cluster addons and forms. -- **Support with Images:** Users can now upload images in the support chat. -- **Jobs from Cronjobs or Existing Jobs:** Ability to launch a Job from an existing cronjob or Job. -- **Infrastructure Errors:** Improved parsing and display of infrastructure errors for easier troubleshooting. - -## Bug Fixes - -- **Duplicate Volumes:** Fixed issue when creating volumes with the same name. -- **Duplicate Users:** Prevented creation of users with the same email. -- **Duplicate Dependencies:** Blocked creation of dependencies with duplicate names. -- **Dependency Monitoring:** Fixed date range issues on the dependency monitoring screen. \ No newline at end of file diff --git a/changelog/2025-07-07-V1.7.15.md b/changelog/2025-07-07-V1.7.15.md deleted file mode 100644 index 5bdef8a31..000000000 --- a/changelog/2025-07-07-V1.7.15.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Version 1.7.15" -slug: v1-7-15 -date: 2025-07-07 -tags: [release] ---- - -# 🚀 Version 1.7.15 - - - - -07/07/2025 - -## New Features - -- **Nodegroup Spot Resilience:** Spot nodegroups now prevent failures when no Spot instances are available. -- **File-based VariableGroups:** Added support for creating variablegroups of type file. -- **Agent Bot (beta):** Experimental agent bot released in beta. - -## Bug Fixes - -- **Dependent domain configuration:** Generate DNS records when parent domain already created. -- **Cluster status with nightly shutdown:** Fixed incorrect status display for clusters with nightly shutdown enabled. -- **VariableGroups filters:** Fiter by projects on variablegroups list -- **Delete cluster:** Fixed deletion cluster flow. -- **Support ticket status:** Fixed close support ticket status. \ No newline at end of file diff --git a/changelog/2025-07-21-V1.7.16.md b/changelog/2025-07-21-V1.7.16.md deleted file mode 100644 index 988110e21..000000000 --- a/changelog/2025-07-21-V1.7.16.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Version 1.7.16" -slug: v1-7-16 -date: 2025-07-21 -tags: [release] ---- - -# 🚀 Version 1.7.16 - - - - -21/07/2025 - -## New Features - -- **Projects with Public Repositories:** You can now create and manage projects linked to public repositories. -- **Exclude Builds from Metrics:** Builds can be excluded from the Grafana metrics dashboard for more accurate reporting. - -## Bug Fixes - -- **New Project Deployments:** Fixed issues preventing successful deployment of newly created projects. \ No newline at end of file diff --git a/changelog/2025-10-01-V2.0.0.md b/changelog/2025-10-01-V2.0.0.md deleted file mode 100644 index f7f422618..000000000 --- a/changelog/2025-10-01-V2.0.0.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Version 2.0.0" -slug: v2-0-0 -date: 2025-10-01 -tags: [release] ---- - -# 🚀 Version 2.0.0 - - - -10/01/2025 - -## New Features - -- **Full Console Redesign:** Modernized UI for a cleaner, more intuitive experience. -- **Light Theme Support:** Complete support for light mode. -- **Support Bot:** Automated responses for common support questions. -- **Comprehensive Documentation:** Expanded guides covering all features. -- **Update lambdas:** Update python versions for lambdas. -- **Project Chart:** Promoted to stable. -- **Project Access:** Promoted to stable. -- **Dependency Aurora MySQL:** Promoted to stable. -- **Dependency Oracle:** Promoted to stable. -- **Dependency MariaDB:** Promoted to stable. -- **Dependency Aurora PostgreSQL:** Promoted to stable. -- **Dependency Editing:** Ability to edit existing dependencies. -- **Dockertron (beta):** AI-powered automatic dockerization. -- **Builds cancel:** Could cancel pending builds. -- **New MSK Dependency:** Support for Kafka via AWS MSK. -- **Enhanced Webservices:** Configure custom ingress annotations and optional healthchecks. -- **Advanced Nodepools:** New fallback strategies and instance mix (reserved, spot, on-demand) for better cost and performance control. - -## Bug Fixes - -- **GitLab self-hosted:** Fixed URL validation. -- **Cluster deletion:** Improved cascading deletion handling. diff --git a/changelog/2025-10-15-V2.0.1.md b/changelog/2025-10-15-V2.0.1.md deleted file mode 100644 index 011ae956e..000000000 --- a/changelog/2025-10-15-V2.0.1.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Version 2.0.1" -slug: v2-0-1 -date: 2025-10-15 -tags: [release] ---- - -# 🚀 Version 2.0.1 - - - - -10/15/2025 - -## New Features - -- **Builds and Deploys Table:** Improvements to the data shown in the builds and deploys table. - -## Bug Fixes - -- **Nightly Shutdown Cron:** Fixed visualization of the nightly shutdown cron. -- **Cluster Status:** Fixed Cluster status update while updating. -- **Long Notifications:** Fixed visualization of long notifications. -- **Third-Party VPN:** Fixed VPN access for third parties. -- **Deploy Cancellation:** Fixed deploy cancellation flow. -- **Provider Creation:** Fixed text hierarchies in the Provider creation flow. -- **Missing Information:** Fixed redirection in the missing information flow for Project. -- **Viewer User:** Fixed navigation for viewer users. -- **Light Mode Toggles:** Improved toggle visibility in light mode. -- **Dependency MQ Password:** Fixed password auto-generation for Dependency MQ. -- **Icon Loading:** Improvements in icon loading. -- **Transition Screens:** Fixed transition screens during data loading. -- **Project Console Tables:** Improved table visualization on the "Project Console" screen. -- **Infrastructure Errors:** Fixed error messages when infrastructure module execution fails. -- **Mobile Account Selector:** Support for account selector on mobile devices. \ No newline at end of file diff --git a/changelog/2025-11-10-V2.1.0.md b/changelog/2025-11-10-V2.1.0.md deleted file mode 100644 index e629cac6c..000000000 --- a/changelog/2025-11-10-V2.1.0.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Version 2.1.0" -slug: v2-1-0 -date: 2025-11-10 -tags: [release] ---- - -# 🚀 Version 2.1.0 - - - -11/05/2025 - -## New Features - -- **Cluster Update:** Support for Cluster update from 1.31 to 1.32. -- **Dependency Tour:** New guided tour for the Dependency screen. -- **Workload Tour:** New guided tour for the Workload screen. -- **Variable Group Tour:** New guided tour for the Variable Group screen. -- **Cluster Tour:** New guided tour for the Cluster screen. -- **Project Tour:** New guided tour for the Project screen. -- **Cluster Update Optimization:** Optimization of Cluster update tasks. -- **Screen Loading:** Improvements in loading drawers and secondary screens. -- **Schedule Update:** New flow to schedule Cluster updates. -- **Onboarding:** New onboarding flow for new users. -- **Nodepool Configuration:** Support for more Nodepool configuration parameters (instance types, fallbacks, etc.). -- **Upgrade Monitoring:** New service monitoring flow during Cluster upgrade with error reporting. -- **Build Logs:** Improvements in build logs with more context. - -## Bug Fixes - -- **SSL Certificate for S3:** Fixed SSL certificate errors for S3 with CloudFront. -- **Activity Logs:** Fixed names in some Activity Logs. -- **User Creation:** Fixed errors in the user creation flow. -- **Support Tickets:** Fixed support ticket status. -- **Build with CLI:** Fixed parameters when building using the CLI. -- **Nightly Shutdown:** Fixed Cluster status with nightly shutdown enabled. -- **Screen Resolutions:** Adjustments for some resolutions on the main console screen. -- **Delete Web Services:** Fixed errors when deleting a Web Service from the table. diff --git a/changelog/2025-11-13-V2.2.0.md b/changelog/2025-11-13-V2.2.0.md deleted file mode 100644 index 4bf38e926..000000000 --- a/changelog/2025-11-13-V2.2.0.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Version 2.2.0" -slug: v2-2-0 -date: 2025-11-13 -tags: [release] ---- - -# 🚀 Version 2.2.0 - - - -10/25/2025 - -## New Features - -- **Code Viewer:** New component for viewing code within the console. - -## Bug Fixes - -- **Deleted Users:** Fixed errors with deleted users. -- **Update Branches:** Fixed the flow for updating branches in Project. -- **Incomplete Information:** Fixed the flow when Project information is incomplete. -- **Extra Policies:** Fixed the flow for configuring extra policies in Project. diff --git a/changelog/2025-11-18-V2.3.0.md b/changelog/2025-11-18-V2.3.0.md deleted file mode 100644 index becf5975d..000000000 --- a/changelog/2025-11-18-V2.3.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Version 2.3.0" -slug: v2-3-0 -date: 2025-11-18 -tags: [release] ---- - -# 🚀 Version 2.3.0 - - - - -11/18/2025 - -## New Features - -- **Environment Cloning:** New function to clone Environments. -- **Project Cloning:** New function to clone Projects. -- **Dependency Cloning:** New function to clone Dependencies. -- **Workload Cloning:** New function to clone Workloads. -- **Variable Group Cloning:** New function to clone Variable Groups. -- **Cluster Monitoring Filters:** Added filters for navigating Cluster events in Cluster Monitoring. -- **Variable Group Search:** Ability to search Variable Groups by internal key names from the general search. - -## Bug Fixes - -- **Selected Account:** The selected account now persists when switching users. -- **Web Services Shutdown:** Improved Web Services shutdown. diff --git a/changelog/2025-12-01-V2.3.1.md b/changelog/2025-12-01-V2.3.1.md deleted file mode 100644 index da58ccb91..000000000 --- a/changelog/2025-12-01-V2.3.1.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Version 2.3.1" -slug: v2-3-1 -date: 2025-12-01 -tags: [release] ---- - -# 🚀 Version 2.3.1 - - - - -12/01/2025 - -## New Features - -- **Image Analysis in Support:** Support for image analysis in the support bot. -- **Documentation:** New documentation for Dockertron and chart management. -- **Custom Values in Addons:** Ability to use custom values when installing an addon. -- **Nodegroup Change:** Ability to change the nodegroup of non-production clusters. -- **Support Flow:** Conversation flow for support between bot and human. - -## Bug Fixes - -- **Confirmation Modals:** Fixed position of deletion confirmation modals. -- **Builds Table:** Fixed data and column errors in the builds table. -- **Dashboard Notifications:** Fixed notification messages in the dashboard. -- **Workload Names:** Adjusted name sizes for Workloads. -- **Chart Dependency:** Fixed chart dependency flow. -- **Console Alerts:** Fixed notification alerts in the console. diff --git a/changelog/2025-12-19-V2.3.2.md b/changelog/2025-12-19-V2.3.2.md deleted file mode 100644 index 6b4d9d841..000000000 --- a/changelog/2025-12-19-V2.3.2.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Version 2.3.2" -slug: v2-3-2 -date: 2025-12-19 -tags: [release] ---- - -# 🚀 Version 2.3.2 - - - -## New Features - -- **SleakOps CLI:** Improvements and new features, including the ability to open a Workload shell locally. -- **S3 with CloudFront:** Improvements in S3 integration with CloudFront. -- **Python in Lambdas:** Updated Python versions for Lambdas. -- **Charts in Projects:** Improvements to the chart configuration screen in Projects. -- **Subnet Tags:** Improvements in subnet tag handling for autodiscovery. -- **DB Restoration:** Improvements in the database restoration flow from a snapshot. -- **Ingress in Web Services:** Support for configuring URL and ingress annotations in Web Services. -- **API Performance:** Optimization of API performance. -- **Domain Errors:** Improvements in domain error handling. -- **Addon Buttons:** Visual improvements to addon buttons. -- **Notifications:** Visual improvements when displaying notifications. -- **Button Options:** Visual improvements to button options (settings, copy, etc.). -- **RDS Versions:** Updated available RDS versions. -- **Infrastructure Modules:** Optimization of execution times for infrastructure modules. - -## Bug Fixes: - -- **Role Deletion:** Handling of role deletion when deleting a Project. -- **Multi-Provider Billing:** Fixed billing screen with multiple providers. -- **Registration and Login:** Handling of registration and login flow with different subscription states. -- **Nodepool Form:** Error handling in the Nodepool form. -- **Account Switching:** Error handling when switching between accounts. -- **Variable Characters:** Handling of invalid characters in variable names in Variable Groups. -- **Cluster Access:** Handling of Cluster access for different user types. -- **VPN Access:** Error handling when obtaining VPN access for different user types. -- **Listing Texts:** Fixed texts in listings and forms. -- **AWS Connection:** Fixed texts in the step-by-step guide for connecting with AWS. -- **Pending Deployments:** Alert indicator for deployments pending approval. -- **Postgres Upgrade:** Error handling in PostgreSQL upgrade from 14 to 17. -- **RDS Security Group:** Fixed security group for public and private RDS replicas. -- **Support Chat:** Fixed delegation in support chat. diff --git a/docs/cluster/access-cluster.mdx b/docs/cluster/access-cluster.mdx deleted file mode 100644 index 96859eefa..000000000 --- a/docs/cluster/access-cluster.mdx +++ /dev/null @@ -1,77 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Access your Cluster - -In order to access your Kubernetes cluster you must complete some steps and generate a Kubeconfig file to connect to a Kubernetes IDE. - - -## FAQs -
- -### What is Kubeconfig? - -Kubeconfig is a configuration file used by the Kubernetes command-line tool *kubectl* to interact with Kubernetes clusters. It contains information about the clusters, users, contexts, and namespaces that *kubectl* uses to communicate with one or more Kubernetes clusters. -
- -
- -### What is an IDE? - -An IDE for Kubernetes is a software environment that provides tools and features specifically designed to help developers create, manage, and deploy applications on Kubernetes clusters, integrating Kubernetes commands, resource management, and YAML/Helm chart editing within the development workflow. - -Lens is an open-source IDE for Kubernetes, providing a user-friendly GUI to manage, monitor, and troubleshoot multiple clusters in real-time. -
- -## How to access your cluster? - -### 1. Go to the Access Cluster setting - -Click on Clusters, select one and access its settings. - -Go to the *Access Cluster* option. - - - cluster-settings-main-section - - -### 2. Install the following Dependencies - -- **AWS Cli:** [AWS Docs](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) -- **KubeCtl:** [Kubernetes Docs](https://kubernetes.io/docs/tasks/tools/) -- **Lens:** [K8SLens Docs](https://docs.k8slens.dev/getting-started/install-lens/) -- **Pritunl VPN Client:** [Pritunl Page](https://pritunl.com/) - -### 3. Set up a VPN - -- Open the **Pritunl VPN Client** -- Generate a VPN URi, copy it and set it up on the client. - -pritunl-access-cluster - -### 4. Generate your AWS Keys and generate the kubeconfig file - -- Login into AWS with your username. -- Then, go to [AWS Access Key Wizard](https://us-east-1.console.aws.amazon.com/iam/home#/security_credentials/access-key-wizard) to generate the keys on AWS. -- Paste the keys in the form and generate the kubeconfig file. -- Copy the output. - - - cluster-access-cluster - - -### 5. Add it to Lens - -Open Lens, locate the 'Import Kubeconfig' option, and import the YAML file obtained from the Access Cluster section. - - - cluster-kubeconfig-yaml - \ No newline at end of file diff --git a/docs/cluster/addons/ebs.mdx b/docs/cluster/addons/ebs.mdx deleted file mode 100644 index 14ab06099..000000000 --- a/docs/cluster/addons/ebs.mdx +++ /dev/null @@ -1,58 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# EBS (Elastic Block Store) - -In SleakOps, AWS EBS (Elastic Block Store) is used to provide persistent block storage for EC2 instances. EBS volumes are especially useful for applications that require low-latency access to data and high performance. - -## FAQs - -
- - ### What is AWS EBS? - -[AWS EBS ](https://aws.amazon.com/ebs/) is a block storage service from AWS designed to provide persistent storage for EC2 instances. EBS volumes are automatically replicated within their Availability Zone, offering high availability and durability, and protecting against hardware failures. -
- -
- - ### How is EBS used in SleakOps? - -In SleakOps, EBS is used to deliver persistent storage for applications running on EC2 instances. Each EBS volume can be attached to a single EC2 instance at a time, although multiple volumes can be attached to one instance. Within Kubernetes, EBS is used for persistent volumes, ensuring data consistency across pod restarts and rescheduling. SleakOps manages and configures EBS automatically to suit your application needs. - -
- -
- - ### What are the benefits of using EBS? - -EBS provides several key benefits for high-performance applications: -- **High performance**: EBS offers consistent and low-latency performance, ideal for applications requiring quick data access. -- **Durability**: EBS volumes are replicated within their Availability Zone to ensure high durability. -- **Scalability**: Volumes can be easily resized to accommodate growing application demands. -
- -
- - ### How do I configure volumes with EBS in SleakOps? - -To set up and manage volumes using EBS within SleakOps, please refer to the [Volumes documentation](/docs/project/volumes). This guide provides instructions on creating and managing EBS volumes to support your application’s storage requirements. -
- -
- - ### How do I use ebs volumes on my own charts? - -To use EBS Volumes you must pass to the chart values the 'StorageClass' name 'default-sc'. - -You can check your current StorageClasses -``` -kubectl get storageclass --all-namespaces -``` -
- -
- - ### When do I use EBS? - -You should use EBS when I need a volume that will be mounted to only one pod, for example a database running in the Cluster without replicas. -
\ No newline at end of file diff --git a/docs/cluster/addons/efs.mdx b/docs/cluster/addons/efs.mdx deleted file mode 100644 index fb5552205..000000000 --- a/docs/cluster/addons/efs.mdx +++ /dev/null @@ -1,66 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# EFS (Elastic File System) - -In SleakOps, AWS EFS (Elastic File System) is primarily used for managing the volumes of Projects. EFS provides a scalable and elastic file system that can be mounted on multiple EC2 instances, allowing pods in a Kubernetes cluster to share the same file system efficiently. - -## FAQs - -
- -### What is AWS EFS? - -[AWS EFS ](https://aws.amazon.com/efs/) is a cloud file storage service from AWS that provides shared and scalable storage for applications and services. It is ideal for workloads that require concurrent access to a common file system across different services. -
- -
- -### How is EFS used in SleakOps? - -In SleakOps, EFS is utilized for Project volumes. Each Project can have one or more volumes, which are implemented as EFS file systems within the EKS cluster, providing shared storage that can be accessed by different services and pods. - -
- -
- -### What are the benefits of using EFS? - -EFS offers several advantages, making it a powerful option for shared storage in distributed applications: -- **Scalability**: Automatically scales as files are added or removed. -- **High availability**: Designed to be highly available and durable, with data replicated across multiple availability zones. -- **Concurrent access**: Multiple EC2 instances can mount the same EFS file system simultaneously, supporting workloads requiring concurrent access. -
- -
- -### What is the EFS Retain Policy in SleakOps? - -SleakOps enforces a retain policy for EFS volumes, which prevents the deletion of an EFS volume in AWS when a volume is removed from SleakOps. This ensures data persistence even if the volume is detached from the cluster. -
- -
- -### How do I configure volumes with EFS in SleakOps? - -To set up and manage volumes using EFS within SleakOps, follow the instructions in the [Volumes documentation](/docs/project/volumes). This guide covers creating and managing volumes for your Projects and configuring EFS settings within your cluster. -
- - -
- -### How do I use EFS volumes on my own charts? - -To use EFS Volumes you must pass to the chart values the 'StorageClass' name 'efs-sc-delete' or 'efs-sc-retain' depending of which [retain policy ](https://kubernetes.io/docs/concepts/storage/storage-classes/) is needed. - -You can check your current StorageClasses -``` -kubectl get storageclass --all-namespaces -``` -
- -
- -### When do I use EFS? - -You should use EFS when you need a volume that will be mounted to more than one pod, for example an application running in the Cluster with two replicas or more. -
diff --git a/docs/cluster/addons/grafana.mdx b/docs/cluster/addons/grafana.mdx deleted file mode 100644 index c267692a1..000000000 --- a/docs/cluster/addons/grafana.mdx +++ /dev/null @@ -1,95 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Grafana - -Introduction -In Sleakops [Grafana ](https://grafana.com/docs/) is an addon that enables you to view metrics about your cluster's performance and health. Grafana is installed alongside [Prometheus ](https://prometheus.io/docs/introduction/overview/) to help you track metrics such as CPU and memory usage, as well as other key indicators that help you monitor the state of your infrastructure in real time. -Also Grafana is needed to use other addons like Loki and OTEL. - -## FAQs - -
- -### What are the default Grafana credentials? - - -When you first install the Grafana addon in SleakOps, the default login credentials are: - -- **Username:** `admin` -- **Password:** `changeme` - -:::warning Change Default Password -For security reasons, it's strongly recommended to change the default password after your first login. You can change your password directly from the Grafana web interface by going to **User Profile** → **Change Password**. -::: -
- -
- -### Accessing Grafana - -To access Grafana, first you need to be connected to the [VPN](/docs/user/vpn), then just click the Grafana button on the Sleakops console. - -:::tip -The default credentials for Grafana are documented in the FAQ above. Remember to change the default password after your first login. -::: - -You will be redirected to the Grafana login page. -Once logged in, the Grafana interface will present a dashboard like this: - - - - grafana-dashboard - -
- -
- -### How it works - -Grafana as a monitoring tool, let's you directly connect to datasources within your cluster without extensive configuration. When installing Grafana, Sleakops configures Prometheus datasource, providing quick access to essential metrics through a centralized interface. -When installing Loki or Otel, those datasources are also connected. -
- -
- -### Provisioned Dashboards - -Grafana on Sleakops comes with a series of practical dashboards. They cover general system metrics, offering organized views to monitor various aspects of application performance and resource usage. These dashboards can be used out-of-the-box, offering consistent data visualizations that simplify ongoing system monitoring and management. -Sleakops ships with these dashboards, to monitor Resource allocations: -- Kubernetes / Compute Resources / Cluster -- Kubernetes / Compute Resources / Namespaces (Pods) -- Kubernetes / Compute Resources / Namespaces (Workloads) -- Kubernetes / Compute Resources / Nodes (Pods) - -These ones for networking: -- Kubernetes / Networking / Cluster -- Kubernetes / Networking / Namespaces (Pods) -- Kubernetes / Networking / Namespaces (Workloads) -And some others like CoreDNS which monitors this internal dns and service discovery system. - -All of them are useful to monitor the health of your cluster and the applications running on it. -Specially to resize workloads, investigate if more replicas are needed or if the resources are well allocated. -Dashboards are customizable, allowing you to adjust the layout and data displayed to suit your specific monitoring needs. Also you can create your own dashboards. -
- -
- -### Viewing Deployment Resources - -To observe the resources used by a deployment, navigate to the resource monitoring dashboard in Grafana. -Once logged in, go to: - - Home -> Dashboards -> Kubernetes / Compute Resources / Namespace (Pods) - -This dashboard is set up to display real-time data on CPU, memory, and disk usage, allowing you to track and manage the resources allocated to each deployment within your cluster. - - grafana-dashboard-for-resources - -
diff --git a/docs/cluster/addons/index.mdx b/docs/cluster/addons/index.mdx deleted file mode 100644 index 0823f28c5..000000000 --- a/docs/cluster/addons/index.mdx +++ /dev/null @@ -1,46 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Addons - -In SleakOps, Add-ons enhance the functionality of your EKS cluster by providing essential and optional components that streamline operations, optimize performance, and improve visibility. Essential add-ons include tools for monitoring, DNS management, load balancing, and intelligent node provisioning, ensuring your cluster is robust and efficient. - - -## FAQs - -
- -### Which are the essential add-ons? - -By default SleakOps includes in your infra: - -- **Metric Server**: SleakOps installs the Metric Server to collect cluster and node-level metrics, enabling performance monitoring and informed scaling decisions. -- **External-DNS**: SleakOps deploys External-DNS for automatic DNS record management, ensuring seamless connectivity with user-friendly domain names. -- **Automatic Load Balancer**: SleakOps provisions load balancers automatically, efficiently distributing traffic and maintaining high availability. -- **Karpenter Deployment**: SleakOps deploys Karpenter for intelligent node provisioning, scaling your cluster based on actual resource needs to optimize performance. -
- -
- -### Which optional Add-ons are available? - -- **Grafana**: Visualize and analyze data with Grafana's dashboards, making it easier to monitor system performance and troubleshoot issues. Perfect for tracking application memory and CPU usage. -- **LOKI**: Use Loki for cost-effective log aggregation. It simplifies log management by labeling log streams without indexing content, making it ideal for browsing and monitoring application logs. -- **Kubecost**: Gain real-time insights into Kubernetes cloud costs with Kubecost. This add-on helps you monitor and reduce expenses across projects in your cluster. -- **Prometheus**: SleakOps deploys Prometheus for monitoring and alerting, providing detailed insights into cluster performance and resource utilization. -- **OTEL**: Use OpenTelemetry to collect and analyze distributed traces, enabling you to monitor and optimize application performance across your cluster. -- [**EFS Controller**](./addons/efs): The EFS Controller allows you to manage EFS volumes within your EKS cluster, providing scalable and shared storage for your applications. For more details, refer to the [EFS documentation](/docs/cluster/addons/efs). -- [**EBS Controller**](./addons/ebs): The EBS Controller allows you to manage EBS volumes within your EKS cluster, providing persistent block storage for your applications. For more details, refer to the [EBS documentation](/docs/cluster/addons/ebs). -
- -
- -### How do I set up an Add-on? - -To set up an add-on, follow these steps: -1. Navigate to the Add-ons section in the [Cluster](../cluster) section -2. Select the desired add-on from the list of available options. -3. Configure the add-on settings as needed. -4. Click "Deploy" to install the add-on in your EKS cluster. - -For more detailed instructions, refer to the [Add-ons setup guide](/docs/cluster/addons). -
\ No newline at end of file diff --git a/docs/cluster/addons/kubecost.mdx b/docs/cluster/addons/kubecost.mdx deleted file mode 100644 index 1602615e0..000000000 --- a/docs/cluster/addons/kubecost.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -sidebar_label: Kubecost -pagination_back: cluster/addons/grafana -pagination_next: environment/index ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Kubecost: Cluster Cost Monitoring - -Introduction -[Kubecost ](https://docs.kubecost.com/) is an essential cost management tool integrated with SleakOps that provides detailed visibility into your Kubernetes cluster costs. It helps you understand your cluster spending by breaking down expenses across namespaces, deployments, and individual workloads. - -The best way to read the information that Kubecost has is through its frontend that you can access from the Cluster detail. - -Kubecost landing dashboard shows the costs distributed by Time and Namespace. - - kubecost-main-dashboard - - -## FAQs - -
- -### What does the __idle__ metric means? - -The '__idle__' shown in all Kubecost metrics is a value that shows how much of the capacity of all your filtered options is not being used. Be careful, this value should be prudently analyzed as many of this "idle" capacity will be part of a Node that is not yet fully allocated or should be available for your workloads. -
- - -
- -### Should I be worried if my __idle__ value is too high? - -No, you could optimize this value by reducing the CPU and Memory requests of the [workloads](/docs/project/workload) deployed in your Project, but bear in mind that many of this capacity is allocated as a maximum limit for your resource utilization even if it is not being used, this gives space for the internal scaling of each workload in case it needs it. By the other side, many of these workloads are cluster-critical so they will have an "idle" capacity to let them scale freely. -
- - -
- -### Could I review a Namespace more deeply? - -Kubecost has a good granularity of how much specific you could be when analyzing costs, for example, besides Namespace costs you can start digging and by clicking the Namespace you can analyze the costs of the pods, deployments and others it has allocated on it. -
- -
- -### Can I analyze something else beside namespaces? - -Yes, from the main dashboard you can analyze more specifically the costs of a specific Node as an entity. It also allows you to review the Storage costs that is being used. For example, for a specific node you could see this: - - kubecost-node-costs - -
- -
- -### Does Kubecost has any feature to analyze Networking costs? - -At this moment SleakOps is making available the capacity to allow 'NetworkCosts' which is a feature of Kubecost that estimates the cost of the network traffic that each workload has. This feature is a really good choice if you want to analyze cluster network traffic more deeply. It can be allowed in the Kubecost form: - - kubecost-installation-form - -
\ No newline at end of file diff --git a/docs/cluster/addons/loki.mdx b/docs/cluster/addons/loki.mdx deleted file mode 100644 index 101fba06f..000000000 --- a/docs/cluster/addons/loki.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -sidebar_label: Loki -pagination_back: cluster/addons/grafana -pagination_next: cluster/addons/kubecost ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Loki - -Introduction -[Loki ](https://grafana.com/oss/loki/) is an Addon that enables you to store and query logs from the containers deployed inside the cluster. Loki depends on [Grafana ](/docs/cluster/addons/grafana) as Sleakops uses it as log viewer. It is a crucial tool for troubleshooting as it can store logs of everything inside the cluster which is useful for root cause analysis of problems in your applications or from any resource allocated inside the cluster. - - - loki-log-explorer - - -## FAQs - -
- -### Which dashboards allow me to read logs? - -At this moment, Sleakops provide two dashboard to consult the logs that were recollected by Loki. -- Log Explorer: It's a simple dashboard that allows you to filter by Namespace, Pod, Container and Stream where you can choose between 'stdout' and 'stderr'. It also allows you to search expressions through the 'Search Query' field above. -- Container Log Dashboard: Similar to the previous but is more close to a Logs Dashboard that lets you analyze more complex cases that you might need. It's slower as it required more processing and for general querying it will not be needed. -
- - -
- -### Which is the best way to use Loki? - -Minimizing the time-range that is being queried is the best way for fast and error-free logs revision as this parameter is the one with the most influence in the weight of the response. We recommend to first check for a big picture of when the problem occured and then check in Loki for logs in a more specific time-range as, generally, logs quantities could be really high. -Bear in mind that Loki contains small processing units for reading, writing and as a controller (backend) so big queries might be slow if not having enough read replicas or processing capacity on them. This is modifiable through Sleakops but will also increase costs. -
- -
- -### How can I modify the processing capacity of Loki? - -SleakOps allows you to modify the processing capacity of the deployed Loki through the configuration of the Addon. One way of increasing its capacity is by modifying the quantity of replicas deployed. - - loki-replicas-configuration - -
- -
- -### How does Loki capture and store logs? - -Loki collects logs from each Node of the cluster and therefore, from every container that it's running on it. In order to achieve this, SleakOps uses Promtail that is the default log Collector for Loki, for that reason, every Node of the cluster will have a Promtail instance deployed on it that is in charge of scrapping and pushing them to the Loki write instance that after a certain period of time pushes it to the S3 for long-term storage. -
- -
- -### How is the log collection process? - -The log collector, Promtail, collects and streams to Loki all the logs output through 'stdout' or 'stderr' from each running container in the cluster -
\ No newline at end of file diff --git a/docs/cluster/addons/otel.mdx b/docs/cluster/addons/otel.mdx deleted file mode 100644 index 103ddb813..000000000 --- a/docs/cluster/addons/otel.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -sidebar_label: Open Telemetry -pagination_back: cluster/addons/grafana -pagination_next: cluster/addons/kubecost ---- -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Open Telemetry - -In Sleakops [Opentelemetry ](https://opentelemetry.io/) is an addon that enables you to understand the internal state of a system by examining its telemetry data, which includes traces and metrics. Opentelemetry is installed alongside [Prometheus ](https://prometheus.io/docs/introduction/overview/) to store valuable metrics about the system and [Grafana ](https://grafana.com/docs/) to visualize the data. - -All OpenTelemetry data is accesible through Grafana. Check [our Grafana documentation](/docs/cluster/addons/grafana) to learn more about our implementation. - - -## FAQs -
- - ### **How it works** - -In order to use OpenTelemetry, you need to have a project instrumented with OpenTelemetry. Sleakops will deploy the necessary resources to collect and store the data. -Instrumentation is the process of adding code to your application to collect telemetry data. OpenTelemetry provides libraries to instrument your application in a variety of languages. -Also Sleakops offers Autoinstrumentation for some languages, learn more about it in the section Autoinstrumentation. -
- -
- - ### **Traces and Metrics** - -Telemetry data consist of three main components: traces, metrics and logs. For logs Sleakops offers [Loki](/docs/cluster/addons/loki). Traces are the path of a request through the system, while metrics are the values of the system at a given time. - -The OpenTelemetry addon collects traces from the pods running your project and sends them to the OpenTelemetry collector. The collector stores the traces throw [Tempo ](https://grafana.com/oss/tempo/). Traces could be visualized in Grafana. -Also the collector generates metrics via the [SpanMetrics Connector ](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/connector/spanmetricsconnector/README.md) and stores them in Prometheus. - -A dashboard is available in Grafana for every project that gets instrumented. -
- - -
- - ### Using the Addon - -Let's dive in with a view of the OpenTelemetry dashboard. First three metrics are Request rates, Error rates and Durations, or RED metrics. These metrics are the most important to monitor the health of your application. -Then we see a table that list Top operations (endpoints) and their error rate as well. - - otel-dashboard - - - otel-dashboard-p2 - -Tipically the dashboard gives a quick look to problematic endpoints, application performance bottlenecks, as well as the overall health of the application. -
- -
- - ### Autoinstrumentation - -Sleakops offers autoinstrumentation for some languages. This means that Sleakops will automatically instrument your project with OpenTelemetry. This is done by deploying an init container alongside your project. The sidecar container will collect the telemetry data and send it to the OpenTelemetry collector. -
- -
- - ### Manual instrumentation - -Manual instrumentation resolves the implementation through code of OpenTelemetry in your project. This is done by adding the OpenTelemetry libraries to your project and adding the necessary code to collect the telemetry data. Sleakops presents the endpoint where the telemetry data should be sent. -
- -
- - ### What does Sleakops install when installing OpenTelemetry - -The stack deployed when the addon is installed is the following: -- [OpenTelemetry Operator ](https://opentelemetry.io/docs/kubernetes/operator/) -- [OpenTelemetry Collector ](https://opentelemetry.io/docs/collector/) Custom resource (CRD) -- [OpenTelemetry Instrumentation ](https://opentelemetry.io/docs/kubernetes/operator/automatic/) Custom resource (CRD) for every autoinstrumentated project -- [Tempo ](https://grafana.com/oss/tempo/) with a frontend, and caching enabled -- S3 Bucket as Tempo Backend - -
- - - ## Start using OpenTelemetry - -To start using OpenTelemetry, you need to install the addon. Then go to the Project list page, activate the project Instrumentation using the small white icon at the left of the name of the project. - - instrumentation-options - -These are the options you can choose from: -| Option | Description | -| ------ | ----------- | -| Enabled | Enable or disable instrumentation on this proyect. | -| Autoinstrumentation | Opt for autoinstrumentation. Read more on Autoinstrumentation and Manual Instrumentation | -| Language | If autoinstrumentation is enabled, this option marks the language of the project. Currently GO, Java, NodeJS, Python and DotNet are available. | -| Sample Rate | If autoinstrumentation is enabled, this option marks the sampling rate, where 0 is none and 1 is all the traces. | - - - -Projects that are instrumented are visible in the Project list page. Marked with a green icon, as in the image: - - project-list-with-instrumented-app - \ No newline at end of file diff --git a/docs/cluster/addons/prometheus.mdx b/docs/cluster/addons/prometheus.mdx deleted file mode 100644 index 88630cc84..000000000 --- a/docs/cluster/addons/prometheus.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -sidebar_label: Prometheus -pagination_back: cluster/addons -pagination_next: cluster/addons/grafana ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Prometheus: Monitoring System - -[Prometheus ](https://prometheus.io/) is a monitoring system used to collect metrics of all Kubernetes compute workloads, it is focused on resource utilization and application performance metrics. -Prometheus functions as an intermediary Addon since its components are widely used by other Addons such as Grafana, Kubecost, OpenTelemetry, and more. - -Uses EBS CSI Driver to manage an EBS volume in order to avoid the loss of metrics when the cluster reorders its workloads, this addon is a dependency of Prometheus and it is automatically installed together with Prometheus. - -## FAQs - -
- -### Does Prometheus store metrics? - -Prometheus is not directly in charge of pushing metrics to S3, this is done by a related entity called Thanos. -
- -
- -### How does SleakOps store Prometheus metrics? - -Prometheus has two related storage units: -- It depends on the [EBS CSI Driver ](/docs/cluster/addons/ebs) Addon for short-term storage. -- Uses S3 for long-term storage, this S3 is created in your Account in parallel with Prometheus. -
- -
- -### Can I use Prometheus alone? - -It's main purpose is to collect metrics but it also includes a frontend that can be consumed portforwarding its Pod to make some specific queries to its data or to watch some metrics, but it is far easier and comfortable to watch them with Grafana. -
diff --git a/docs/cluster/index.mdx b/docs/cluster/index.mdx deleted file mode 100644 index 22f677447..000000000 --- a/docs/cluster/index.mdx +++ /dev/null @@ -1,196 +0,0 @@ ---- -sidebar_position: 7 -title: Cluster -pagination_next: environment/index ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Cluster - -On SleakOps, to deploy and run your applications effectively, Kubernetes clusters are essential. - -A cluster is a group of interconnected computers or instances that work together as a single unit to perform specific tasks or run applications. - -In the context of [AWS Elastic Kubernetes Service ](https://docs.aws.amazon.com/eks/) (EKS), a cluster consists of one or more EC2 instances (Nodes) that form the foundation for running containerized applications using Kubernetes orchestration. - -For more information on Kubernetes clusters, see [the Kubernetes documentation ](https://kubernetes.io/docs/concepts/overview/components/). - -## FAQs - -
- - -### What are the benefits of having a cluster? - - -Clusters allow you to deploy multiple instances of the same application effortlessly, ensuring that if one instance fails, others can instantly take over. Additionally, clusters offer auto-scaling capabilities, automatically adjusting the number of worker nodes as traffic fluctuates, which ensures high availability and optimal performance. - -They also provide an excellent way to isolate your production environment from your staging environment. -
- -
- - -### How SleakOps manage clusters? - - -SleakOps offers you the flexibility and control needed to create an EKS cluster that aligns precisely with your requirements. - -To define how to create your infra, you can see: [Designing your Infra: Single Schema Vs. Multi Schema ](/docs/provider/schemas) -
- -
- - -### What happens when a Cluster is created on SleakOps? - - -SleakOps creates a group of Node Pools that will allow you to run your applications using Kubernetes orchestration based on your needs. See [Node Pools](/docs/cluster/nodepools). -
- -
- - -### What is Karpenter? - - -In the process of creating your EKS cluster, node provisioning is seamlessly managed by advanced Karpenter technology. Karpenter automatically provisions nodes with just the required resources and scales the cluster based on application demands, removing concerns about deprovisioning. As your workload changes, Karpenter adjusts nodes and resources dynamically, optimizing performance and cost. See [Karpenter Web](https://karpenter.sh/) -
- -
- - -### How do I choose the right instance types for my cluster? - - -Choosing the right instance types depends on your application requirements, cost optimization goals, and availability needs. SleakOps provides different node pools (Spot, On-Demand, Reserved) to help you optimize costs while maintaining performance. For detailed guidance on instance types and cluster sizing, see [Instance Types and Node Management](/docs/cluster/nodepools/instance-types). -
- -
- - -### How does SleakOps handle cluster updates and upgrades? - - - -1. We notify users about new version coming in approximatively 1 month in advance. -2. Upgrade clusters for a group of selected customers. -3. Upgrade all non-production flagged clusters. -4. Upgrade all clusters. -
- -
- - -### How do I control cluster's expenses? - - -SleakOps allows you to see all your clusters expenses in one place, classified by account, resources, dates. - -Access _Clusters_, select one and click the button: $ -
- -
- - -### How do I monitor my cluster? - - -You can monitor your cluster's activity by accessing Clusters, and clicking into the button: - - - cluster-monitoring - - -
- -
- - -### Can I connect a Staging service to a Production service if they are in different clusters? - - -Tenés razón, se me pasó destacar el título en la versión en inglés. Aquí tenés el punto 2 completo, con los títulos bien marcados para ambos idiomas y la lógica de cuentas corregida: - -### **2. ¿Puedo conectar un servicio de Staging con uno de Producción si están en diferente clúster?** - -**Versión en Español** - -Bajo un esquema de **multi-cuenta**, los entornos se encuentran en clústeres y cuentas de AWS separadas (Prod y Dev). En esta configuración, están totalmente aislados y no existe peering entre sus VPCs. Por el contrario, en caso de utilizar una **cuenta única**, ambos entornos conviven dentro del mismo clúster. - -La **buena práctica** es que permanezcan desconectados para garantizar el aislamiento total de los datos. El uso de un mismo clúster o de un esquema único (_single schema_) conlleva riesgos críticos de seguridad: - -- **Corrupción de Datos:** Un bug en el código de Staging podría ejecutar comandos accidentales (como `DROP TABLE` o `DELETE`) que impacten directamente en la base de datos de Producción. -- **Compromiso de Credenciales:** Si un atacante compromete el entorno de Staging (que suele tener políticas de acceso más flexibles), podría escalar privilegios y acceder a los secretos o llaves maestras de Producción. - -### **2. Can I connect a Staging service to a Production service if they are in different clusters?** - -**English Version** - -In a **multi-account** setup, environments reside in separate clusters and AWS accounts (Prod and Dev). In this configuration, they are completely isolated, and no VPC peering exists. Conversely, in a **single-account** setup, both environments coexist within the same cluster. - -**Best practice** is to keep them disconnected to ensure strict security and data isolation. Sharing a cluster or using a single database schema introduces critical risks: - -- **Data Corruption:** A bug in Staging code could trigger accidental commands (such as `DROP TABLE` or `DELETE`) that directly impact live Production data. -- **Credential Compromise:** If an attacker compromises the Staging environment (which often has more relaxed security policies), they could escalate privileges to gain access to critical Production credentials or master keys. -
- -## Lets create your first Cluster on SleakOps - -:::warning -Creating a cluster incurs costs on your AWS account, as the EKS service includes a fixed fee plus variable costs based on resource consumption. -::: - -### 1. Select the account under the cluster’ll be created. - -For more information regarding accounts, see [Accounts](/docs/provider/accounts). - -
- provider-account-select -
-

On the left pane, you will see a selector with the account names, select the one you'll use based on how you decide to manage your clusters and environments.

-

We suggest to move forward with a Multiple Schema configuration, that aligns with the best practices. To follow this schema select the development account to create the cluster for your staging environments, and the production account for the production cluster.

-

Check [Designing your Infra: Single Schema Vs. Multi Schema](/docs/provider/schemas) for more information.

-
-
- -### 2. Navigate to create Cluster section - -Into the _Left Pane_, access _Clusters_ option and then, at the top right corner, click on the _Create_ button. - - - cluster-dashboard - - -### 3. Set up your Cluster - -With your _Account_ selected, you will access the following form: - - - cluster-create - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Setting** | **Description** | -| --- | --- | -| **Name** | Identify your cluster | -| Description | Optional space to describe what is included into this cluster. | -| **Architecture Type** | Select the architecture type to be used during the creation for your instances: (64-Bit) ARM or (64-Bit) X86, based on your performance and compatibility needs. Then you'll be able of creating new instances using a different architecture. | -| Production | **High-Availability (HA) Configuration**: When enabled, this setting transforms your cluster into a production-ready environment by distributing the EKS cluster across multiple Availability Zones (AZs). This provides redundancy and fault tolerance, ensuring uninterrupted operations even if one AZ experiences issues. Production clusters also benefit from enhanced monitoring, automated backups, and optimized resource allocation for critical workloads. | - -Once you've completed the form, click on _Submit_ in order to trigger the cluster creation into the selected account on AWS. - -This process will create a Cluster with five node pools by default. See [Node Pools](/docs/cluster/nodepools). diff --git a/docs/cluster/nodepools/creating-nodepool.mdx b/docs/cluster/nodepools/creating-nodepool.mdx deleted file mode 100644 index 17d4859eb..000000000 --- a/docs/cluster/nodepools/creating-nodepool.mdx +++ /dev/null @@ -1,45 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Creating a Node Pool - -### 1. Access your cluster's settings to access the Node Pools section - -From the Cluster Listing, select one and access the Setting option. Then, click on the Node Pools box. - - - cluster-settings-section - - -### 2. Click on Create - -Into the Node Pool section, if you have permission, you'll find the *Create* option at the top right corner. Click on it. - -Notice, that the quantity of Node Pools per Cluster might be limited by your plan. - - - cluster-nodepool-section - - -### 3. Set up you node pool - -In the create Node Pool modal enter: - -| **Setting** | **Description** | -| --- | --- | -| **Name** | Enter the name of your choice for your node pool. It cannot be repeated within a cluster. | -| **Instance Type** | Select one or more instance types (e.g. t3.medium, m5.large, c5.xlarge) based on your compute requirements. You can choose multiple instance types to provide flexibility for the autoscaler to provision the most cost-effective available instance. | -| **Node Type** | Select one or more billing models for your instances. You can choose multiple options, and the system will prioritize them in the following order: **Reserved** (best price with commitment) → **Spot** (best price without commitment) → **On Demand** (highest price but most flexible). See [**What are the different kind of node pools?**](/docs/cluster/nodepools) | -| **Architecture Type** | Select the architecture type to be used during the creation for your instances: (64-Bit) ARM or (64-Bit) X86, based on your performance and compatibility needs. Then you'll be able of creating new instances using a different architecture. | -| **Memory Limit** | This sets the maximum memory the cluster can use as services scale. The autoscaler provisions instances based on demand, but this doesn't mean the cluster always uses the maximum memory; it just defines the upper limit for the autoscaler. | -| **CPU Limit** | This sets the maximum CPU the cluster can use as services scale. The autoscaler provisions instances based on demand, but this doesn't mean the cluster always uses the maximum CPU; it just defines the upper limit for the autoscaler. | -| **Storage** | Set by default in 20GB, you can modify it based on your need. | -| **(Per Node) Minimum Memory** | Defines the minimum amount of memory that must be available on each node before the autoscaler considers the node as "utilized". This setting helps prevent over-provisioning by ensuring nodes maintain a minimum memory buffer for system processes and unexpected workload spikes. | -| **(Per Node) Minimum CPU** | Defines the minimum amount of CPU that must be available on each node before the autoscaler considers the node as "utilized". This setting helps prevent over-provisioning by ensuring nodes maintain a minimum CPU buffer for system processes and unexpected workload spikes. | - -Once you've completed the form, click on *Create* in order to trigger the node pool creation into the selected cluster. \ No newline at end of file diff --git a/docs/cluster/nodepools/index.mdx b/docs/cluster/nodepools/index.mdx deleted file mode 100644 index 06f84244f..000000000 --- a/docs/cluster/nodepools/index.mdx +++ /dev/null @@ -1,94 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Node Pools - -A node pool is essentially a collection of nodes within a Kubernetes cluster that have similar configurations, such as the same machine type, operating system, and instance size. - -All nodes in a node pool are configured identically, making it easier to manage and maintain consistency across your cluster. This is especially useful when scaling the cluster, as additional nodes added to the pool will have the same specifications. - -When a Cluster is created on SleakOps, a set of node pools are created, based on the architecture type you’ve selected during the cluster selection. - -- **sleakops-build-arm64 & sleakops-build-amd64:** A default ones to run properly your builds. They can’t be edited or deleted. -- **sleakops-core:** Ensures the scalability of the critical components and cluster addons. -- **ondemand-arm/amd:** Ready for you to use. -- **spot-arm/amd:** Ready for you to use. - -:::warning -Do not delete manually the following node pools: sleakops-build-arm64, sleakops-build-amd64, sleakops-core. -::: - - - nodepool-example-schema - - - -## FAQs - -
- -### What are the different kind of node pools? - -- **Reserved:** are instances that you commit to using for a specific term (1 or 3 years) in exchange for significant cost savings (up to 75% less than On-Demand pricing). They provide the best price with commitment and are ideal for: - - **Predictable Workloads:** Applications with steady, predictable usage patterns that can benefit from long-term commitment. - - **Production Environments:** Critical applications that require guaranteed capacity and cost optimization. - - **Cost Optimization:** Workloads where you can commit to usage for extended periods to maximize savings. - -- **Spot:** are instances that take advantage of spare capacity in a cloud provider's data center, offering up to 90% cost savings compared to On-Demand instances. While they can be terminated if the provider needs capacity back, **this is not a limitation but an opportunity** for well-architected applications. Ideal for: - - **Cloud-Native Applications:** Applications designed with stateless architecture that can handle pod interruptions and restart quickly. - - **Cost-Optimized Workloads:** Perfect for applications where significant cost savings (up to 90%) outweigh the need for guaranteed capacity. - - **Resilient Systems:** Applications with proper health checks, graceful shutdowns, and automatic restart capabilities. - -- **On-Demand:** are instances in a Kubernetes cluster that run with a fixed pricing model, providing reliable access to compute resources without the risk of interruption. Can be used: - - **Critical Workloads:** Applications that require consistent uptime, such as databases, financial systems, or other critical services. - - **Long-Running Tasks:** Tasks that cannot be interrupted without significant consequence. - -**Priority Order:** When you select multiple node types, the system will automatically prioritize them in the following order to optimize costs: **Reserved** (best price with commitment) → **Spot** (best price without commitment) → **On-Demand** (highest price but most flexible). - -For detailed guidance on choosing the right instance types and evaluating application compatibility, see [Instance Types and Node Management](/docs/cluster/nodepools/instance-types). -
- -
- -### How many Node Pools can I have? - -SleakOps base plan, allows you to have three extra node pool besides the build ones. If you need more, contact us. -
- -
- -### Can I convert a spot node pool into an on demand and viceversa? - -You can't directly convert a Spot node pool into an On-Demand node pool or vice versa, but you can achieve the desired outcome through a series of steps in SleakOps. Here’s how you can transition between node pools types: - -1. Create a Node Pool of the new desired type. -2. Updade your workloads and projects to run into the new Node Pool. -3. Delete the old node pool if it is not longer needed. -
- -
- -### Can I convert a ARM node pool into an X86 and viceversa? - -You can't change the architect type of a node pool, but you can achieve the desired outcome through a series of steps in SleakOps. Here’s how you can transition between node pools architectures: - -1. Create a Node Pool of the new desired architecture. -2. Update your workloads and projects to run into the new Node Pool. -3. Delete the old node pool if it is not longer needed. -
- -
- -### How do I create a Node Pool? - -Follow [Creating a Node Pool](/docs/cluster/nodepools/creating-nodepool) -
- -
- -### How do I manage my a Node Pool? - -Follow [Managing a Node Pool](/docs/cluster/nodepools/managing-nodepool) -
\ No newline at end of file diff --git a/docs/cluster/nodepools/instance-types.mdx b/docs/cluster/nodepools/instance-types.mdx deleted file mode 100644 index 70d7baa88..000000000 --- a/docs/cluster/nodepools/instance-types.mdx +++ /dev/null @@ -1,84 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Instance Types and Node Management - -In SleakOps, efficient instance type management is crucial for optimizing costs and performance of your clusters. This guide will help you understand the different available instance types and how to make informed decisions about their usage. - -## Available Instance Types - -### 1. Spot Instances - -Spot instances take advantage of unused capacity in AWS data centers, offering significant discounts (up to 90% less than On-Demand) but with the risk of interruption. - -**Characteristics:** -- **Cost:** Up to 90% discount vs On-Demand -- **Availability:** Variable, can be interrupted with 2 minutes notice -- **Ideal use:** Fault-tolerant applications, batch processing, development environments - -### 2. On-Demand Instances - -On-Demand instances provide immediate and reliable access to compute resources with fixed pricing per hour or second. - -**Characteristics:** -- **Cost:** Fixed price, higher than Spot -- **Availability:** Guaranteed, no interruption risk -- **Ideal use:** Critical applications, databases, production services - -### 3. Reserved Instances - -Reserved instances offer significant discounts (up to 75%) in exchange for a usage commitment of 1 or 3 years. - -**Characteristics:** -- **Cost:** Up to 75% discount with commitment -- **Availability:** Guaranteed for the committed period -- **Ideal use:** Predictable workloads, stable production environments - -## FAQs - -
- -### How to evaluate if my application works with Spot instances? - - -To determine if your application is compatible with Spot instances, evaluate the following aspects: - -**✅ IDEAL applications for Spot:** -- **Stateless:** Don't maintain critical local state -- **Fault-tolerant:** Can recover from interruptions -- **Batch processing:** Tasks that can be restarted -- **Development/Testing:** Non-critical environments -- **Microservices:** With circuit breakers and retry logic -- **Tested with FIS:** Applications validated with [AWS Fault Injection Simulator](https://aws.amazon.com/fis) to test node interruptions - -**❌ Applications NOT recommended for Spot:** -- **Real-time applications:** That require constant latency -- **Long-running processes:** That cannot be easily restarted -- **Payment systems:** That require high availability -
- -
- -### When should I use On-Demand instances? - - -Use On-Demand instances in the following scenarios: - -**Critical Applications:** -- Payment and financial transaction systems -- High-availability APIs (99.9%+ SLA) -- Authentication and authorization services - -**Specific Workloads:** -- Processes that cannot be interrupted -- Applications with strict latency requirements -- Legacy systems that are not fault-tolerant -- Production environments without redundancy - -**Cost Considerations:** -- When downtime cost exceeds Spot savings -- For workloads with unpredictable usage patterns -- In cases where guaranteed capacity is critical - -
diff --git a/docs/cluster/nodepools/managing-nodepool.mdx b/docs/cluster/nodepools/managing-nodepool.mdx deleted file mode 100644 index f2eb37a32..000000000 --- a/docs/cluster/nodepools/managing-nodepool.mdx +++ /dev/null @@ -1,52 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Managing a Node Pool - -Here you will find: - -- How to update the settings of a node pool -- How to delete a node pool. - -:::info - -Remember that build node pools can’t be edited or deleted. - -::: - -### 1. Access your cluster’s settings to access the Node Pools section - -From the *Cluster Listing*, select a node pool and access the *Setting* option. Then, click on the *Node Pools* box. - -### 2. Select the Node Pool - -
- cluster-nodepool-nodecard -
-

Once you have selected your node pool, you’ll find the access to update and delete them.

-

*Each node pool is displayed with CPU and Memory bars that show you how much capacity is left. The full bar represents the total capacity of the node pool, while the colored portion indicates the combined capacity used by all associated projects/workloads.*

-
-
- -## Changing node pool setting - -### 1. Click the setting button at the top right of the node pool card - -Update the parameters into the modal and click on *Save*. - - - cluster-nodepool-modifying - - -## Deleting a node pool - -### 1. Click the bin button at the top right of the node pool card - -
- cluster-nodepool-deletion -
-

Click on Delete to confirm and trigger the action on SleakOps.

-
-
diff --git a/docs/cluster/shutdown-cluster.mdx b/docs/cluster/shutdown-cluster.mdx deleted file mode 100644 index 5c1529e66..000000000 --- a/docs/cluster/shutdown-cluster.mdx +++ /dev/null @@ -1,62 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Shutdown Cluster - -It is the capacity to turn off all your cluster's resources at a specified scheduled time to avoid incurring costs during that time frame. -When this feature is activated you will be able to turn ON or OFF your cluster at any time, even outside the scheduled time you've configured. - -:::warning -When your cluster is OFF, you will not be able to run any Build, Deploy or other actions that require its resources to run. -::: - -### How can I activate this feature? -Cluster Shutdown should be manually activated in Cluster Settings through the "Scheduled Shutdown" card. - -shutdown - - -shutdown-config - - -When you set the Cluster Shutdown, you're creating two cronjobs: one for turning ON the cluster at the scheduled time and another for turning it OFF. -The configuration fields are the following: - -| **Attribute** | **Description** | -| --- | --- | -| **Days** | The days that the Shutdown crons will run. | -| **Auto Downtime (Local Time)** | The hour at which the OFF action runs. It is shown in your local time.| -| **Auto Uptime (Local Time)** | The hour at which the ON action runs. It is shown in your local time. | - -Below you will see a box that shows 'Generated Cron Expressions (UTC)', which displays the OFF and ON cron expressions for these two actions in UTC time. - -## How can I shutdown my cluster at any time? - -In order to shutdown a cluster, just click on the *Stop* button and confirm the action. - -This action can be performed just in *Active* clusters. - -:::warning -Shutdown requires that no dependencies are being updated, and no build or workload processes are active. -::: - -cluster-shutdown-active - -### Turning On cluster - -To turn on a cluster, click on the *Play* button and confirm the action. - -This action is available for clusters in *Scheduled Shutdown* and *Off* status - -cluster-shutdown-inactive - -:::info -The cron actions that turn the cluster ON or OFF based on the scheduled time will still run even if you have manually turned it ON or OFF. -::: \ No newline at end of file diff --git a/docs/connect_to_git.mdx b/docs/connect_to_git.mdx deleted file mode 100644 index 65fb8a872..000000000 --- a/docs/connect_to_git.mdx +++ /dev/null @@ -1,232 +0,0 @@ ---- -sidebar_label: Connect to Git -sidebar_position: 9 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Connect your Git Account - -To leverage the full power of SleakOps, you'll need to connect your Git account to our platform. This connection allows SleakOps to access your repositories, enabling seamless integration, automated deployments, and efficient management of your codebases - -SleakOps supports integration with the following Git providers: -- Github -- GitLab (including self-hosted instances) -- Bitbucket - -## FAQs - -
- -### Can I connect more than one Git Account? - -Not allowed yet. -
- -
- -### How do I Connect my account? - -Access the *Setting >> Autorizations* section in SleakOps. Select your provider and grant access to SleakOps. See steps below. -
- -
- -### Can I change my Git Account? - -Yes, you can do it by deleting de existing one and connecting the new one. Be sure the new account has access to the projects using in SleakOps. -
- - -
- -### How do I disconnect an account? - -By clicking in the X button next to the git provider. Consider that current projects will continue to function but won't be able to receive updates once this integration is removed. - -If you're using GitHub, you will also need to remove the Sleakops app from your GitHub account to complete the deletion process. -
- -## Set up your git Account -### 1. Navigate to the git authorization section -Into the Left Pane, access the _Settings_ option and then, click on _Authorizations_. - - -git-authorization-list - - -### 2. Select your Git provider and grant access to SleakOps -Click on your provider an follow the required steps for each one in order to grant access. - - -git-authorization-list-raw - - -## Integrations - -
- -### Github - - -setup-github - -
- -
- -### Gitlab - - -setup-gitlab - -
- -
- -### Bitbucket - - -setup-bitbucket - -
- -
- -### Self-Hosted GitLab - - -Connecting a self-hosted GitLab instance requires creating an OAuth application in your GitLab installation, as each self-hosted instance has a unique URL and authentication system. - -#### Prerequisites - -- Administrator access to your self-hosted GitLab instance -- Your GitLab instance must be accessible from the internet (SleakOps needs to communicate with it) -- HTTPS is strongly recommended for security - -#### Step 1: Create an OAuth Application in Your GitLab Instance - -1. **Access the Applications page** - - Navigate to your GitLab instance: `https://yourgitlab.com/-/profile/applications` - - Or go to: User Settings → Applications - -2. **Create a new application** - - Click "Add new application" or "New application" - - Fill in the following information: - -| **Field** | **Value** | -|-----------|----------| -| **Name** | SleakOps (or any descriptive name) | -| **Redirect URI** | https://api.sleakops.com/api/integrations/self-gitlab/callback/ | -| **Scopes** | Select `api` and `offline_access` (required for persistent access and automatic token renewal) | - -:::warning -The Redirect URI must be **exactly** as shown below (including the trailing slash): -``` -https://api.sleakops.com/api/integrations/self-gitlab/callback/ -``` -Do not modify this URL. -::: - -3. **Save the application** - - Click "Save application" or "Submit" - - You will be shown two important values: - - **Application ID** (Client ID) - - **Secret** (Client Secret) - -:::caution -Copy both the Application ID and Secret immediately. The Secret will only be shown once and cannot be retrieved later. -::: - -:::tip -Store these credentials securely. If you lose the Secret, you'll need to regenerate the OAuth application. -::: - -#### Step 2: Connect Your Self-Hosted GitLab to SleakOps - -1. **Navigate to SleakOps Authorizations** - - Log in to your [SleakOps account](https://console.sleakops.com/settings/authorizations/) - - Go to Settings → Authorizations - -2. **Select Self-Hosted GitLab** - - Click on "Self-Hosted GitLab" integration option - -3. **Enter your OAuth application details** - - **GitLab Instance URL**: Enter your GitLab instance URL (e.g., `https://gitlab.yourcompany.com`) - - Do not include a trailing slash - - Must start with `http://` or `https://` - - **Application ID**: Paste the Application ID from Step 1 - - **Application Secret**: Paste the Secret from Step 1 - -4. **Authorize SleakOps** - - Click "Connect" or "Authorize" - - You will be redirected to your GitLab instance - - Review the permissions and click "Authorize" - - You will be redirected back to SleakOps - -5. **Verify the connection** - - Once redirected, you should see your self-hosted GitLab account listed as connected - - You can now select repositories from your self-hosted GitLab instance when creating projects - -#### What permissions does SleakOps need? - -SleakOps requires two scopes: - -**`api` scope** grants the following permissions: -- Read repository information and file contents -- Create and manage branches -- Create and update files (for automated deployments) -- Create merge requests -- Access commit information - -**`offline_access` scope** allows SleakOps to: -- Obtain a refresh token for long-term access -- Automatically renew expired access tokens -- Maintain persistent connection without requiring re-authorization - -:::warning -Without `offline_access`, the access token will expire after ~2 hours and the integration will break until manually re-authorized. -::: - -These permissions are required for SleakOps to clone your repositories, build container images, deploy applications, and manage infrastructure-as-code. - -#### Troubleshooting - -##### Connection fails with "Invalid URL" error -- Ensure your GitLab instance URL does not end with a trailing slash -- Verify the URL starts with `http://` or `https://` -- Example: ✅ `https://gitlab.company.com` ❌ `https://gitlab.company.com/` - -##### Authorization redirects but connection fails -- Verify the Redirect URI in your GitLab OAuth application matches exactly: `https://api.sleakops.com/api/integrations/self-gitlab/callback/` -- Check that the Application ID and Secret are correct -- Ensure both `api` and `offline_access` scopes were selected when creating the OAuth application - -##### Network/Firewall issues -- Ensure your self-hosted GitLab instance is accessible from SleakOps servers -- If your GitLab is behind a firewall, you may need to whitelist SleakOps IP addresses -- Contact SleakOps support for IP whitelist information - -##### SSL/Certificate errors -- Self-signed certificates may cause connection issues -- Use a valid SSL certificate from a trusted certificate authority -- Ensure your GitLab instance has proper HTTPS configuration - -
diff --git a/docs/domain/delegation.mdx b/docs/domain/delegation.mdx deleted file mode 100644 index 32011a50b..000000000 --- a/docs/domain/delegation.mdx +++ /dev/null @@ -1,466 +0,0 @@ ---- -sidebar_label: Domain Delegation Guide ---- - -# Domain Delegation Guide - -Learn how to properly delegate DNS for each domain level in Sleakops. - ---- - -## Overview - -When Sleakops creates a hosted zone, you need to delegate the domain by updating DNS records at your domain provider (registrar). This guide explains the process for each domain level. - ---- - -## Provider Domain Delegation - -### What you're delegating -Your root domain (e.g., `sleakops.com`) to AWS Route 53 via Sleakops. - -```mermaid -sequenceDiagram - participant U as You - participant S as Sleakops - participant R as Domain Registrar - participant AWS as AWS Route 53 - - U->>S: Create Provider Domain - S->>AWS: Create Hosted Zone - AWS-->>S: Return 4 Nameservers - S-->>U: Display Nameservers - U->>R: Update Nameservers - R->>AWS: Delegate DNS Authority - U->>S: Click "Check Delegate" - S->>AWS: Verify Delegation - AWS-->>S: Confirmation - S-->>U: ✅ Delegation Complete -``` - -### Steps - -1. **Create the Provider domain in Sleakops** - - Sleakops creates a hosted zone in AWS Route 53 - - You'll see a table with 4 nameserver (NS) records - -2. **Locate the nameservers** - -``` -ns-123.awsdns-12.com -ns-456.awsdns-45.net -ns-789.awsdns-78.org -ns-012.awsdns-01.co.uk -``` - - -3. **Update your domain registrar** - - Log into your domain registrar (GoDaddy, Namecheap, Google Domains, etc.) - - Find the DNS or Nameserver settings - - Replace existing nameservers with the 4 AWS nameservers from Sleakops - - Save changes - -4. **Verify delegation** - - Click **"Check Delegate"** button in Sleakops - - Wait for DNS propagation (can take up to 48 hours, usually faster) - - Green checkmark indicates successful delegation - -### Common Registrars - -
-GoDaddy - -1. Go to [Domain Manager](https://account.godaddy.com/products) -2. Click on your domain -3. Scroll to "Nameservers" → Click "Change" -4. Select "Enter my own nameservers (advanced)" -5. Add all 4 AWS nameservers -6. Save - -
- -
-Namecheap - -1. Go to [Domain List](https://ap.www.namecheap.com/domains/list/) -2. Click "Manage" next to your domain -3. Select "Custom DNS" under Nameservers -4. Add all 4 AWS nameservers -5. Click the green checkmark - -
- -
-Cloudflare - -**Note:** If using Cloudflare, you must disable Cloudflare proxy for proper delegation. - -1. Remove the domain from Cloudflare, OR -2. Update nameservers to AWS (removes Cloudflare DNS management) - -
- ---- - -## Environment Domain Delegation - -### What you're delegating -A subdomain (e.g., `qa.sleakops.com`) to its own hosted zone. - -```mermaid -sequenceDiagram - participant U as You - participant S as Sleakops - participant R as Domain Registrar - participant AWS as AWS Route 53 - - U->>S: Create Provider Domain - S->>AWS: Create Hosted Zone - AWS-->>S: Return 4 Nameservers - S-->>U: Display Nameservers - U->>R: Update Nameservers - R->>AWS: Delegate DNS Authority - U->>S: Click "Check Delegate" - S->>AWS: Verify Delegation - AWS-->>S: Confirmation - S-->>U: ✅ Delegation Complete -``` - -### Two Scenarios - -#### Scenario A: Parent domain IS managed by Sleakops - -```mermaid -graph LR - A[sleakops.com
in Sleakops] --> B[qa.sleakops.com
in Sleakops] - B --> C[✅ Automatic
Delegation] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#1a202c,stroke:#2e7d32,stroke-width:2px -``` - -**Good news!** Sleakops automatically creates the NS records in the parent hosted zone. - -✅ **No action needed** - delegation is automatic - ---- - -#### Scenario B: Parent domain is NOT managed by sleakops - -```mermaid -graph LR - A[sleakops.com
External DNS] -.-> B[qa.sleakops.com
in Sleakops] - B --> C[⚠️ Manual
NS Records Required] - - style A fill:#594440,stroke:#c62828,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#1f2020,stroke:#e65100,stroke-width:2px -``` - -If `sleakops.com` is managed outside Sleakops, but you want `qa.sleakops.com` in Sleakops: - -1. **Create the Environment domain in Sleakops** - - Sleakops creates a hosted zone - - You'll see 4 nameserver records - -2. **Add NS records to parent domain** - - Go to wherever `sleakops.com` DNS is managed (registrar, Cloudflare, etc.) - - Create 4 NS records for the subdomain: - -``` -Record Type: NS -Name: qa -Value: ns-123.awsdns-12.com -Record Type: NS -Name: qa -Value: ns-456.awsdns-45.net -(repeat for all 4 nameservers) -``` - -3. **Verify delegation** - - Click **"Check Delegate"** in Sleakops - - Wait for DNS propagation (usually 5-30 minutes) - ---- - -## Webservice Domain Configuration - -### What happens -Webservice domains (e.g., `api.qa.sleakops.com`) are **automatically configured**. - -```mermaid -graph LR - A[Deploy Webservice] --> B[Sleakops Creates
CNAME Record] - B --> C[Points to ALB] - C --> D[✅ Ready to Use] - - style A fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style B fill:#1a202c,stroke:#2e7d32,stroke-width:2px - style C fill:#1a202c,stroke:#2e7d32,stroke-width:2px - style D fill:#1a202c,stroke:#90cdf4,stroke-width:3px -``` - - -✅ **No delegation needed** - Sleakops automatically: -- Creates CNAME record in the environment's hosted zone -- Points to the Application Load Balancer (ALB) -- Configures SSL certificate - -**You don't need to do anything!** - ---- - -## Alias Domain Configuration - -Alias domains require manual DNS configuration at your domain provider. - -### Scenario A: Alias matches existing hosted zone - -**Example:** Your alias is `api.external.com` and you already have `external.com` as a Provider or Environment in Sleakops. - -```mermaid -sequenceDiagram - participant U as You - participant S as Sleakops - participant DNS as Your DNS (external.com) - participant ALB as AWS ALB - - U->>S: Create Alias: api.external.com - S-->>U: Provide Certificate Validation Records - U->>DNS: Add Validation CNAME Records - DNS-->>S: Certificate Validated ✅ - S-->>U: Provide ALB Endpoint - U->>DNS: Add CNAME to ALB - DNS->>ALB: Traffic Routed - ALB-->>U: Service Accessible -``` - -#### For SSL Certificate Validation - -1. **Sleakops provides validation records** - - You'll see CNAME records for certificate validation - - Example: - -``` -_acme-challenge.api.external.com → _validation123.acme.aws.com -``` - -2. **Add validation records to your DNS** - - Go to the hosted zone for `external.com` (in Sleakops or wherever it's managed) - - Add the CNAME records exactly as shown - - Wait for certificate validation (usually 5-15 minutes) - -#### For Traffic Routing - -3. **Sleakops provides ALB endpoint** - - You'll see the ALB DNS name: - -``` -ALB: my-alb-123456.us-east-1.elb.amazonaws.com -``` - -4. **Create CNAME record** - - Go to your DNS management for `external.com` - - Create a CNAME record: - -``` -Record Type: CNAME -Name: api -Value: my-alb-123456.us-east-1.elb.amazonaws.com -TTL: 300 -``` - -5. **Verify** - - Test the domain: `curl https://api.external.com` - - Should return your service response - ---- - -### Scenario B: Alias doesn't match any hosted zone - -**Example:** Your alias is `anything.com` and this domain is not managed in Sleakops. - -```mermaid -sequenceDiagram - participant U as You - participant S as Sleakops - participant R as Registrar (anything.com) - participant ALB as AWS ALB - - U->>S: Create Alias: anything.com - S->>S: Create SSL Certificate - S-->>U: Provide Validation Records - U->>R: Add Validation CNAME Records - R-->>S: Certificate Validated ✅ - S-->>U: Provide ALB Endpoint - U->>R: Add CNAME/A Record to ALB - R->>ALB: Traffic Routed - ALB-->>U: Service Accessible -``` - - -#### For SSL Certificate - -1. **Sleakops creates SSL certificate** - - Certificate validation records are provided - - Example: - - -_acme-challenge.anything.com → _validation456.acme.aws.com - - -2. **Add validation records** - - Log into your domain provider for `anything.com` - - Add the CNAME records for certificate validation - - Wait for validation (5-15 minutes) - -#### For Traffic Routing - -3. **Sleakops provides ALB endpoint** - -ALB: my-alb-789012.us-east-1.elb.amazonaws.com - - -4. **Configure DNS at your provider** - - **Option 1: CNAME (for subdomains)** - -``` -Record Type: CNAME -Name: www (or subdomain) -Value: my-alb-789012.us-east-1.elb.amazonaws.com -``` - - **Option 2: A Record with ALIAS (for root domain)** - - Some providers support ALIAS records (Route 53, Cloudflare) - -``` -Record Type: A (ALIAS) -Name: @ (root) -Value: my-alb-789012.us-east-1.elb.amazonaws.com -``` - -**Option 3: A Record with IP (not recommended)** - - Lookup ALB IPs and create A records - - ⚠️ IPs may change - use CNAME when possible - -5. **Verify** - - Test: `curl https://anything.com` - - Ensure SSL certificate is valid - ---- - -## Verification Checklist - -### Provider/Environment Domain -- [ ] Nameservers updated at registrar -- [ ] "Check Delegate" button shows success -- [ ] DNS lookup returns correct nameservers: `dig NS yourdomain.com` - -### Webservice Domain -- [ ] Webservice is deployed and running -- [ ] Domain resolves: `curl https://api.qa.sleakops.com` -- [ ] SSL certificate is valid (no browser warnings) -- [ ] DNS lookup returns correct CNAME: `dig CNAME api.qa.sleakops.com` - -### Alias Domain -- [ ] Certificate validation records added -- [ ] Certificate shows as validated in Sleakops -- [ ] CNAME/A record points to ALB -- [ ] Domain resolves: `curl https://your-alias.com` -- [ ] DNS lookup returns correct CNAME: `dig CNAME your-alias.com` -- [ ] SSL certificate is valid - ---- - -## Troubleshooting - -### "Check Delegate" fails - -```mermaid -graph TD - A[Check Delegate Fails] --> B{All 4 Nameservers Added?} - B -->|No| C[Add Missing Nameservers] - B -->|Yes| D{Any Typos?} - D -->|Yes| E[Fix Typos] - D -->|No| F{Saved at Registrar?} - F -->|No| G[Save Changes] - F -->|Yes| H[Wait for Propagation
up to 48 hours] - - C --> I[Try Again] - E --> I - G --> I - H --> I - - style A fill:#594440,stroke:#c62828,stroke-width:2px - style I fill:#1a202c,stroke:#f2f2f2,stroke-width:2px -``` - -**Issue:** Nameservers not properly delegated - -**Solutions:** -1. Verify you added ALL 4 nameservers -2. Check for typos in nameserver values -3. Wait longer (DNS propagation can take up to 48 hours) -4. Clear DNS cache: `dig @8.8.8.8 yourdomain.com` -5. Verify at registrar that changes were saved - ---- - -### Certificate validation stuck - -**Issue:** SSL certificate not validating - -**Solutions:** -1. Verify CNAME records are added correctly (no extra dots, correct values) -2. Check TTL hasn't expired -3. Remove any conflicting DNS records -4. Wait 15-30 minutes for DNS propagation -5. Check DNS: `dig _acme-challenge.yourdomain.com` - ---- - -### Domain not resolving - -**Issue:** Domain doesn't load your service - -**Solutions:** -1. Verify CNAME/A record points to correct ALB endpoint -2. Check ALB is healthy and receiving traffic -3. Verify webservice is deployed and running -4. Test with `curl -v https://yourdomain.com` for detailed errors -5. Check security groups allow traffic on port 443 - ---- - -### SSL certificate errors in browser - -**Issue:** Browser shows "Not Secure" or certificate warnings - -**Solutions:** -1. Verify certificate is validated in Sleakops -2. Check certificate includes your domain name -3. Clear browser cache -4. Verify correct certificate is attached to ALB listener -5. Check certificate hasn't expired - ---- - -## DNS Propagation Time - -| Change Type | Typical Time | Maximum Time | -|-------------|--------------|--------------| -| Nameserver update | 15-30 minutes | 48 hours | -| CNAME record | 5-15 minutes | 24 hours | -| A record | 5-15 minutes | 24 hours | -| Certificate validation | 5-15 minutes | 30 minutes | - -💡 **Tip:** Use `https://dnschecker.org` to check DNS propagation globally - ---- - -## Need Help? - -- Check [Domain Levels & Strategies](/docs/domain/) -- Contact Sleakops support with your domain configuration details \ No newline at end of file diff --git a/docs/domain/index.mdx b/docs/domain/index.mdx deleted file mode 100644 index 9e425a674..000000000 --- a/docs/domain/index.mdx +++ /dev/null @@ -1,430 +0,0 @@ ---- -sidebar_label: Domain -sidebar_position: 5 ---- - -# Domain Levels & Strategies - -Sleakops provides a flexible domain architecture with three hierarchical levels, plus custom aliases for advanced use cases. - -## Overview - - -```mermaid -graph TD - A[Provider Domain
mycompany.com] --> B[Environment Domain
qa.mycompany.com] - A --> C[Environment Domain
prod.mycompany.com] - B --> D[Webservice
api.qa.mycompany.com] - B --> E[Webservice
web.qa.mycompany.com] - C --> F[Webservice
api.prod.mycompany.com] - D -.-> G[Alias
api.mycompany.org] - D -.-> H[Alias
custom.domain.com] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#340f09,stroke:#594440,stroke-width:2px - style D fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style E fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style F fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style G fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 - style H fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 -``` - ---- - -## 1. Provider Domain (Root Level) - -**What it is:** Your organization's root domain. - -**Example:** `sleakops.com` - -**What Sleakops creates:** -- ✅ AWS Hosted Zone -- ✅ SSL Certificate - -**Use case:** -Establishes your main domain infrastructure. All environments and services will be organized under this domain. - -**When to use:** -- Setting up Sleakops for the first time -- Managing your organization's primary domain - ---- - -## 2. Environment Domain (Subdomain Level) - -**What it is:** Subdomains representing different environments. - -**Examples:** -- `qa.sleakops.com` -- `staging.sleakops.com` -- `prod.sleakops.com` - -**What Sleakops creates:** -- ✅ AWS Hosted Zone -- ✅ SSL Certificate - -**Use case:** -Isolate and organize your deployment environments. Each environment gets its own subdomain with independent DNS management. - -**When to use:** -- Creating separate environments (development, staging, production) -- Isolating teams or projects -- Managing multiple deployment stages - ---- - -## 3. Webservice Domain (Auto-generated) - -**What it is:** Automatic domain assignment for each webservice. - -**Pattern:** `[webservice-name].[environment-domain]` - -**Example:** -- Webservice name: `api` -- Environment: `qa.sleakops.com` -- **Result:** `api.qa.sleakops.com` - -**What Sleakops creates:** -- ✅ CNAME record (automatically added to the environment's hosted zone) -- ✅ Points to Application Load Balancer (ALB) - -**Use case:** -Zero-configuration domain setup. Each service automatically gets a predictable, hierarchical domain. - -**When to use:** -- Default scenario for all webservices -- When you want consistent, predictable URLs -- Quick deployments without custom domain configuration - ---- - -## 4. Alias Domains (Custom Level) - -**What it is:** Custom domains outside your standard hierarchy. - -**Examples:** -- `api.external-domain.com` -- `www.mycompany.io` -- `anything.com` - -**What Sleakops does:** - -### Scenario A: Domain matches an existing hosted zone -If `external-domain.com` is already a Provider or Environment in Sleakops: -- ✅ Provides DNS records for SSL certificate validation -- ✅ Provides ALB name for DNS configuration -- ⚠️ You configure the DNS records yourself - -### Scenario B: Domain doesn't match any hosted zone -If `anything.com` is completely external: -- ✅ Creates SSL certificate -- ✅ Provides validation records for certificate -- ✅ Provides ALB name for DNS configuration -- ⚠️ You manage DNS at your domain provider - -**Use case:** -- Custom branded domains -- External domains pointed to your services -- Marketing or vanity URLs -- Multi-domain services - -**When to use:** -- The default webservice domain doesn't fit your needs -- You need multiple domains for the same service -- Connecting external domains to your Sleakops services - ---- - -## Delegation Strategies - -Sleakops offers three delegation approaches, giving you flexibility based on your infrastructure needs and organizational policies. - -### Strategy A: Full Delegation (Recommended) - -Delegate the Provider (root domain) and let Sleakops manage everything - -```mermaid -graph TD - A[sleakops.com
🔑 Delegated to Sleakops] --> B[prod.sleakops.com
✅ Auto-managed] - A --> C[qa.sleakops.com
✅ Auto-managed] - B --> D[api.prod.sleakops.com
✅ Auto-managed] - B --> E[web.prod.sleakops.com
✅ Auto-managed] - C --> F[api.qa.sleakops.com
✅ Auto-managed] - - style A fill:#1a202c,stroke:#2e7d32,stroke-width:3px - style B fill:#1a202c,stroke:#388e3c,stroke-width:2px - style C fill:#1a202c,stroke:#388e3c,stroke-width:2px - style D fill:#1a202c,stroke:#43a047,stroke-width:2px - style E fill:#1a202c,stroke:#43a047,stroke-width:2px - style F fill:#1a202c,stroke:#43a047,stroke-width:2px -``` - - -#### What you delegate: - -Provider domain nameservers to AWS Route 53 - -**What Sleakops manages automatically:** - -- ✅ All environment domains (hosted zones + SSL certificates) -- ✅ All webservice domains (CNAME records + routing) -- ✅ DNS propagation and validation -- ✅ Complete SSL certificate lifecycle - -**Benefits:** - -- 🚀 Zero DNS configuration after initial delegation -- 🔒 Automated SSL certificate management -- 🎯 Fully managed infrastructure -- ⚡ Fastest deployment experience - -**Best for:** - -- New projects starting fresh -- Teams wanting minimal DNS overhead -- Organizations embracing fully-managed solutions -- Startups and fast-moving teams - -**Setup:** - -Delegate your root domain (e.g., sleakops.com) to Sleakops -Everything else is automatic - ---- - -### Strategy B: Per-Environment Delegation - -Delegate individual environment domains while keeping root domain control - -```mermaid -graph TD - A[sleakops.com
👤 You Control] -.-> B[prod.sleakops.com
🔑 Delegated to Sleakops] - A -.-> C[qa.sleakops.com
🔑 Delegated to Sleakops] - B --> D[api.prod.sleakops.com
✅ Auto-managed] - B --> E[web.prod.sleakops.com
✅ Auto-managed] - C --> F[api.qa.sleakops.com
✅ Auto-managed] - - style A fill:#1a202c,stroke:#e65100,stroke-width:3px - style B fill:#1a202c,stroke:#2e7d32,stroke-width:3px - style C fill:#1a202c,stroke:#2e7d32,stroke-width:3px - style D fill:#1a202c,stroke:#43a047,stroke-width:2px - style E fill:#1a202c,stroke:#43a047,stroke-width:2px - style F fill:#1a202c,stroke:#43a047,stroke-width:2px -``` - -#### What you delegate: - -Individual environment domain nameservers (e.g., qa.sleakops.com, prod.sleakops.com) - -**What Sleakops manages automatically:** - -- ✅ All webservice domains within delegated environments -- ✅ SSL certificates for delegated environments -- ✅ DNS records within delegated zones - -**What you manage:** - -- ⚙️ Root domain DNS -- ⚙️ NS records pointing to each environment - -**Benefits:** - -- 🎛️ Control root domain for other purposes (email, marketing sites, etc.) -- 🔒 Isolated environment management -- ✅ Automatic webservice DNS within each environment -- 🏢 Compliance with organizational DNS policies - -**Best for:** - -- Organizations with existing root domain infrastructure -- Teams needing root domain for non-Sleakops services -- Gradual migration to Sleakops -- Multi-team organizations with environment-level isolation - -**Setup:** - -Keep your root domain (e.g., sleakops.com) managed externally -Delegate each environment (e.g., qa.sleakops.com) to Sleakops -Add NS records in your root domain DNS for each environment - ---- - -### Strategy C: Full Control (Manual Management) -Retain complete DNS control and manually configure all records - -```mermaid -graph TD - A[sleakops.com
👤 You Control] -.-> B[prod.sleakops.com
👤 You Control] - A -.-> C[qa.sleakops.com
👤 You Control] - B -.-> D[api.prod.sleakops.com
⚙️ Manual CNAME] - B -.-> E[web.prod.sleakops.com
⚙️ Manual CNAME] - C -.-> F[api.qa.sleakops.com
⚙️ Manual CNAME] - - style A fill:#1a202c,stroke:#c62828,stroke-width:3px - style B fill:#1a202c,stroke:#d84315,stroke-width:2px - style C fill:#1a202c,stroke:#d84315,stroke-width:2px - style D fill:#1a202c,stroke:#e64a19,stroke-width:2px - style E fill:#1a202c,stroke:#e64a19,stroke-width:2px - style F fill:#1a202c,stroke:#e64a19,stroke-width:2px -``` - -#### What you delegate: - -Nothing - you manage all DNS - -**What Sleakops provides:** - -- 📋 DNS records for SSL certificate validation -- 📋 ALB endpoints for traffic routing - -**What you manage:** - -- ⚙️ All DNS zones and records -- ⚙️ Certificate validation records -- ⚙️ CNAME records pointing to ALB -- ⚙️ All DNS updates and changes - -**Benefits:** - -- 🎛️ Complete DNS infrastructure control -- 🔐 Keep DNS within existing security boundaries -- 📊 Integration with existing DNS monitoring -- 🏢 Meet strict compliance requirements - -**Best for:** - -- Organizations with strict DNS governance -- Existing complex DNS infrastructure -- Security policies requiring DNS isolation -- Enterprises with dedicated DNS teams - -**Setup:** - -Create domains in Sleakops (no delegation) -Sleakops provides validation records and ALB endpoints -Manually add all required DNS records in your DNS provider - ---- - -### Delegation Strategy Comparison - -| Aspect | Full Delegation | Per-Environment | Full Control | -|------|-----|-----|-----| -| Setup Complexity | ⭐ Easiest | ⭐⭐ Moderate | ⭐⭐⭐ Complex | -| Ongoing Maintenance | ⭐ None | ⭐⭐ Minimal | ⭐⭐⭐ High | -| Flexibility | ⭐⭐ Limited | ⭐⭐⭐ Balanced | ⭐⭐⭐⭐ Maximum | -| Time to Deploy | ⚡ Instant | ⚡⚡ Minutes | ⚡⚡⚡ Manual | -| DNS Control | Sleakops | Shared | You | -| Best for Teams | Small-Medium | Medium-Large | Enterprise | - - ---- - -## Domain Organization Patterns - -### Pattern 1: Standard Hierarchy (Works with any delegation strategy) - - -```mermaid -graph TD - A[sleakops.com
Provider] --> B[prod.sleakops.com
Environment] - A --> C[staging.sleakops.com
Environment] - B --> D[api.prod.sleakops.com
Webservice] - B --> E[web.prod.sleakops.com
Webservice] - C --> F[api.staging.sleakops.com
Webservice] - C --> G[web.staging.sleakops.com
Webservice] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#340f09,stroke:#594440,stroke-width:2px - style D fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style E fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style F fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style G fill:#1a202c,stroke:#f2f2f2,stroke-width:2px -``` - - -**Benefits:** -- Clear environment separation -- Easy to understand and manage -- Automatic SSL and DNS - ---- - -### Pattern 2: Mixed Hierarchy with Custom Domains - -```mermaid -graph TD - A[sleakops.com
Provider] --> B[prod.sleakops.com
Environment] - B --> C[api.prod.sleakops.com
Webservice] - C -.-> D[api.mycompany.com
Alias] - C -.-> E[api.client-domain.com
Alias] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style D fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 - style E fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 -``` - -**Benefits:** -- Professional customer-facing domains -- Maintains internal structure -- Flexibility for white-labeling -- Requires manual DNS for aliases (all strategies) - ---- - -### Pattern 3: Environment per Team/Project - - -```mermaid -graph TD - A[sleakops.com
Provider] --> B[team-frontend.sleakops.com
Environment] - A --> C[team-backend.sleakops.com
Environment] - A --> D[team-data.sleakops.com
Environment] - B --> E[app.team-frontend.sleakops.com
Webservice] - C --> F[api.team-backend.sleakops.com
Webservice] - D --> G[analytics.team-data.sleakops.com
Webservice] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#340f09,stroke:#594440,stroke-width:2px - style D fill:#340f09,stroke:#594440,stroke-width:2px - style E fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style F fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style G fill:#1a202c,stroke:#f2f2f2,stroke-width:2px -``` - - -**Benefits:** -- Clear team ownership -- Independent DNS management per team -- Scalable for large organizations - ---- - -## Quick Decision Guide - -| Need | Recommended Strategy | -|------|-----| -| Fastest setup | Full Delegation | -| Keep root for email/other services | Per-Environment Delegation | -| Maximum DNS control | Full Control | -| Gradual migration | Per-Environment Delegation | -| Strict compliance | Full Control | -| New project | Full Delegation | -| Enterprise with DNS team | Full Control or Per-Environment | - - - -| Task | Tool | -|------|-----| -| First time setup | Provider Domain | -| Create new environment | Environment Domain | -| Deploy a service | Webservice (automatic) | -| Custom branded URL | Alias Domain | -| External domain integration | Alias Domain | -| White-label solution | Alias Domain | - diff --git a/docs/domain/setup.mdx b/docs/domain/setup.mdx deleted file mode 100644 index 49de8ddf4..000000000 --- a/docs/domain/setup.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_label: Setup your Domains ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Overview - -One critical aspect of working with SleakOps is ensuring proper domain delegation. Domain delegation is essential for seamless integration and functionality, as it determines how your domains and subdomains are managed and how they interact with your AWS environment. -Depending on your specific needs, there are several scenarios for domain delegation with SleakOps: - -#### 1. Navigate to the providers section - -This is the simplest option, where the NS record of the main domain is pointed to your AWS Hosted Zone. All subdomains will be handled automatically, ensuring effortless management. - -#### 2. Delegating Only Subdomains - -If you prefer to keep your principal domain managed by your current DNS provider—perhaps because it hosts core services like email—this option allows you to delegate only the necessary subdomains. You'll need to set the NS records for each subdomain you wish to delegate. - -#### 2. No Delegation of Main Domain or Subdomains - -If you prefer to keep your principal domain managed by your current DNS provider—perhaps because it hosts core services like email—this option allows you to delegate only the necessary subdomains. You'll need to set the NS records for each subdomain you wish to delegate. - -#### 3. No Delegation of Main Domain or Subdomains - -In this case, you maintain full control over your domain and subdomains, without delegating them to AWS. To ensure SleakOps functions correctly, you must: - -- Add a CNAME record to validate the SSL Certificate.. -- Add an additional CNAME record for each web service you manage. - -#### 4. Using a Different Domain or Multiple Domains for the Same Service - -If you want to use a domain other than the principal one or have multiple domains pointing to the same service, you'll need to create an ALIAS: - -- If the ALIAS belongs to a domain managed by SleakOps, it will be handled automatically. -- If not, you'll need to manually create: - - A CNAME record to validate the SSL Certificate.' - - An additional record for each ALIAS. - -By understanding and applying the appropriate domain delegation strategy for your environment, you can ensure that SleakOps integrates smoothly with your AWS infrastructure, providing optimal performance and security. - -## Set up your domains - -### 1. Access to the domain or subdomain information -SleakOps provides a detailed information regarding domains, subdomains and alias. That looks like: - - -domain-drawer-ns - - -To access it, there are are different ways, based on what you need to do: - -#### If you want to delegate your main domain - a. Access the Dashboard and look for the domain widget. - b. Click on the desired domain to display the detail. - - -domain-info-dashboard - - -#### To delegate an environment’s subdomain - a. Access the Environment’s list and select an Environment. - b. Click on the Cloud icon to display the domain detail. - - -#### Create an Alias for a web service workload and delegate it - a. Access the Workload’s list and then, the Web services section. - b. Select and Workload and click on the Three Dots button. - c. Choose the Detail option - d. Create the Alias if it doesn’t exist by clicking the Associate new Domain and completing the form. - e. Click on the Alias domain to display the detail. - - -domain-info-workload-list - - - -domain-info-workload-drawer - - -### 2. Update Name Servers with Domain Registrar -- Log in to the account where your domain is registered (e.g., GoDaddy, Namecheap, etc.). -- Locate the DNS settings for your domain. -- Replace the existing records with the ones provided. - -### 3. Update Name Servers with Domain Registrar -- It may take some time for the DNS changes to propagate globally (usually within a few hours). -- SleakOps periodically checks it but, if you want to manually verify it, you can click the yellow button _Check Delegation_ to trigger the process. - - -domain-info-check-delegation-and-certificate - diff --git a/docs/environment/index.mdx b/docs/environment/index.mdx deleted file mode 100644 index 869cd1ad8..000000000 --- a/docs/environment/index.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -sidebar_label: Environment -sidebar_position: 8 -pagination_next: project/index ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Environment - -An **environment** is an isolated space where specific resources, [projects](/docs/project), and [dependencies](/docs/project/dependency) can operate independently. This isolation improves organization, security, and resource management across larger systems or platforms. - -When you create an environment, SleakOps automatically generates a subdomain based on the environment name. For example, if your chosen environment name is qa, the subdomain will be `qa.{yourdomain.com}`. All project workloads and dependencies are then deployed using this environment-specific domain. - -## FAQs - -
- -### How can I design my environments? - -Environments can be tailored based on an application's lifecycle or the needs of different teams. For example, creating environments for development (dev), quality assurance (QA), staging (stg), and production (prod) allows each to have custom settings suitable for their specific roles. - -Before creating an environment, read [Designing your Infra: Single Schema Vs. Multi Schema ](/docs/provider/schemas) -
- -
- -### Can I edit an environment? - -No. You must delete it and create a new one. -
- -
- -### How do I delete an environment? - -Access the Environment List, on the Action column, click on the bin icon. Then confirm the action. -
- -
- -### How can I delegate a domain? - -Follow: [Delegate Domains](/docs/domain/setup) -
- -:::warning -Your DNS service must be delegated to the Primary Route53 of SleakOps manually. Follow the steps described on this [link ](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html). -::: - -## Set up your Environment - -#### 1. Navigate to the Environment section -Into the Left Pane, access the Environments option and then, at the top right corner, click on the Create button. - - -environment-list - - -#### 2. Configure your Environment -With your [Account](/docs/provider/accounts) selected, you will access the following form: - - -environment-create - - -| **Setting** | **Description** | -| --- | --- | -| **Name** | Define a name for your environment using down case letters and middle dashes. | -| **Cluster** | Select one of the available clusters to host the new environment. | -| **Domain** | Specify the domain for your environment. | - -Once you’ve completed the form, click on Create in order to trigger the environment creation into the selected cluster. diff --git a/docs/gettingstarted.mdx b/docs/gettingstarted.mdx deleted file mode 100644 index f83698c47..000000000 --- a/docs/gettingstarted.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -sidebar_label: Getting Started -sidebar_position: 3 ---- - -import Zoom from 'react-medium-image-zoom'; -import 'react-medium-image-zoom/dist/styles.css'; - -# Getting Started - -## Sign in with your email - -Sign in to our [web app](https://console.sleakops.com/login/). - - - getting-started-login - - - -:::info -In case you do not have an account with us, you need to subscribe using AWS. Follow [How to subscribe to SleakOps using AWS](https://aws.amazon.com/marketplace/pp/prodview-c6e4g3knpgtgs). -::: - -### Requirements to Join - -- You need to have a root user on AWS. It is the initial account created with full permissions to manage all resources and services, serving as the primary account for AWS Organizations.  [Go to AWS Organizations](https://console.aws.amazon.com/organizations/v2/home/accounts). -- You need access to your code repositories (GitLab, Bitbucket or GitHub). -- You need your services in Docker files. -- You need to be able to manage your domains. \ No newline at end of file diff --git a/docs/index.mdx b/docs/index.mdx deleted file mode 100644 index 085e9df84..000000000 --- a/docs/index.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Introduction to Sleakops -sidebar_label: Introduction to Sleakops -sidebar_position: 1 -pagination_next: basicconcepts ---- - -import { FiCloud, FiServer, FiCopy, FiGrid, FiBox } from "react-icons/fi"; -import { MdMiscellaneousServices } from "react-icons/md"; -import { FaDocker } from "react-icons/fa"; -import { VscRocket, VscJson } from "react-icons/vsc"; - -# Welcome to SleakOps! - -Welcome to SleakOps - your go-to solution for effortlessly managing scalable applications on Kubernetes. SleakOps automates tedious tasks, optimizes resource management with AWS and Kubernetes, and offers an intuitive web interface for smooth infrastructure management. - -Our platform creates and maintains modern Kubernetes-based development environments with minimal effort on your end. We implement best practices and top-tier tools, ensuring a hassle-free experience. Our aim? To make Kubernetes as easy to use as any other PaaS, giving you the flexibility of Kubernetes without any vendor lock-ins. With SleakOps, managing your cloud infrastructure is straightforward and efficient. - -Whether you're a seasoned developer or new to Kubernetes, SleakOps empowers you to succeed in infrastructure management. - -## Guiding principles - -- Respect the AWS [well architected](https://aws.amazon.com/es/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc&wa-guidance-whitepapers.sort-by=item.additionalFields.sortDate&wa-guidance-whitepapers.sort-order=desc) bases. -- Keeping always an eye on costs. -- You have full control, it’s your repo and your cloud. - -## Main Features - -- GitHub, Bitbucket and Gitlab integration -- Based on your repo and Dockerfiles -- Manage multiple environments using our proposed structure (dev, staging and production) or customize your own. -- Configure your CI/CD pipeline. -- Complete Observability stack for logging, monitoring and tracing. -- Secrets and env vars managment. -- Secure connections by TLS. -- Automated configuration for your services behind a load balancer and secure ingress. -- Easy add AddOns to your cluster. -- Lot of dependencies ready to go (RDS, S3, Redis, SQL, rRabbit, etc.). -- Users access to services management. -- Automated VPNs. - -
- -{" "} - -
-
- -

Providers

-
-

A cloud provider account.

- Getting Started -
- -{" "} - -
-
- -

Clusters

-
-

- A set of worker machines, called nodes, that run containerized applications. -

- Getting Started -
- -{" "} - -
-
- -

Environments

-
-

Abstraction that let us isolate the different resources.

- Getting Started -
- -{" "} - -
-
- -

Projects

-
-

Represents a codebase and it is managed by a git repository.

- Getting Started -
- -{" "} - -
-
- -

Dependencies

-
-

- Pieces of underlying infrastructure your apps need to run in the cloud, such - as relational databases, storage services or caches. -

- Getting Started -
- -{" "} - -
-
- -

Workloads

-
-

- An abstract way to expose an application running on a set of Pods as a - network service. -

- Getting Started -
- -{" "} - -
-
- -

Deployments

-
-

...

- Getting Started -
- -{" "} - -
-
- -

Build

-
-

Represents a deployable state of all the services.

- Getting Started -
- -{" "} - -
-
- -

Var Group

-
-

Dictionary that provides configuration for services.

- Getting Started -
- -
diff --git a/docs/network/index.mdx b/docs/network/index.mdx deleted file mode 100644 index e60d9ab76..000000000 --- a/docs/network/index.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -id: network-resources -title: Network Resources -sidebar_label: Network Resources -sidebar_position: 6 ---- -import Zoom from "react-medium-image-zoom"; - -# Network Resources - -This documentation provides a clear and simple overview of the network architecture that SleakOps deploys in client environments. It explains how the network is organized, how resources are protected, and how both internal and external communication is managed. - -> ❓ **Note:** The network is designed to ensure security, scalability, and high availability. It enables environment separation, protects sensitive data, and exposes services in a secure and controlled way. - -## 1. Overview of the Architecture - -The SleakOps network infrastructure is based on the following key components: - -- **VPC (Virtual Private Cloud):** Segregates networks by environment (Management, Production, Development). -- **Subnets:** - - *Public:* exposed to the Internet. - - *Private:* restricted access, Internet access via NAT Gateway. - - *Persistence:* for databases and storage. -- **Internet Gateway:** Enables communication between the VPC and the Internet. -- **Route Tables:** Define routing paths between subnets and to/from the Internet. -- **Security Groups:** Virtual firewalls that control inbound and outbound traffic for resources. -- **Internal DNS:** Allows internal resources to communicate using hostnames instead of IP addresses. -- **External-DNS:** Runs inside each Kubernetes (EKS) cluster and automatically manages public DNS records in Route53 for exposed services. - -## 2. Typical Communication Flow - -The following illustrates a typical flow of network traffic in SleakOps: - -1. **Access from the Internet:** - A user accesses a publicly exposed service (e.g., an API). Traffic reaches the Internet Gateway and is routed to the public subnet. - -2. **Access Control:** - The Security Group associated with the resource evaluates whether the connection is allowed. - -3. **Internal Communication:** - Internal services (in private or persistence subnets) communicate using internal DNS, under Security Group rules. - -4. **Service Exposure:** - If a service within a Kubernetes cluster needs to be publicly accessible (e.g., an API), it is exposed via an Application Load Balancer, and External-DNS registers the public domain automatically in Route53. - -> This segmentation and control ensure that only necessary services are exposed while keeping sensitive data protected. - - - reference-architecture - - -## 3. External-DNS and Route53 - -An automated solution is used to manage public DNS records for deployed services, integrating the infrastructure with external DNS providers like Route53. - -- External-DNS **does not expose services directly**. It automates DNS record management for resources that are already exposed (e.g., via an Application Load Balancer). -- This allows services to be securely and easily accessible from the Internet. - -## 4. Cross-Environment Connectivity via VPC Peering - -To enable controlled communication between environments (e.g., between Management and Production), SleakOps sets up **VPC Peering connections** between the different VPCs. - -- **VPC Peering** enables two VPCs to exchange internal traffic as if they were part of the same network. -- **It does not require** Internet, NAT Gateway, or VPN traffic routing. -- It is a direct connection between two networks. - -> 💡 Besides Internet Gateway access, SleakOps also supports other connectivity options such as **Pritunl VPN**, **NAT Gateway**, and **Transit Gateway**, depending on use case and required isolation level. diff --git a/docs/project/access_config.mdx b/docs/project/access_config.mdx deleted file mode 100644 index 9fd1bd443..000000000 --- a/docs/project/access_config.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -sidebar_label: Dependency Access Configuration -sidebar_position: 7 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Access Configuration - -The Access Configuration allows you to extend your project's permissions by granting access to external dependencies from other projects and attaching additional IAM policies. This feature enables cross-project resource sharing and enhanced security configurations. - -## Configuration Steps - -1. Navigate to **Project** → **Settings** -2. Select **Access Configuration** from the settings menu -3. Configure external dependencies and extra policies as needed -4. Click **Apply changes** to save your configuration - - -access config - - -## External Dependencies - -### Dependencies Already Assigned - -This section shows dependencies that have already been linked to your current project. These dependencies are available for your workloads to use and are marked with a blue checkbox to indicate they are active. - -**Features:** -- View all currently assigned external dependencies -- See dependency type and project information -- Dependencies are automatically configured with appropriate permissions - -### Available External Dependencies - -This section displays dependencies from other projects that you can grant access to your current project. This enables cross-project resource sharing and collaboration. - -**How it works:** -- Select dependencies from other projects that you wish to grant access to this project -- Only dependencies from projects you have access to will be displayed -- Once selected, the dependency becomes available in the "Dependencies Already Assigned" section - -## Extra Policies - -The Extra Policies section allows you to attach additional IAM policies to your project, providing enhanced permissions beyond the default project access. - -### Adding Extra Policies - -1. Click the **"Attach more policies"** button -2. Select from available IAM policies in your AWS account -3. Review the policy permissions before attaching -4. The policies will be applied to grant additional permissions to the project - -### Policy Management - -- **Custom Policies**: Attach policies you've created in your AWS IAM console -- **AWS Managed Policies**: Use pre-configured AWS policies for common use cases -- **Policy Review**: All attached policies are listed and can be reviewed -- **Removal**: Policies can be detached if no longer needed - -:::tip Cross-Project Access -External dependencies enable teams to share resources across different projects, improving collaboration and resource utilization. -::: - -:::warning Security Considerations -- Review all attached policies to ensure they follow the principle of least privilege -- Regularly audit external dependencies to ensure they're still needed -- Monitor access patterns to identify any unusual activity -::: \ No newline at end of file diff --git a/docs/project/build/build.mdx b/docs/project/build/build.mdx deleted file mode 100644 index 0038e5595..000000000 --- a/docs/project/build/build.mdx +++ /dev/null @@ -1,51 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# Build - -We have repeteadly talked about Build in both [Project documentation ](/docs/project) and [Initial Build documentation](/docs/project). A build is basically a template of an OS, libraries and other dependencies of the project you deploy. - -### Build creation - -To create a Build you only need four parameters, only the Project field is required as the other three are, if not set, wait until this access is automatically enabled are chosen by default: - -- Project: Refers to what we call ProjectEnv, here you choose which ProjectEnv you want to build. -- Branch: Lets you choose any branch of the repository that you've chosen as Project. Defaults to Environment name. -- Commit hash: You can also choose the commit has to build a specific commit and not the last one as we do by default. Defaults to last commit. -- Tag: Just a tag to differentiate builds. Defaults to 'latest'. - -## Why do we need to Build a Docker image? - -As we use [Helm charts ](https://helm.sh/docs/) we need the image because is what they use to deploy a Kubernetes Release. - -:::info - -Remember that you need a Build to update the code that the Deployment runs inside the Kubernetes Cluster. - -::: -:::tip CI/CD integration with SleakOps - -SleakOps has its own CLI Tool that you can use to automate Builds and Deployments in your CI/CD. More info [here](/docs/cli). - -::: - -## FAQs - -
- -### Why is my build failing or getting killed? - - -:::info Check Logs First -Before assuming it's a resource issue, check your build logs to identify the actual cause of failure. Look for specific error messages that indicate resource constraints like `OOMKilled` or resource limit errors. -::: - -If your build process is failing unexpectedly or being terminated, it's often due to insufficient resources (CPU or memory) allocated for the build process. The Pod running the build may be killed by Kubernetes when it exceeds the configured resource limits. - -**Common symptoms:** -- Build fails with OOMKilled (Out of Memory) errors -- Build process stops mid-execution without clear error messages -- Build is extremely slow or appears frozen - -**Solution:** -Increase the build resources in **Project** → **Settings** → **Deploy Build Resources**. See the [Deploy Build Resources](/docs/project/build_resources) documentation for detailed instructions on how to adjust CPU and memory allocations. -
diff --git a/docs/project/build_resources.mdx b/docs/project/build_resources.mdx deleted file mode 100644 index 76abfd442..000000000 --- a/docs/project/build_resources.mdx +++ /dev/null @@ -1,111 +0,0 @@ ---- -sidebar_label: Deploy Build Resources -sidebar_position: 6 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Deploy Build Resources - -The Deploy Build Resources configuration allows you to specify the CPU and memory resource requests for both build and deployment processes. This helps ensure that your builds and deployments have sufficient resources to complete successfully while optimizing costs. - -## Resource Configuration - - -dockerfile settings page - - -Access the Deploy Build Resources settings: - -1. Navigate to **Project** → **Settings** -2. Select **Deploy Build Resources** from the settings menu -3. Configure the resource values according to your project's requirements -4. Click **Save** to apply the changes - -### Build Request Resources - -Configure the resources allocated during the build process: - -- **Build Request CPU**: Specifies the CPU allocation for build processes (measured in millicores) -- **Build Request Memory**: Specifies the memory allocation for build processes (measured in GiB) - -### Deploy Request Resources - -Configure the resources allocated during the deployment process: - -- **Deploy Request CPU**: Specifies the CPU allocation for deployment processes (measured in millicores) -- **Deploy Request Memory**: Specifies the memory allocation for deployment processes (measured in GiB) - -:::tip Resource Optimization -- Start with default values and adjust based on build performance -- Monitor build times and resource usage to optimize allocations -- Higher resource allocations can reduce build times but increase costs -::: - -:::warning Resource Limits -- Ensure your cluster has sufficient resources to accommodate the requested allocations -::: - -## FAQs - -
- -### What happens if my build or deployment exceeds the configured resources? - - -:::info Check Logs First -Before adjusting resources, always check your build and deployment logs to confirm that resource constraints are the actual cause of the failure. Look for specific error messages like `OOMKilled` or resource limit indicators. -::: - -When a build or deployment process consumes more CPU or memory than the configured request values, the Pod executing the process may be terminated by Kubernetes before completion. This results in: - -- **Failed builds**: The build process stops mid-execution and fails to produce a Docker image -- **Failed deployments**: The deployment process is interrupted and doesn't complete successfully -- **Error messages**: You'll see errors indicating that the Pod was terminated due to resource constraints (OOMKilled for memory or CPU throttling) - -This is a common issue when dealing with: -- Large codebases that require significant memory during compilation -- Complex build processes with multiple dependencies -- Projects with extensive testing or bundling steps -
- -
- -### How do I increase build and deployment resources? - -If you're experiencing build or deployment failures due to resource constraints, you can increase the allocated resources: - -1. Navigate to **Project** → **Settings** in the SleakOps interface -2. Select **Deploy Build Resources** from the settings menu -3. Increase the values for the resource that's causing issues: - - **Build Request CPU**: Increase if builds are slow or CPU-throttled - - **Build Request Memory**: Increase if builds fail with OOMKilled errors - - **Deploy Request CPU**: Increase if deployments are slow - - **Deploy Request Memory**: Increase if deployments fail during the process -4. Click **Save** to apply the changes -5. Trigger a new build or deployment to use the updated resource allocations - -:::tip Finding the Right Values -- Start by doubling the current values if you're experiencing failures -- Monitor the actual resource usage during builds/deployments -- Adjust incrementally until builds complete successfully -- Remember that higher values may impact costs and cluster capacity -::: -
- -
- -### How do I know what values to set? - -Start with the default values and adjust based on observed behavior: - -- If builds fail with **OOMKilled** errors, increase **Build Request Memory** (try 2Gi, 4Gi, or higher) -- If builds are **very slow**, increase **Build Request CPU** (try 1000m, 2000m, or higher) -- If deployments fail or timeout, increase the corresponding **Deploy Request** values - -Monitor your build and deployment logs to identify resource-related issues and adjust accordingly. -
\ No newline at end of file diff --git a/docs/project/chart/chart_dependencies.mdx b/docs/project/chart/chart_dependencies.mdx deleted file mode 100644 index 2c6dbc856..000000000 --- a/docs/project/chart/chart_dependencies.mdx +++ /dev/null @@ -1,120 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Chart Dependencies - -Chart Dependencies allow you to add external charts to your project, following the same pattern as [Helm Chart Dependencies ](https://helm.sh/docs/helm/helm_dependency/). This feature enables you to integrate third-party services and components seamlessly into your SleakOps deployment. - -:::warning NodePool Configuration Required -Since SleakOps uses NodePools to determine resource placement, you must configure the `tolerations` parameter to target an existing NodePool for all dependency resources. -::: - -## Supported Chart Repositories - -Currently, SleakOps supports **Bitnami Charts** exclusively. You can browse available charts on [ArtifactHub ](https://artifacthub.io/packages/search?org=bitnami) to find suitable dependencies for your project. - -## Adding Chart Dependencies - -To add a new Chart Dependency, click the **Create** button in the Chart Configuration section: - - -Chart dependencies create button - - -### Configuration Steps - -1. **Search and Select**: Use the first two fields to search for the chart name and select your desired version -2. **Configure Values**: Modify the values section below to customize the deployment -3. **Set Tolerations**: **Critical** - Update all `tolerations` fields in the chart values to target your NodePool - - -Chart dependencies configuration form - - -:::tip Important -Ensure every `tolerations` field in the chart values is properly configured to use a NodePool. Without this configuration, Kubernetes cannot determine where to schedule the pods, leading to deployment failures. -::: - - -## Frequently Asked Questions - -
- -### My deployment succeeded but pods aren't working. What's wrong? - -The most common cause is incorrect NodePool configuration. Verify that: -- All `tolerations` fields are properly set to target existing NodePools -- The NodePool has sufficient resources -- The NodePool is in a healthy state -
- -
- -### I can't find the chart I need. What are my options? - -Currently, only Bitnami repository charts are supported. If you need a chart not available in Bitnami's repository, please contact our support team to discuss alternatives or request additional repository support. -
- -
- -### How do I troubleshoot dependency deployment issues? - -Common troubleshooting steps: -1. Verify NodePool tolerations are correctly configured -2. Check that the chart version is compatible -3. Ensure required values are properly set -4. Review pod logs for specific error messages -
- - -
- -### My resources won't mount EBS volumes correctly. What should I check? - -1. Ensure that the EBS CSI Driver is installed and functioning in your cluster. You can refer to the [Addon documentation](/docs/cluster/addons/ebs) for guidance on setting up EBS. -2. Ensure you completed the values with the appropriate storageClass that is created with the EBS addon. For example a persistence value for a chart could look like this: -```yaml -persistence: - enabled: true - storageClass: "ebs-csi-default-sc" - accessModes: - - ReadWriteOnce - size: 5Gi -``` -3. In case you need another storageClass, you can define it as an [extra template](/docs/project/chart/extra_templates) and use it. Remember to set the provisioner to `ebs.csi.aws.com`. -4. In case the pods are not starting, check the logs of the EBS CSI Controller for errors -
- -
- -### My resources won't mount EFS volumes correctly. What should I check? - -1. Ensure that the EFS CSI Driver is installed and functioning in your cluster. Sleakops installs this addon when you create a [volume](/docs/project/volumes) for a project. You can create and then delete a volume to complete the installation. -2. Ensure you completed the values with the appropriate storageClass that you prefer for this data. Sleakops creates two StorageClasses when installing the EFS addon: `efs-sc-retain` and `efs-sc-delete`. For example a persistence value for a chart could look like this: -```yaml -persistence: - enabled: true - storageClass: "efs-sc-retain" - accessModes: - - ReadWriteMany - size: 5Gi -``` -3. In case you need another storageClass, you can define it as an [extra template](/docs/project/chart/extra_templates) and use it. Remember to set the provisioner to `efs.csi.aws.com`. -4. In case the pods are not starting, check the logs of the EFS CSI Controller for errors -
- -
- -### Pods won't start due to image pull errors. What should I check? - -1. Verify that the image name and tag specified in the chart values are correct. -2. Verify that the repository is bitnamilegacy instead of bitnami. -3. Verify if there is a value `allowInsecureImages: false` and change it to `allowInsecureImages: true`. -
diff --git a/docs/project/chart/extra_templates.mdx b/docs/project/chart/extra_templates.mdx deleted file mode 100644 index 0dca88c1c..000000000 --- a/docs/project/chart/extra_templates.mdx +++ /dev/null @@ -1,122 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Extra Templates - -Extra Templates enable you to deploy custom Kubernetes resources beyond SleakOps' built-in components. This powerful feature allows you to extend your project with specialized resources such as custom Ingresses, testing pods, or other Kubernetes objects tailored to your specific requirements. - -## Use Cases -- Custom Ingress configurations for specialized routing -- Testing pods for debugging and development -- Additional ConfigMaps or Secrets -- Custom networking policies -- Specialized monitoring or logging components - -:::warning NodePool Configuration Required -Since SleakOps uses NodePools for resource placement, all custom resources must include proper `tolerations` configuration targeting an existing NodePool. -::: - -## Deploying a Custom Ingress - -To deploy a custom Ingress, add your Kubernetes YAML configuration in the **Templates** section. Here's a complete example you can use as a starting point: - -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: coreexampledjangocelerysleakopscom - namespace: example-django-celery-myenv - labels: - app.kubernetes.io/name: example-django-celery - annotations: - alb.ingress.kubernetes.io/certificate-arn: >- - arn:aws:acm:REGION:ACCOUNT_ID:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - alb.ingress.kubernetes.io/group.name: example-django-celery-public - alb.ingress.kubernetes.io/healthcheck-path: /health - alb.ingress.kubernetes.io/healthcheck-port: '8000' - alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' - alb.ingress.kubernetes.io/ssl-redirect: '443' - alb.ingress.kubernetes.io/success-codes: '200' - alb.ingress.kubernetes.io/target-type: ip - meta.helm.sh/release-name: example-django-celery-myenv - meta.helm.sh/release-namespace: example-django-celery-myenv -spec: - ingressClassName: alb-ingressclass-public - tls: - - hosts: - - core.example-django-celery.sleakops.com - rules: - - host: core.example-django-celery.sleakops.com - http: - paths: - - path: /api/public/ - pathType: Prefix - backend: - service: - name: example-django-celery-myenv-api-public-svc - port: - number: 8000 -``` - -Once you have defined your Ingress template, you can deploy it using the interface: - - -Template deployment interface - - -## Frequently Asked Questions - -
- -### How do I use custom values in my templates? - - -You can define custom values in the **Values** section on the right side of the interface. These values can then be referenced in your templates using Helm templating syntax. - - -Custom values configuration example - - -The example above shows how to create a Pod template that uses custom values and how to reference them in your YAML configuration. -
- -
- -### What types of Kubernetes resources can I deploy? - - -SleakOps supports **namespace-scoped resources only** due to security and isolation requirements. Each project operates within its own namespace with namespace-scoped permissions. - -**Supported resources include:** -- Pods, Deployments, Services -- Ingresses, NetworkPolicies -- ConfigMaps, Secrets -- PersistentVolumeClaims -- Jobs, CronJobs - -**Not supported:** -- ClusterRoles, ClusterRoleBindings -- CustomResourceDefinitions -- PersistentVolumes -- Any cluster-scoped resources -
- -
- -### How do I troubleshoot template deployment issues? - - -Common troubleshooting steps: -1. **Validate YAML syntax** - Ensure your template is valid Kubernetes YAML -2. **Check NodePool tolerations** - Verify tolerations target existing NodePools -3. **Review resource quotas** - Ensure sufficient resources are available -4. **Validate references** - Check that referenced services, secrets, or configmaps exist -5. **Check logs** - Review deployment logs for specific error messages -
\ No newline at end of file diff --git a/docs/project/chart/index.mdx b/docs/project/chart/index.mdx deleted file mode 100644 index 67f23f5f5..000000000 --- a/docs/project/chart/index.mdx +++ /dev/null @@ -1,95 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Chart - -A **Chart** is a fundamental component of a Project that defines what SleakOps deploys during a deployment run. Charts in SleakOps are analogous to [Helm Charts ](https://helm.sh/docs/topics/charts/) but are specifically adapted for SleakOps functionality. - -## Accessing the Chart Configuration - -You can find the Chart section by navigating to **Project → Settings**: - - - Chart settings location - - -:::warning NodePool Requirements -SleakOps uses NodePools to determine where resources are deployed. You must configure the `tolerations` parameter to target an existing NodePool for all deployed resources. -::: - - - Chart configuration interface - - -## Default Values - -SleakOps automatically applies default values to its Charts. You can view these values by clicking the designated area: - - - Default values access point - - -This opens a drawer on the right side displaying the default values for all Project workloads. - -### Workload-Specific Values - -For example, here are the default values for an 'api' WebService: - - - API WebService default values - - -### Global Valuess - -Values that apply across the entire Project: - - - Global default values - - -## Frequently Asked Questions - -
- ### Where can I find my Project's Chart? - Currently, Charts are not viewable directly in the platform. However, you can - download the Chart from the ECR repository created for your Project in the - corresponding AWS Account. -
- -
- ### Can I modify the Chart deployed by a Project? - Yes, with some limitations. You can: - Add custom templates using [**Extra - Templates**](/docs/project/chart/extra_templates) - Add chart dependencies using [**Chart - Dependencies**](/docs/project/chart/chart_dependencies), similar to [Helm Chart Dependencies{" "} - - ](https://helm.sh/docs/helm/helm_dependency/) -
- -
- ### Can I add a custom Ingress to my Project? - Yes, this is one of the primary use cases for the **Extra Templates** feature. - See the [Extra Templates documentation](/docs/project/chart/extra_templates) for detailed - instructions. -
- -
- ### Can I modify existing Kubernetes Service templates? - No, modifying SleakOps built-in templates is not currently supported. We are - working on enabling modifications to built-in templates in future releases. -
diff --git a/docs/project/configure_your_dockerfile.mdx b/docs/project/configure_your_dockerfile.mdx deleted file mode 100644 index ae3094f14..000000000 --- a/docs/project/configure_your_dockerfile.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -sidebar_label: Configure your Dockerfile -sidebar_position: 5 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Configure your Dockerfile - -Configuring your Dockerfile is crucial because it dictates how your application is built and packaged into a container. A properly configured Dockerfile ensures that your Docker image contains all necessary dependencies and settings, allowing your application to run smoothly in your environment. - -## FAQs - -
- -### What do I need to specify when configuring the Dockerfile in SleakOps? - -When configuring your Dockerfile in SleakOps, you need to: - 1. **Set the Dockerfile Path**: Provide the relative path of the Dockerfile within your repository. - 2. **Provide Docker Arguments**: If your Dockerfile requires specific build arguments (e.g., environment variables, configurations), you must provide these values during the Docker image build process. -
- -
- -### How do I add the Dockerfile arguments? - -Once you specify the Dockerfile path, SleakOps analyzes it to identify any build arguments that are required. If necessary, SleakOps will prompt you to provide values for these arguments. You can update these arguments at any time through the SleakOps interface. - -:::tip DockerArgs from CLI -You can also define DockerArgs when using the SleakOps CLI for builds. Use the `--docker-args` parameter to pass build arguments directly from the command line: - -```bash -sleakops build -p myproject -b main --docker-args "ARG1=value1,ARG2=value2" -``` - -This is particularly useful for CI/CD pipelines where you want to pass different arguments based on the environment or build context. -::: -
- -
- -### What are Docker build arguments? - -Docker build arguments are variables that are passed during the Docker build process to customize the build according to different environments or configurations. They are defined in the Dockerfile using the `ARG` keyword. SleakOps will identify these arguments and ask you to provide the required values. You can also update these arguments later if needed. -
- -
- -### How do I update the Dockerfile path and arguments? - -You can add the by following the steps below. -
- -## Set up your Dockerfile -### 1. Access to your project settings - - -dockerfile settings page - - - 1. **Complete the Dockerfile Path:** To enable SleakOps to search for the needed arguments, specify the Dockerfile Path and save the changes. SleakOps will then analyze your Dockerfile and render the required build arguments for you to provide. - -| **Dockerfile Path** | The Dockerfile is a critical component used to build your project into a container. The Dockerfile Path field requires the relative file path to your Dockerfile within the repository (e.g., /Dockerfile, /src/Dockerfile, or /app/Dockerfile). This file contains the instructions needed to create the container image, which SleakOps will build and later use for deployments. | -| --- | --- | - - 2. **Add Arguments Before Saving:** If you already know the required arguments, you can enter them before saving. This allows you to provide necessary values upfront rather than waiting for SleakOps to analyze the Dockerfile. - - :::tip - If you choose to add the argument using the text option: Each argument should be added on a new line, separated by an equal sign (`=`), with no extra spaces. - - ARGUMENT_NAME = VALUE - ARGUMENT_TWO = VALUE - ARGUMENT_ONE = VALUE - ::: diff --git a/docs/project/dependency/aurora-mysql-aws.mdx b/docs/project/dependency/aurora-mysql-aws.mdx deleted file mode 100644 index c905059fc..000000000 --- a/docs/project/dependency/aurora-mysql-aws.mdx +++ /dev/null @@ -1,158 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Aurora MySQL - -SleakOps provides seamless integration with Amazon Aurora MySQL, a fully managed, MySQL-compatible relational database service. Aurora MySQL combines the performance and availability of high-end commercial databases with the simplicity and cost-effectiveness of open-source databases. By leveraging SleakOps for this integration, you can efficiently manage Aurora MySQL clusters within your EKS environment, ensuring high performance, scalability, and reliability for your applications. - -## FAQs - -
- -### How does SleakOps manage Aurora MySQL credentials? - -When you create an Aurora MySQL dependency in SleakOps, it automatically generates a Vargroup for your database cluster. This Variable Group securely stores the Aurora MySQL credentials and other important configuration details, such as the cluster endpoint and user access information. You'll be able to manage them from the [Vargroups](/docs/project/vargroup) section. -
- -
- -### Can I change the Aurora MySQL version after the cluster is deployed? - -Yes, Aurora MySQL supports engine version upgrades. However, the upgrade process requires careful planning and may involve downtime. It's recommended to test the upgrade process in a non-production environment first. -
- -
- -### What happens if I need more storage for my Aurora MySQL cluster? - -Aurora MySQL automatically scales storage from 10 GB up to 128 TB without requiring you to provision storage in advance. The storage scales automatically as your data grows, and you only pay for the storage you use. -
- -
- -### How do I create an Aurora MySQL database dump? - -To create a dump of your Aurora MySQL database: -1. **Run the `mysqldump` Command**: -``` -mysqldump -h AURORA_MYSQL_ADDRESS -u AURORA_MYSQL_USERNAME -p --all-databases > dump.sql -``` -Replace `AURORA_MYSQL_ADDRESS`, `AURORA_MYSQL_USERNAME`, and `dump.sql` with the appropriate values. - -2. **Consult Documentation**: For more information on how to create a dump, refer to the official [MySQL documentation ](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html). -
- -
- -### How do I import an existent dump using docker? - -To import a database dump into your Aurora MySQL cluster: -1. **Connect to the VPN**: Ensure you are connected to the VPN of the AWS account where the Aurora cluster is located. -2. **Prepare the dump file**: Place your database dump file (e.g., `dump.sql`) in the `./initial_data/` directory on your local machine. -3. **Run Docker Container** (Recommended): - - Install Docker on your local machine if not already installed. - - Leave your dump in an "initial_data" folder. - - Run a MySQL Docker container with the following command: - ``` - docker run -it --name aurora-mysql-container -v ./initial_data/:/tmp/data/ -e MYSQL_ROOT_PASSWORD=AURORA_MYSQL_PASSWORD -d mysql bash - ``` - - Attach to the container's terminal: - ``` - docker exec -t -i aurora-mysql-container bash - ``` - - Import the dump file: - ``` - mysql -h AURORA_MYSQL_ADDRESS -u AURORA_MYSQL_USERNAME -p < /tmp/data/dump.sql - ``` - Replace `AURORA_MYSQL_ADDRESS`, `AURORA_MYSQL_USERNAME`, and `dump.sql` with your specific details. -
- -
- -### How do I import an existent dump to my local machine? - -Alternatively, you can use a MySQL client installed on your local machine to import the dump: -``` -mysql -h AURORA_MYSQL_ADDRESS -u AURORA_MYSQL_USERNAME -p < dump.sql -``` -
- -
- -### What should I do if I encounter connection issues with my Aurora MySQL cluster? - -Check the following: -- Ensure the cluster endpoint, username, and password are correct. -- Verify that your security groups and firewall rules allow access. -- Ensure the cluster is running and has enough resources (CPU, memory). -- Check if the cluster is in an available state. -Otherwise, contact us. -
- -
- -### What are the benefits of Aurora MySQL over standard RDS MySQL? - -Aurora MySQL offers several advantages: -- **Performance**: Up to 5x faster than standard MySQL on RDS -- **Scalability**: Automatic storage scaling up to 128 TB -- **Availability**: Continuous backup to S3 with point-in-time recovery -- **Durability**: 6-way replication across 3 Availability Zones -- **Compatibility**: MySQL-compatible with minimal code changes -- **Cost-effective**: Pay only for the storage you use -
- -:::info -AWS documentation: [Amazon Aurora MySQL Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraMySQL.html) -::: - -## Set up your Aurora MySQL -### 1. Add Aurora MySQL as a Dependency -To integrate Aurora MySQL with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "Aurora MySQL" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your Aurora MySQL. -You will access the following form: - - -Aurora MySQL create form - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Database Name** | Name for the Aurora MySQL database. Must follow pattern: lowercase letters and numbers, cannot be "db" or "database". | -| **Database Engine Version** | Select the specific version of the Aurora MySQL database engine. Version 3 is compatible with MySQL 8, Version 2 with MySQL 5. | -| **Database Engine Mode** | Choose between **Serverless** (auto-scaling, pay-per-use for unpredictable workloads) or **Provisioned** (fixed capacity, better for consistent workloads). | -| **Database Master Username** | Master username for the Aurora MySQL cluster. Cannot be "admin", "user", "database", or "name". | -| **Auto-generate Password** | If enabled, the backend will generate a strong password automatically. | -| **Database Master Password** | Password for the master user. Required if auto-generate is disabled. Cannot contain @, ', ", or / characters. | -| **Database Instance Class** | **Serverless mode**: Fixed to `db.serverless`
**Provisioned mode**: Choose from db.t3.medium, db.t4g.medium, db.t3.large, db.t4g.large, db.r8g.large, db.r8g.xlarge, db.r7i.large, db.r7i.xlarge.t3.medium. | -| **Minimum Aurora Capacity** | *(Serverless only)* Minimum Aurora Capacity Units (0.5-256). Each unit ≈ 2GB RAM. | -| **Maximum Aurora Capacity** | *(Serverless only)* Maximum Aurora Capacity Units (1-256). Each unit ≈ 2GB RAM. | -| **Create a RDS from a snapshot** | Mark this if restoring from a database snapshot. | -| **Snapshot Identifier** | *(Required if restoring from snapshot)* RDS snapshot identifier to restore from. | -| **Backup Retention Period** | Number of days (1-35) for which automatic backups are kept. | -| **Backup Window** | Period for automated backups in HH:MM-HH:MM format (UTC). | -| **Read Replicas** | Configuration for database read replicas. Each replica requires a name and publicly accessible setting. | - -### 3. Customize your variable's name for your Aurora MySQL cluster. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -Aurora MySQL create outputs - \ No newline at end of file diff --git a/docs/project/dependency/aurora-postgresql-aws.mdx b/docs/project/dependency/aurora-postgresql-aws.mdx deleted file mode 100644 index 2ac49844f..000000000 --- a/docs/project/dependency/aurora-postgresql-aws.mdx +++ /dev/null @@ -1,152 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Aurora PostgreSQL - -SleakOps provides seamless integration with Amazon Aurora PostgreSQL, a fully managed, PostgreSQL-compatible relational database service. Aurora PostgreSQL combines the performance and availability of high-end commercial databases with the simplicity and cost-effectiveness of open-source databases. By leveraging SleakOps for this integration, you can efficiently manage Aurora PostgreSQL clusters within your EKS environment, ensuring high performance, scalability, and reliability for your applications. - -## FAQs - -
- -### How does SleakOps manage Aurora PostgreSQL credentials? - -When you create an Aurora PostgreSQL dependency in SleakOps, it automatically generates a Vargroup for your database cluster. This Variable Group securely stores the Aurora PostgreSQL credentials and other important configuration details, such as the cluster endpoint and user access information. You'll be able to manage them from the [Vargroups](/docs/project/vargroup) section. -
- -
- -### Can I change the Aurora PostgreSQL version after the cluster is deployed? - -Yes, Aurora PostgreSQL supports engine version upgrades. However, the upgrade process requires careful planning and may involve downtime. It's recommended to test the upgrade process in a non-production environment first. -
- -
- -### What happens if I need more storage for my Aurora PostgreSQL cluster? - -Aurora PostgreSQL automatically scales storage from 10 GB up to 128 TB without requiring you to provision storage in advance. The storage scales automatically as your data grows, and you only pay for the storage you use. -
- -
- -### How do I create an Aurora PostgreSQL database dump? - -To create a dump of your Aurora PostgreSQL database: -1. **Run the `pg_dump` Command**: -``` -pg_dump -h AURORA_POSTGRESQL_ADDRESS -U AURORA_POSTGRESQL_USERNAME -W > dump.sql -``` -Replace `AURORA_POSTGRESQL_ADDRESS`, `AURORA_POSTGRESQL_USERNAME`, and `dump.sql` with the appropriate values. - -2. **Consult Documentation**: For more information on how to create a dump, refer to the official [PostgreSQL documentation ](https://www.postgresql.org/docs/current/app-pgdump.html). -
- -
- -### How do I import an existent dump using docker? - -To import a database dump into your Aurora PostgreSQL cluster: -1. **Connect to the VPN**: Ensure you are connected to the VPN of the AWS account where the Aurora cluster is located. -2. **Run Docker Container** (Recommended): - - Install Docker on your local machine if not already installed. - - Run a PostgreSQL Docker container with the following command: - ``` - docker run -it --name aurora-postgresql-container -v ./initial_data/:/tmp/data/ -e POSTGRESQL_ROOT_PASSWORD=AURORA_POSTGRESQL_PASSWORD -d postgres bash - ``` - - Attach to the container's terminal: - ``` - docker exec -t -i aurora-postgresql-container bash - ``` - - Import the dump file: - ``` - psql -h AURORA_POSTGRESQL_ADDRESS -U AURORA_POSTGRESQL_USERNAME -W -f /tmp/data/dump.sql - ``` - Replace `AURORA_POSTGRESQL_ADDRESS`, `AURORA_POSTGRESQL_USERNAME`, and `dump.sql` with your specific details. -
- -
- -### How do I import an existent dump to my local machine? - -Alternatively, you can use a PostgreSQL client installed on your local machine to import the dump: -``` -psql -h AURORA_POSTGRESQL_ADDRESS -U AURORA_POSTGRESQL_USERNAME -W -f /tmp/data/dump.sql -``` -
- -
- -### What should I do if I encounter connection issues with my Aurora PostgreSQL cluster? - -Check the following: -- Ensure the cluster endpoint, username, and password are correct. -- Verify that your security groups and firewall rules allow access. -- Ensure the cluster is running and has enough resources (CPU, memory). -- Check if the cluster is in an available state. -Otherwise, contact us. -
- -
- -### What are the benefits of Aurora PostgreSQL over standard RDS PostgreSQL? - -Aurora PostgreSQL offers several advantages: -- **Performance**: Up to 3x faster than standard PostgreSQL on RDS -- **Scalability**: Automatic storage scaling up to 128 TB -- **Availability**: Continuous backup to S3 with point-in-time recovery -- **Durability**: 6-way replication across 3 Availability Zones -- **Compatibility**: PostgreSQL-compatible with minimal code changes -
- -:::info -AWS documentation: [Amazon Aurora PostgreSQL Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraPostgreSQL.html) -::: - -## Set up your Aurora PostgreSQL -### 1. Add Aurora PostgreSQL as a Dependency -To integrate Aurora PostgreSQL with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "Aurora PostgreSQL" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your Aurora PostgreSQL. -You will access the following form: - - -Aurora PostgreSQL create form - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Database Name** | Name for the Aurora PostgreSQL database. Must follow pattern: lowercase letters and numbers, cannot be "db" or "database". | -| **Database Engine Version** | Select the specific version of the Aurora PostgreSQL database engine. Choose from versions supports. Each version includes specific PostgreSQL features and security updates. | -| **Database Engine Mode** | Aurora PostgreSQL is available only in **Serverless** mode, which provides automatic scaling based on your application's needs. This mode scales compute capacity up and down automatically, making it cost-effective for variable workloads. | -| **Database Master Username** | Master username for the Aurora PostgreSQL cluster. This is the main user with administrative privileges. Cannot be "admin", "user", "database", or "name". Must start with a letter and contain only alphanumeric characters. | -| **Auto-generate Password** | If enabled, the backend will generate a strong password automatically for enhanced security. This is recommended for production environments. | -| **Database Master Password** | Password for the master user. Required if auto-generate is disabled. Must be at least 8 characters long and cannot contain @, ', ", or / characters. | -| **Minimum Aurora Capacity** | Minimum Aurora Capacity Units (0.5-256) for the serverless cluster. Each unit is approximately equal to 2GB of RAM. This sets the baseline performance level and ensures minimum resources are always available. | -| **Maximum Aurora Capacity** | Maximum Aurora Capacity Units (1-256) for the serverless cluster. Each unit is approximately equal to 2GB of RAM. This prevents the cluster from scaling beyond your budget limits while allowing performance optimization. | -| **Backup Retention Period** | Number of days (1-35) for which automatic backups are kept. Aurora PostgreSQL automatically backs up your database and stores the backups in Amazon S3. Longer retention periods provide more recovery options but increase storage costs. | -| **Backup Window** | Time period for automated backups in HH:MM-HH:MM format (UTC). Choose a time when your database activity is typically low to minimize performance impact. Aurora performs backups during this window without affecting your application. | -| **Read Replicas** | Configuration for database read replicas to improve read performance and provide additional availability. Each replica requires a unique name and can be configured as publicly accessible or private. Read replicas help distribute read traffic and provide failover capabilities. | - -### 3. Customize your variable's name for your Aurora PostgreSQL cluster. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -Aurora PostgreSQL create outputs - \ No newline at end of file diff --git a/docs/project/dependency/index.mdx b/docs/project/dependency/index.mdx deleted file mode 100644 index 29559a8f3..000000000 --- a/docs/project/dependency/index.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -sidebar_label: Project -sidebar_position: 7 -pagination_next: project/workload/webservice ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Dependencies: Integrating Databases, Caching, and Messaging Services - -A Dependency in the context of SleakOps refers to any external infrastructure or service that your application relies on to function effectively. These dependencies include a variety of AWS services and resources that your application integrates with to enhance its capabilities and performance. - -## FAQs - -
- -### What types of dependencies are included in SleakOps? - -Here’s the updated list of dependencies included in SleakOps: - 1. **Databases** - - **Amazon RDS**: Managed relational databases such as MySQL, PostgreSQL, and others. - 2. **Caching Services** - - **Amazon ElastiCache for Redis**: In-memory data store for caching frequently accessed data. - - **Amazon ElastiCache for Memcached**: In-memory caching service for improved performance and reduced database load. - 3. **Object Storage** - - **Amazon S3**: Scalable and secure object storage for storing and retrieving any amount of data. - 4. **Search and Analytics** - - **Amazon OpenSearch**: A powerful search and analytics engine for exploring and visualizing data, enabling real-time insights and decision-making. - 5. **Message Queuing** - - **Amazon SQS**: Fully managed message queuing service that enables you to decouple components and enhance application scalability and reliability. - - **RabbitMQ**: A widely used open-source message broker that facilitates reliable messaging and integration between application components. - -These dependencies integrate seamlessly with SleakOps, providing a comprehensive suite of AWS and open-source services to enhance your application's functionality, performance, and scalability. -
- -
- -### Can I modify dependency configurations after initial setup? - -Yes, you can update dependency configurations at any time. Make sure to save any changes in the SleakOps interface to apply the updates. -
- -
- -### Can the same dependency be used for multiple Projects? - -At the moment this is not possible, you need one dependency per each project. -
- -
- -### How do I delete a Dependency? - -By accessing the *Dependency Listing* and clicking the delete option. -
- -
- -### What happens when I delete a dependency? - -By deleting a dependency, SleakOps will remove all the information related to it and all what is related to it will stop working. To solve that SleakOps create a Deployment in PENDING_APPROVAL status, that must be run manually ASAP to stop the downtime. -In case you delete a database, SleakOps will generate a final snapshot before its deletion. -
- -## Lets add a Dependency for your Project -### 1. Navigate to create Dependency section -Into the _Left Pane_, access _Dependencies_ option and then, at the top right corner, click on the _Create_ button. - - -dependency-list - - -### 2. Select the kind of dependency you want to create - -dependency-type-list - - -### 3. Select the kind of dependency you want to create -In Sleakops all dependecies start with the same step. So, complete these attributes and click _Next_ to continue. - -| **Setting** | **Description** | -| --- | --- | -| **Name** | Identify your Project. | -| **Project** | Select between the existent projects. | - - -dependency-create - - -### 4. Follow each dependency guide -To move forward choose between the following guides. - -[S3 Bucket](/docs/project/dependency/s3bucket-aws). -[MySQL](/docs/project/dependency/mysql-aws). -[PostgreSQL](/docs/project/dependency/postgresql-aws). -[Redis](/docs/project/dependency/redis-aws). -[Memcached](/docs/project/dependency/memcached-aws). -[OpenSearch](/docs/project/dependency/opensearch-aws). -[SQS](/docs/project/dependency/sqs-aws). diff --git a/docs/project/dependency/mariadb-aws.mdx b/docs/project/dependency/mariadb-aws.mdx deleted file mode 100644 index a3145a544..000000000 --- a/docs/project/dependency/mariadb-aws.mdx +++ /dev/null @@ -1,152 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS MariaDB - -SleakOps facilitates the integration of MariaDB databases through Amazon RDS (Relational Database Service). Amazon RDS for MariaDB is a fully managed service that simplifies database setup, operation, and scaling. MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system, offering enhanced features and performance improvements. By leveraging SleakOps for this integration, you can efficiently manage MariaDB databases within your EKS environment, ensuring robust, scalable, and reliable data storage solutions for your applications. - -## FAQs - -
- -### How does SleakOps manage MariaDB credentials? - -When you create a MariaDB dependency in SleakOps, it automatically generates a Vargroup for your database. This Variable Group securely stores the MariaDB credentials and other important configuration details, such as the database endpoint and user access information. You'll be able to manage them from the [Vargroups](/docs/project/vargroup) section. -
- -
- -### What is Multi-AZ deployment and should I enable it? - -Multi-AZ (Availability Zone) deployment ensures high availability and failover support by replicating your database in another availability zone. It's recommended for production environments to prevent downtime. Keep in mind that it increases costs. -
- -
- -### Can I change the MariaDB version after the database is deployed? - -Yes, MariaDB supports engine version upgrades. However, the upgrade process requires careful planning and may involve downtime. It's recommended to test the upgrade process in a non-production environment first. -
- -
- -### What happens if I need more storage for my MariaDB database? - -You can adjust the storage size when configuring your database. If you need more storage after deployment, SleakOps allows you to scale the storage size without downtime. -
- -
- -### How do I create a MariaDB database dump? - -To create a dump of your MariaDB database: -1. **Run the `mysqldump` Command**: -``` -mysqldump -h MARIADB_ADDRESS -u MARIADB_USERNAME -p --all-databases > dump.sql -``` -Replace `MARIADB_ADDRESS`, `MARIADB_USERNAME`, and `dump.sql` with the appropriate values. - -2. **Consult Documentation**: For more information on how to create a dump, refer to the official [MariaDB documentation ](https://mariadb.com/kb/en/mysqldump/). -
- -
- -### How do I import an existent dump using docker? - -To import a database dump into your MariaDB RDS instance: -1. **Connect to the VPN**: Ensure you are connected to the VPN of the AWS account where the RDS instance is located. -2. **Run Docker Container** (Recommended): - - Install Docker on your local machine if not already installed. - - Run a MariaDB Docker container with the following command: - ``` - docker run -it --name mariadb-container -v ./initial_data/:/tmp/data/ -e MARIADB_ROOT_PASSWORD=MARIADB_PASSWORD -d mariadb bash - ``` - - Attach to the container's terminal: - ``` - docker exec -t -i mariadb-container bash - ``` - - Import the dump file: - ``` - mysql -h MARIADB_ADDRESS -u MARIADB_USERNAME -p < /tmp/data/dump.sql - ``` - Replace `MARIADB_ADDRESS`, `MARIADB_USERNAME`, and `dump.sql` with your specific details. -
- -
- -### How do I import an existent dump to my local machine? - -Alternatively, you can use a MariaDB client installed on your local machine to import the dump: -``` -mysql -h MARIADB_ADDRESS -u MARIADB_USERNAME -p < dump.sql -``` -
- -
- -### What should I do if I encounter connection issues with my MariaDB database? - -Check the following: -- Ensure the database endpoint, username, and password are correct. -- Verify that your security groups and firewall rules allow access. -- Ensure the database is running and has enough resources (CPU, memory). -Otherwise, contact us. -
- -:::info -AWS documentation: [Amazon RDS MariaDB Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html) -::: - -## Set up your MariaDB -### 1. Add MariaDB as a Dependency -To integrate MariaDB with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "MariaDB" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your MariaDB. -You will access the following form: - - -MariaDB create form - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Database Name** | Name for the MariaDB database. Must follow pattern: lowercase letters and numbers, cannot be "db" or "database". This identifies your specific database within the MariaDB instance. | -| **Database Engine Version** | Select the specific version of the MariaDB database engine. Choose from versions supported. Each version includes specific MariaDB features, performance improvements, and security updates. | -| **Database Master Username** | Master username for the MariaDB database instance. This is the main user with administrative privileges. Cannot be "admin", "user", "database", or "name". Must start with a letter and contain only alphanumeric characters. | -| **Auto-generate Password** | If enabled, the backend will generate a strong password automatically for enhanced security. This is recommended for production environments to ensure password complexity. | -| **Database Master Password** | Password for the master user. Required if auto-generate is disabled. Must be at least 8 characters long and cannot contain @, ', ", or / characters. | -| **Create a RDS from a snapshot** | Mark this if restoring from a database snapshot. When enabled, you'll need to provide the snapshot identifier and some fields become read-only. | -| **Snapshot Identifier** | *(Required if restoring from snapshot)* RDS snapshot identifier to restore from. This allows you to restore your database from a previous backup point. | -| **Database Instance Class** | Define the instance class that specifies the hardware configuration for your MariaDB database. Choose from t4g/t3 (burstable performance) or m7i/m8g (memory optimized) instance types. This controls CPU, memory, and network performance. | -| **Database Storage** | Specify the amount of storage allocated for the database in GiB (20-6144 GB). MariaDB uses General Purpose SSD storage by default. This is the initial storage allocation for your database. | -| **Storage Autoscaling Enabled** | Enable automatic storage scaling for the RDS instance. When enabled, AWS will automatically increase storage when needed, up to the maximum allocated storage limit. | -| **Maximum Allocated Storage** | *(Required if storage autoscaling is enabled)* Maximum storage size in GiB (20-65536 GB) when storage autoscaling is enabled. This prevents unexpected costs by setting an upper limit for automatic scaling. | -| **Database Multi-AZ** | Enable Multi-Availability Zone deployment for high availability. This creates a standby replica in a different AZ and provides automatic failover capability. Recommended for production environments. | -| **Automated Backup** | Enable automatic backups for the RDS instance. When enabled, MariaDB will perform daily snapshots and transaction log backups, providing point-in-time recovery capabilities. | -| **Backup Retention Period** | *(Required if automated backup is enabled)* Number of days (1-35) for which automatic backups are kept. Longer retention periods provide more recovery options but increase storage costs. | -| **Backup Window** | *(Required if automated backup is enabled)* Time period for automated backups in HH:MM-HH:MM format (UTC). Choose a time when your database activity is typically low to minimize performance impact. | -| **Read Replicas** | *(Required if automated backup is enabled)* Configuration for database read replicas to improve read performance and provide additional availability. Each replica requires a name, instance class, and publicly accessible setting. | - -### 3. Customize your variable's name for your MariaDB database. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -MariaDB create outputs - \ No newline at end of file diff --git a/docs/project/dependency/memcached-aws.mdx b/docs/project/dependency/memcached-aws.mdx deleted file mode 100644 index d40b9cf71..000000000 --- a/docs/project/dependency/memcached-aws.mdx +++ /dev/null @@ -1,105 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Memcached - -SleakOps integrates Amazon ElastiCache with Memcached, a fully managed, in-memory caching service. This integration allows you to cache frequently accessed data, improving application performance by reducing the load on your databases. With SleakOps, managing and deploying Memcached clusters becomes effortless, providing seamless scalability and optimized performance for your applications. - -**Key Features of Memcached:** -- **Simplicity**: Operates as a key-value store without supporting advanced data structures. -- **In-memory Caching**: All data is stored in memory for ultra-fast access. -- **No Data Persistence**: Data is volatile and will be lost if the node fails or is restarted. -- **Horizontal Scalability**: Easily scale by adding more nodes to your Memcached cluster. -- **Cost-Effective against Redis**: More affordable than Redis due to the lack of features like persistence and replication. -- **Performance**: Excellent for high-speed, distributed caching in read-heavy applications. - -:::info -For more information on Memcached and its capabilities, you can refer to the official [AWS Redis documentation. ](https://aws.amazon.com/elasticache/memcached/). -::: - -## FAQs - -
- -### What are the key use cases for Memcached? - -Memcached is ideal for caching frequently accessed database queries, storing temporary user session data, and caching API responses to reduce database load. -
- -
- -### When should I use Memcached? - -Memcached is ideal for: -- **Simple Caching Needs**: If you need a basic, high-speed cache for frequently accessed data. -- **Non-Persistent Data**: When you don’t need data to be persisted and can tolerate data loss upon node failure or restart. -- **Horizontal Scalability**: For applications that benefit from adding multiple caching nodes to distribute load efficiently. -- **Cost-Sensitive Applications**: Memcached is more cost-effective than Redis because it lacks advanced features like persistence and replication. -
- -
- -### Why should I choose Memcached over Redis? - -Memcached is a simpler and more cost-effective caching solution if you don't need data persistence, replication, or advanced data types. It's suitable for applications that prioritize fast, distributed caching. -
- -
- -### How does Memcached scale in SleakOps? - -Memcached scales horizontally by adding more nodes to your cluster, allowing you to distribute the caching load across multiple nodes. -
- -
- -### Does Memcached offer data persistence? - -No, Memcached does not support data persistence. All cached data is stored in memory and will be lost if the node is restarted or fails. -
- -
- -### What happens to the cached data if a node fails? - -Cached data in Memcached is volatile, meaning it will be lost if a node fails or is restarted. For critical applications, Redis (which supports data persistence) might be a better choice. -
- -## Set up your AWS Memcached -### 1. Add AWS Memcached as a Dependency -To integrate Memcached with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "AWS Redis" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your Memcached database. - -When adding Memcached as a dependency in SleakOps, you need to configure several key attributes: - - -memcached-create-p1 - - -| **Attribute** | **Description** | -| --- | --- | -| **Node Type** | Instance class that determines the performance and memory capacity of the Redis instance. Examples: `cache.t3.micro`, `cache.m5.large`, `cache.r6g.large` | -| **Nodes Quantity** | Defines the number of Memcached nodes for horizontal scaling. Adding more nodes increases scalability. Example: 1 or more | -| **Port** | The communication port used by Redis to interact with your application. Default: `11121` (can be customized) | - -### 3. Customize your variable names for your Memcached. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -memcached-create-outputs - \ No newline at end of file diff --git a/docs/project/dependency/msk-aws.mdx b/docs/project/dependency/msk-aws.mdx deleted file mode 100644 index b87eeaf3d..000000000 --- a/docs/project/dependency/msk-aws.mdx +++ /dev/null @@ -1,147 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS MSK (Managed Streaming for Apache Kafka) - -SleakOps provides seamless integration with Amazon MSK (Managed Streaming for Apache Kafka), a fully managed service that makes it easy to build and run applications that use Apache Kafka to process streaming data. Amazon MSK eliminates the operational overhead of managing Kafka infrastructure, allowing you to focus on building your applications. By leveraging SleakOps for this integration, you can efficiently manage MSK clusters within your EKS environment, ensuring high performance, scalability, and reliability for your streaming data applications. - -## FAQs - -
- -### How does SleakOps manage MSK credentials? - -When you create an MSK dependency in SleakOps, it automatically generates a Vargroup for your Kafka cluster. This Variable Group securely stores the MSK credentials and other important configuration details, such as the cluster endpoints and authentication information. You'll be able to manage them from the [Vargroups](/docs/project/vargroup) section. -
- -
- -### Can I change the Kafka version after the cluster is deployed? - -Yes, Amazon MSK supports Kafka version upgrades. Choose from the versions supported. However, the upgrade process requires careful planning and may involve downtime. It's recommended to test the upgrade process in a non-production environment first. -
- -
- -### What happens if I need more storage for my MSK cluster? - -**For Provisioned mode**: You configure the storage size per broker node (1-16384 GB) during cluster creation. This storage is automatically provisioned and managed by AWS. If you need more storage, you'll need to modify the cluster configuration, which may require downtime. - -**For Serverless mode**: Storage is automatically managed and scaled by AWS based on your usage patterns. You don't need to configure storage size as it scales automatically. -
- -
- -### How do I connect to my MSK cluster? - -To connect to your MSK cluster: -1. **Get the Bootstrap Servers**: Use the bootstrap server endpoints provided by SleakOps in the vargroup. -2. **Configure Authentication**: MSK supports various authentication methods including SASL/SCRAM, IAM, and TLS. -3. **Use Kafka Clients**: Connect using standard Kafka clients and libraries. -4. **VPN Connection**: Ensure you are connected to the VPN of the AWS account where the MSK cluster is located. - -**Note**: Both Provisioned and Serverless modes use the same connection methods, but Serverless mode may have different performance characteristics and scaling behavior. -
- -
- -### How do I create topics in my MSK cluster? - -To create topics in your MSK cluster: -1. **Using Kafka Tools**: -``` -kafka-topics.sh --create --topic my-topic --bootstrap-server MSK_BOOTSTRAP_SERVERS --partitions 3 --replication-factor 3 -``` -2. **Using Kafka Admin Client**: Use the Kafka Admin Client in your application code. -3. **Replace Variables**: Replace `MSK_BOOTSTRAP_SERVERS` with the actual bootstrap server endpoints from your vargroup. - -**Note**: For Provisioned mode, set the replication factor to match your number of broker nodes (minimum 3 for production). For Serverless mode, AWS manages the replication automatically. -
- -
- -### How do I produce and consume messages? - -To produce and consume messages: -1. **Producer Example**: -``` -kafka-console-producer.sh --topic my-topic --bootstrap-server MSK_BOOTSTRAP_SERVERS -``` -2. **Consumer Example**: -``` -kafka-console-consumer.sh --topic my-topic --bootstrap-server MSK_BOOTSTRAP_SERVERS --from-beginning -``` -3. **Application Integration**: Use Kafka clients in your application code for production use. -
- -
- -### What should I do if I encounter connection issues with my MSK cluster? - -Check the following: -- Ensure the bootstrap server endpoints, username, and password are correct. -- Verify that your security groups and firewall rules allow access. -- Ensure the cluster is running and has enough resources. -- Check if the cluster is in an available state. -- Verify your authentication configuration (SASL/SCRAM, IAM, or TLS). -Otherwise, contact us. -
- -
- -### What are the benefits of Amazon MSK over self-managed Kafka? - -Amazon MSK offers several advantages: -- **Managed Operations**: No need to manage Kafka infrastructure -- **High Availability**: Built-in replication and failover capabilities -- **Security**: Integrated with AWS security services -- **Monitoring**: CloudWatch integration for monitoring and alerting -- **Scalability**: Easy scaling of broker instances and storage -- **Compatibility**: Fully compatible with Apache Kafka -
- -:::info -AWS documentation: [Amazon MSK Documentation](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) -::: - -## Set up your MSK -### 1. Add MSK as a Dependency -To integrate MSK with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "MSK" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your MSK. -You will access the following form: - - -MSK create form - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Deployment Mode** | Choose between **Provisioned** (fixed capacity, full control over configuration) or **Serverless** (auto-scaling, pay-per-use for variable workloads). Provisioned mode is ideal for consistent workloads with specific performance requirements, while Serverless is perfect for development and variable traffic patterns. | -| **Kafka Version** | *(Required for Provisioned mode)* Select the specific version of Apache Kafka for your MSK cluster. Choose from versions 2.8.1, 3.2.0, 3.3.2, 3.4.0, or 3.5.1. Each version includes specific Kafka features, performance improvements, and security updates. | -| **Instance Type** | *(Required for Provisioned mode)* Define the instance type that specifies the hardware configuration for your Kafka brokers. Choose from t3 (burstable performance) or m5 (general purpose) instance types. This controls CPU, memory, and network performance for your streaming workloads. | -| **Broker Nodes** | *(Required for Provisioned mode)* Number of broker nodes in your MSK cluster (2-15 nodes). Use 2 nodes for development environments. For production, use 3 or more nodes (must be multiple of 3) to ensure high availability and fault tolerance. More nodes provide better performance and availability. | -| **Storage Size (GB)** | *(Required for Provisioned mode)* Storage size in GB per broker node (1-16384 GB). This determines how much data each broker can store locally. Consider your data retention requirements and throughput needs when setting this value. | - -### 3. Customize your variable's name for your MSK cluster. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -MSK create outputs - \ No newline at end of file diff --git a/docs/project/dependency/mysql-aws.mdx b/docs/project/dependency/mysql-aws.mdx deleted file mode 100644 index b4cf77940..000000000 --- a/docs/project/dependency/mysql-aws.mdx +++ /dev/null @@ -1,194 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS MySQL - -SleakOps facilitates the integration of MySQL databases through Amazon RDS (Relational Database Service). Amazon RDS for MySQL is a fully managed service that simplifies database setup, operation, and scaling. By leveraging SleakOps for this integration, you can efficiently manage MySQL databases within your EKS (Elastic Kubernetes Service) environment, ensuring robust, scalable, and reliable data storage solutions for your applications. - - -## FAQs - -
- -### How does SleakOps manage MySQL credentials? - -When you create a MySQL dependency in SleakOps, it automatically generates a Vargroup for your database. This Variable Group securely stores the MySQL credentials and other important configuration details, such as the database endpoint and user access information. You’ll be able of manage them from [Vargroups](/docs/project/vargroup) section. -
- -
- -### What is Multi-AZ deployment and should I enable it? - -Multi-AZ (Availability Zone) deployment ensures high availability and failover support by replicating your database in another availability zone. It’s recommended for production environments to prevent downtime. Keep in mind that it increases costs. -
- -
- -### Can I change the MySQL version after the database is deployed? - -No, the database engine version cannot be changed after deployment. You would need to create a new MySQL instance with the desired version and migrate your data. Or change it manually into the AWS Console. -
- -
- -### What happens if I need more storage for my MySQL database? - -You can adjust the storage size when configuring your database. If you need more storage after deployment, you can scale modifying the settings in AWS as at the moment SleakOps does not support it. -
- -
- -### How do I create a MySQL database dump? - -To create a dump of your MySQL database, use the following command: -``` -sh -mysqldump -h MYSQL_ADDRESS -u MYSQL_USERNAME -p MYSQL_PASSWORD > dump.sql -``` -Replace `MYSQL_ADDRESS`, `MYSQL_USERNAME`, and `MYSQL_PASSWORD` with the appropriate values. -For additional information on creating a MySQL dump, refer to the [official MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html). -Another option is creating it directly from the AWS Console and then import it. See [Restoring to a DB instance](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). -
- -
- -### How do I import an existent dump using docker? - -For more details: [MySQL Dump Documentation](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html) -To import a database dump into your MySQL RDS instance: - 1. **Connect to the VPN**: Ensure you are connected to the VPN of the AWS account where the RDS instance is located. - 2. **Run Docker Container** (Recommended): - - Install Docker on your local machine if not already installed. - - Run a MySQL Docker container with the following command: - ``` - sh - docker run -it --name mysql-container -v ./initial_data/:/tmp/data/ -e MYSQL_ROOT_PASSWORD=MYSQL_PASSWORD -d mysql bash - ``` - - Attach to the container’s terminal: - ``` - sh - docker exec -t -i mysql-container bash - ``` - - Import the dump file: - ``` - sh - mysql -h MYSQL_ADDRESS -u MYSQL_USERNAME -p < /tmp/data/dump.sql - ``` - Replace `MYSQL_ADDRESS`, `MYSQL_USERNAME`, and `MYSQL_PASSWORD` with your RDS instance details. -
- -
- -### How do I import an existent dump to my local machine ? - -Alternatively, you can use a MySQL client installed on your local machine to import the dump. -``` -mysql -h MYSQL_ADDRESS -u MYSQL_USERNAME -p MYSQL_PASSWORD < /tmp/data/dump.sql -``` -
- -
- -### What should I do if I encounter connection issues with my MySQL database? - -- Ensure the database endpoint, username, and password are correct. -- Verify that your security groups and firewall rules allow access. -- Ensure the database is running and has enough resources (CPU, memory). -Otherwise, contact us. -
- -
- -### What is an RDS Read Replica? - -An RDS Read Replica is a read-only copy of your primary database instance in Amazon RDS. It helps distribute read-heavy workloads and improves the performance and scalability of your database by offloading read operations from the primary database. -RDS Read Replicas are ideal when you need to: -- Offload read-heavy operations from your primary instance. -- Scale your read operations as your application grows. -- Distribute database reads across multiple geographic locations. -- Have a backup solution that can quickly be promoted to a primary instance in case of failure. -:::info -Keep in mind that Read replicas have a delay performing updates. -::: -
- -
- -### How do I configure a Read Replica in SleakOps? - -In SleakOps, when creating a read replica for your RDS database, you will need to provide the following information: -- **Name** of the replica -- **Replica Instance Class**, which determines the instance type for the replica. -- **Replica Publicly Accessible**, to decide if the replica should have a public IP or be accessible only within your private network. -
- -
- -### Can I delete a replica? - -At the moment, the only way is to delete the dependency. -
- -:::info -AWS documentation: [Amazon RDS MySQL Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) -::: - -## Set up your MySQL -### 1. Add MySQL as a Dependency -To integrate MySQL with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "MySQL" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your MySQL. -You will access the following form: - - -mysql-create-p1 - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Database Engine Version** | Select the specific version of the MySQL database engine you wish to use. This ensures compatibility with your application requirements. Example: `MySQL 8.0.2`, `MySQL 5.7.1` | -| **Database Instance Class** | Define the instance class that specifies the hardware configuration for your MySQL database. This controls CPU, memory, and network performance. Example: `db.m6g.large`, `db.t3.medium`. See [AWS detail](https://aws.amazon.com/es/rds/instance-types/). | -| **Database Storage** | Specify the amount of storage allocated for the database. Example: 100 GB, 500 GB. | -| **Username** | Provide the master username for the MySQL database. This is the main user with administrative privileges. Example: admin, root. | -| **Password** | Password for the master user to access the database. | -| **Multi-Availability Zone** | Enable or disable Multi-AZ deployment. This ensures high availability and failover support by replicating the database across multiple availability zones. Recommended for production environments. | -| **Automated Backup** | Configure automated backups for the MySQL database. This ensures data protection by enabling daily snapshots and transaction log backups. Set up the _Backup Retention Period_ and the _Backup Window_. Recommended for production environments. | -| **Backup Retention Period** | Set the number of days to retain automated backups. | -| **Backup Window** | Period of time while the backup will be done. | - -:::warning -SleakOps allow the creation of replicas only during the creation of the dependency. -::: - -After that basic data, you need to decide if a replica will be created. To do that: -1. Into the form, look for the section **Definition of RDS Read Replicas** and click on + _Add Item_. -2. Complete the following data: - -| **Setting** | **Description** | -| --- | --- | -| **Name** | A name for the replica | -| **Replica Instance Class** | Define the instance class that specifies the hardware configuration for your MySQL database. This controls CPU, memory, and network performance. Example: `db.m6g.large`, `db.t3.medium`. | -| **Replica Publicly Accessible** | Decide if the replica should have a public IP or be accessible only within your private network. | - -### 3. Customize your variable's name for your MySQL data base. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -mysql-create-outputs - \ No newline at end of file diff --git a/docs/project/dependency/opensearch-aws.mdx b/docs/project/dependency/opensearch-aws.mdx deleted file mode 100644 index 63a1e218d..000000000 --- a/docs/project/dependency/opensearch-aws.mdx +++ /dev/null @@ -1,76 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS OpenSearch - -SleakOps integrates with Amazon OpenSearch (formerly known as Amazon Elasticsearch Service), a powerful search and analytics engine designed to help you search, analyze, and visualize data in real time. By leveraging OpenSearch in SleakOps, you can quickly deploy, manage, and scale your search infrastructure, gaining valuable insights from your data. - -:::info -For more information on OpenSearch and its capabilities, you can refer to the [Amazon OpenSearch Service Documentation ](https://docs.aws.amazon.com/opensearch-service/). -::: - -## FAQs - -
- -### What are the use cases for OpenSearch? - -OpenSearch is commonly used for full-text search, real-time analytics, monitoring and observability, and log analysis. It is also ideal for powering search functionalities on websites and applications. -
- -
- -### What does "Dedicated Master Enabled" mean? - -When enabled, SleakOps sets up dedicated master nodes that help with managing the OpenSearch domain. They provide enhanced stability by separating management tasks from data nodes. This is highly recommended for production workloads. -
- -
- -### What is the recommended configuration for master nodes in production? - -For production environments, SleakOps recommends using 3 dedicated master nodes to improve the stability and performance of your OpenSearch cluster. -
- -## Set up your OpenSearch -### 1. Add AWS OpenSearch as a Dependency -To integrate OpenSearch with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "SQS" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your OpenSearch. -When adding OpenSearch as a dependency in SleakOps, you need to configure several key attributes: - - -opensearch-create-p1 - - -| **Attribute** | **Description** | -| --- | --- | -| **FIFO Queue** | Specifies the type of SQS queue. Where `Standard Queue` (for most use cases) or `FIFO Queue` (if message ordering is required)` | -| **FIFO Deduplication** | Only for FIFO Queues, in order to avoid duplicates. | -| **Message Retention Period** | Specifies the amount of time a message will be retained in the queue if it hasn't been consumed. | 1 minute to 14 days (Default: 4 days) | -| **Maximum Message Size** | The maximum size of a message that can be sent to the SQS queue. | Up to 256 KB (Default: 256 KB) | -| **Delivery Delay in Seconds** | The delay between the message being sent to SQS and it being visible in the queue. No delay by default. | 0 to 15 minutes (Default: 0 seconds) | -| **Receive Message Wait Time** | Determines how long a `ReceiveMessage` call waits if no messages are available in the queue. | 0 to 20 seconds (Default: 0 seconds) | -| **Visibility Timeout** | The duration that a message remains invisible after a receiving component reads it from the queue. | From 0 to 12 hours (Default: 30 seconds) | -| **Dead-Letter Queue (DLQ)** | Add a queue where messages that fail to be processed multiple times are sent for additional analysis. | Configure DLQ with max receive count | - -### 3. Customize your variable names for your SQS. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -sqs-create-outputs - \ No newline at end of file diff --git a/docs/project/dependency/oracle-aws.mdx b/docs/project/dependency/oracle-aws.mdx deleted file mode 100644 index 6c7e68824..000000000 --- a/docs/project/dependency/oracle-aws.mdx +++ /dev/null @@ -1,159 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Oracle - -SleakOps facilitates the integration of Oracle databases through Amazon RDS (Relational Database Service). Amazon RDS for Oracle is a fully managed service that simplifies database setup, operation, and scaling. By leveraging SleakOps for this integration, you can efficiently manage Oracle databases within your EKS (Elastic Kubernetes Service) environment, ensuring robust, scalable, and reliable data storage solutions for your applications. - -## FAQs - -
- ### License - When creating an Oracle DB using Sleakops License Included (LI). Currently - Bring Your Own License (BYOL) is not supported, however, contact support for - more information. -
- -
- ### How does SleakOps manage Oracle credentials? - When you create an Oracle dependency in SleakOps, it automatically generates a - Vargroup for your database. This Variable Group securely stores the Oracle - credentials and other important configuration details, such as the database - endpoint and user access information. You'll be able of manage them from - [Vargroups](/docs/project/vargroup) section. -
- -
- ### What is Multi-AZ deployment and should I enable it? - Multi-AZ (Availability Zone) deployment ensures high availability and failover - support by replicating your database in another availability zone. It's - recommended for production environments to prevent downtime. Keep in mind that - it increases costs. -
- -
- - ### Can I change the Oracle version after the database is deployed? - - No, the database engine version cannot be changed after deployment. You would - need to create a new Oracle instance with the desired version and migrate your - data. Or change it manually into the AWS Console. -
- -
- - ### What happens if I need more storage for my Oracle database? - - You can adjust the storage size when configuring your database. If you need - more storage after deployment, you can scale modifying the settings in AWS as - at the moment SleakOps does not support it. -
- -
- -### How do I create a Oracle database dump? - -:::warning -The client is only available for x86-64 Linux distributions. -::: -:::tip -Follow this link to install the [client ](https://www.oracle.com/es/database/technologies/instant-client/linux-x86-64-downloads.html) -::: -To create a dump of your Oracle database, use the following command: -``` -exp ${ORACLE_USERNAME}/${ORACLE_PASSWORD}@${ORACLE_ENDPOINT}/${ORACLE_NAME} FILE=exp_file.dmp LOG=exp_file.log -``` -Replace `ORACLE_USERNAME`, `ORACLE_ENDPOINT`, `ORACLE_NAME` and `ORACLE_PASSWORD` with the appropriate values. - -For additional information on creating an Oracle dump, refer to the [official Oracle documentation ](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-original-export-utility.html). - -Another option is creating it directly from the AWS Console and then import it. See [Restoring to a DB instance](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). - -
- -
- -### How do I import an existent dump ? - -:::warning -The client is only available for x86-64 Linux distributions. -::: -:::tip -Follow this link to install the [client ](https://www.oracle.com/es/database/technologies/instant-client/linux-x86-64-downloads.html) -::: -You can use a Oracle client installed on your local machine to import the dump. -``` -imp ${ORACLE_USERNAME}/${ORACLE_PASSWORD}@${ORACLE_ENDPOINT}/${ORACLE_NAME} FROMUSER=cust_schema TOUSER=cust_schema FILE=exp_file.dmp LOG=imp_file.log -``` -Replace `ORACLE_USERNAME`, `ORACLE_ENDPOINT`, `ORACLE_NAME` and `ORACLE_PASSWORD` with the appropriate values. - -For additional information on importing an Oracle dump, refer to the [official Oracle documentation ](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-original-import-utility.html). - -Another option is creating it directly from the AWS Console and then import it. See [Restoring to a DB instance](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). - -
- -
- - ### What should I do if I encounter connection issues with my Oracle - database? - - - Ensure the database endpoint, username, and password are correct. - Verify - that your security groups and firewall rules allow access. - Ensure the - database is running and has enough resources (CPU, memory). Otherwise, contact - us. -
- -:::info -AWS documentation: [Amazon RDS Oracle Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) -::: - -## Set up your Oracle - -### 1. Add Oracle as a Dependency - -To integrate Oracle with SleakOps: - -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "Oracle" from the list of available dependency types. - For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your Oracle. - -You will access the following form: - - - Oracle-create-p1 - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Database Engine Version** | Select the specific version of the Oracle database engine you wish to use. This ensures compatibility with your application requirements. Example: `19.0.0.0.ru-2024-01.rur-2024-01.r1` | -| **Database Instance Class** | Define the instance class that specifies the hardware configuration for your Oracle database. This controls CPU, memory, and network performance. Example: `db.m6g.large`, `db.t3.medium`. See [AWS detail](https://aws.amazon.com/es/rds/instance-types/). | -| **Database Storage** | Specify the amount of storage allocated for the database. Example: 100 GB, 500 GB. | -| **Username** | Provide the master username for the Oracle database. This is the main user with administrative privileges. Example: admin, root. | -| **Password** | Password for the master user to access the database. | -| **Multi-Availability Zone** | Enable or disable Multi-AZ deployment. This ensures high availability and failover support by replicating the database across multiple availability zones. Recommended for production environments. | -| **Automated Backup** | Configure automated backups for the Oracle database. This ensures data protection by enabling daily snapshots and transaction log backups. Set up the _Backup Retention Period_ and the _Backup Window_. Recommended for production environments. | -| **Backup Retention Period** | Set the number of days to retain automated backups. | -| **Backup Window** | Period of time while the backup will be done. | - -### 3. Customize your variable's name for your Oracle data base. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - - Oracle-create-outputs - diff --git a/docs/project/dependency/postgresql-aws.mdx b/docs/project/dependency/postgresql-aws.mdx deleted file mode 100644 index 8c53e44b0..000000000 --- a/docs/project/dependency/postgresql-aws.mdx +++ /dev/null @@ -1,193 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS PosgreSQL - -SleakOps offers seamless integration with Amazon RDS for PostgreSQL, a fully managed relational database service. PostgreSQL is known for its advanced features, scalability, and robust performance, making it a preferred choice for complex applications and data-intensive operations. By integrating PostgreSQL through SleakOps, you can efficiently manage your database deployments and leverage the power of AWS’s managed database service. - -## FAQs - -
- -### How does SleakOps manage PostgreSQL credentials? - -When you create a PostgreSQL dependency in SleakOps, it automatically generates a Vargroup for your database. This Variable Group securely stores the PostgreSQL credentials and other important configuration details, such as the database endpoint and user access information. You’ll be able of manage them from [Vargroups](/docs/project/vargroup) section. -
- -
- -### What is Multi-AZ deployment and should I enable it? - -Multi-AZ (Availability Zone) deployment ensures high availability and failover support by replicating your database in another availability zone. It’s recommended for production environments to prevent downtime. Keep in mind that it increases costs. -
- -
- -### Can I change the PostgreSQL version after the database is deployed? - -No, the database engine version cannot be changed after deployment. You would need to create a new PostgreSQL instance with the desired version and migrate your data. Or change it manually into the AWS Console. -
- -
- -### What happens if I need more storage for my PostgreSQL database? - -You can adjust the storage size when configuring your database. If you need more storage after deployment, SleakOps allows you to scale the storage size without downtime. -
- -
- -### How do I create a PostgreSQL database dump? - -To create a dump of your PostgreSQL database: - 1. **Run the `pg_dump` Command**: -``` -sh -pg_dump -h POSTGRESQL_ADDRESS -U POSTGRESQL_USERNAME -W > dump.sql -``` -Replace `POSTGRESQL_ADDRESS`, `POSTGRESQL_USERNAME`, and `dump.sql` with the appropriate values. - 2. Consult Documentation: For more information on how to create a dump, refer to the official [PostgreSQL documentation.](https://www.postgresql.org/docs/current/app-pgdump.html). -
- -
- -### How do I import an existent dump using docker? - -To import a database dump into your PostgreSQL RDS instance: - 1. **Connect to the VPN**: Ensure you are connected to the VPN of the AWS account where the RDS instance is located. - 2. **Run Docker Container** (Recommended): - - Install Docker on your local machine if not already installed. - - Run a PostgreSQL Docker container with the following command: - ``` - sh - docker run -it --name postgresql-container -v ./initial_data/:/tmp/data/ -e POSTGRESQL_ROOT_PASSWORD=POSTGRESQL_PASSWORD -d postgres bash - ``` - - Attach to the container’s terminal: - ``` - sh - docker exec -t -i postgresql-container bash - ``` - - Import the dump file: - ``` - pg_dump -h POSTGRESQL_ADDRESS -U POSTGRESQL_USERNAME -W < /tmp/data/dump.sql - ``` - Replace `POSTGRESQL_ADDRESS`, `POSTGRESQL_USERNAME`, and `dump.sql` with your specific details. -
- -
- -### How do I import an existent dump to my local machine ? - -Alternatively, you can use a PostgreSQL client installed on your local machine to import the dump. -``` -sh -psql -h POSTGRESQL_ADDRESS -U POSTGRESQL_USERNAME -W -f /tmp/data/dump.sql -``` -
- -
- -### What should I do if I encounter connection issues with my PostgreSQL database? - -Check the following: -- Ensure the database endpoint, username, and password are correct. -- Verify that your firewall rules allow access. -- Ensure the database is running and has enough resources (CPU, memory). -Otherwise, contact us. -
- -
- -### What is an RDS Read Replica? - -An RDS Read Replica is a read-only copy of your primary database instance in Amazon RDS. It helps distribute read-heavy workloads and improves the performance and scalability of your database by offloading read operations from the primary database. -RDS Read Replicas are ideal when you need to: -- Offload read-heavy operations from your primary instance. -- Scale your read operations as your application grows. -- Distribute database reads across multiple geographic locations. -- Have a backup solution that can quickly be promoted to a primary instance in case of failure. -:::info -Keep in mind that Read replicas have a delay performing updates. -::: -
- -
- -### How do I configure a Read Replica in SleakOps? - -In SleakOps, when creating a read replica for your RDS database, you will need to provide the following information: -- **Name** of the replica -- **Replica Instance Class**, which determines the instance type for the replica. -- **Replica Publicly Accessible**, to decide if the replica should have a public IP or be accessible only within your private network. -
- -
- -### Can I delete a replica? - -At the moment, the only way is to delete the dependency. -
- -:::info -AWS documentation: [Amazon RDS PostgreSQL Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) -::: - -## Set up your PostgreSQL -### 1. Add PostgreSQL as a Dependency -To integrate PostgreSQL with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "PostgreSQL" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your PostgreSQL database. -You will access the following form: - - -postgres-create-p1 - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Database Engine Version** | Select the specific version of the MySQPostgreSQLL database engine you wish to use. This ensures compatibility with your application requirements. Example: `PostgreSQL 14.9`, `PostgreSQL 16.5` | -| **Database Instance Class** | Define the instance class that specifies the hardware configuration for your PostgreSQL database. This controls CPU, memory, and network performance. Example: `db.m6g.large`, `db.t3.medium`. See [AWS detail](https://aws.amazon.com/es/rds/instance-types/). | -| **Database Storage** | Specify the amount of storage allocated for the database. Example: 100 GB, 500 GB. | -| **Username** | Provide the master username for the PostgreSQL database. This is the main user with administrative privileges. Example: admin, root. | -| **Password** | Password for the master user to access the database. | -| **Multi-Availability Zone** | Enable or disable Multi-AZ deployment. This ensures high availability and failover support by replicating the database across multiple availability zones. Recommended for production environments. | -| **Automated Backup** | Configure automated backups for the PostgreSQL database. This ensures data protection by enabling daily snapshots and transaction log backups. Set up the _Backup Retention Period_ and the _Backup Window_. Recommended for production environments. | -| **Backup Retention Period** | Set the number of days to retain automated backups. | -| **Backup Window** | Period of time while the backup will be done. | - -:::warning -SleakOps allow the creation of replicas only during the creation of the dependency. -::: - -After that basic data, you need to decide if a replica will be created. To do that: -1. Into the form, look for the section **Definition of RDS Read Replicas** and click on + _Add Item_. -2. Complete the following data: - -| **Setting** | **Description** | -| --- | --- | -| **Name** | A name for the replica | -| **Replica Instance Class** | Define the instance class that specifies the hardware configuration for your PostgreSQL database. This controls CPU, memory, and network performance. Example: `db.m6g.large`, `db.t3.medium`. | -| **Replica Publicly Accessible** | Decide if the replica should have a public IP or be accessible only within your private network. | - -### 3. Customize your variable’s name for your PostgreSQL data base. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -postgres-create-outputs - \ No newline at end of file diff --git a/docs/project/dependency/redis-aws.mdx b/docs/project/dependency/redis-aws.mdx deleted file mode 100644 index db4b24d0b..000000000 --- a/docs/project/dependency/redis-aws.mdx +++ /dev/null @@ -1,82 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Redis - -SleakOps facilitates the integration of Amazon ElastiCache with Redis, a fully managed, in-memory data store. This service allows you to cache frequently accessed data, enhancing application performance and reducing the load on your primary databases. By using Redis through SleakOps, your applications can experience faster response times, improved scalability, and reduced latency. - -:::info -For more information on Redis and its capabilities, you can refer to the official [AWS Redis documentation. ](https://aws.amazon.com/elasticache/redis/). -::: - -## FAQs - -
- -### What features make Redis a good choice for my application? - -Redis offers several advanced features that make it suitable for a wide range of applications: -- **Data Persistence**: Redis can save data to disk, ensuring that information is not lost in the event of a restart. -- **Advanced Data Structures**: Redis supports more complex data structures than simple key-value stores, such as lists, sets, hashes, sorted sets, and more. -- **High Availability**: Through replication and automatic failover, Redis ensures that your application remains operational even if a node fails. -- **Scalability**: Redis can be scaled both vertically (with larger instances) and horizontally (using sharding and clusters). -- **Pub/Sub Messaging**: Redis offers native support for publish/subscribe messaging patterns, useful for building real-time applications. -
- -
- -### What are the common use cases for Redis? - -Redis is versatile and can be used in a variety of scenarios, including: -- **Session Management**: Redis is commonly used for storing user session data due to its low-latency data access and persistence features. -- **Caching**: Redis is ideal for caching frequently accessed data, reducing load on primary databases and improving response times. -- **Real-Time Analytics**: Redis's fast in-memory processing capabilities make it perfect for real-time analytics, leaderboards, and counters. -- **Message Queues**: With Redis’s pub/sub functionality, you can use it for messaging systems and event streaming. -- **Job Queues**: Redis is used for managing background job queues in large-scale applications. -
- -
- -### How does Redis differ from Memcached? - -Redis is more feature-rich than Memcached. Redis supports a variety of data structures like lists, sets, and hashes, while Memcached is limited to simple key-value pairs. Redis also supports data persistence and replication, making it suitable for applications where durability and high availability are critical. However, Memcached is typically more lightweight and faster for basic caching scenarios. -
- -## Set up your AWS Redis -### 1. Add AWS Redis as a Dependency -To integrate Redis with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "AWS Redis" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your Redis database. -You will access the following form: - - -redis-create-p1 - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Node Type** | Instance class that determines the performance and memory capacity of the Redis instance. Examples: `cache.t3.micro`, `cache.m5.large`, `cache.r6g.large` | -| **Port** | The communication port used by Redis to interact with your application. Default: `6379` (can be customized) | - -### 3. Customize your variable names for your Redis. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -redis-create-outputs - \ No newline at end of file diff --git a/docs/project/dependency/s3bucket-aws.mdx b/docs/project/dependency/s3bucket-aws.mdx deleted file mode 100644 index 55c8d28c0..000000000 --- a/docs/project/dependency/s3bucket-aws.mdx +++ /dev/null @@ -1,139 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS S3 Bucket - -SleakOps integrates seamlessly with Amazon Simple Storage Service (S3), a highly durable and secure object storage service. Amazon S3 provides a scalable solution for storing and retrieving any amount of data, making it an ideal choice for backup storage, asset management, and data archiving within your applications. By leveraging SleakOps for S3 integration, you can easily manage your S3 buckets and access the stored data directly from your EKS (Elastic Kubernetes Service) environment. - -## FAQs - -
- -### When should I use Amazon S3? - -You should use Amazon S3 when you need: -- Scalable storage for files, media, backups, or static assets. -- Highly durable and available storage for critical data. -- Data archiving solutions or disaster recovery. -- A cost-effective solution for storing large amounts of unstructured data. -
- -
- -### How do I create a S3 dump? - -To create a backup of your S3 bucket data, follow these steps: - 1. **Ensure Admin Access**: Verify that you have admin access to the AWS account where the S3 bucket is located. - 2. **Install AWS CLI**: Ensure AWS CLI is installed on your local machine. For installation instructions, refer to the [official AWS CLI documentation ](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). - 3. **Configure AWS CLI**: Ensure that your Access and Secret keys are configured in the default profile. If they are under a different profile, use the `--profile PROFILE_NAME` option with the commands. - 4. **Run Backup Commands**: ```sh - aws sts assume-role --role-arn arn:aws:iam::ACCOUNT_ID:role/SleakopsAdminRole - - aws s3 sync s3://BUCKET_NAME /path/to/local/directory``` - - Replace ACCOUNT_ID, BUCKET_NAME, and /path/to/local/directory with your specific details. -
- -
- -### Does SleakOps create Variable Groups for S3 dependencies? - -Yes, when you configure an S3 bucket in SleakOps, it will automatically create a Variable Group. This securely stores the access keys and other sensitive information needed to manage and interact with your S3 bucket. -
- -
- -### What is an S3 Access Control List (ACL)? - -An S3 Access Control List (ACL) defines the permissions for who can access your S3 bucket and its contents. It controls the level of access granted to users, groups, or predefined AWS entities. -You can choose an ACL that defines who can access the bucket and what level of permission they have. The available options are: -- `private`: Only the bucket owner has full access. (Default) -- `public-read`: Anyone can read the objects in the bucket. -- `public-read-write`: Anyone can read and write to the bucket. -- `aws-exec-read`: Grants read access to AWS services like CloudFront. -- `authenticated-read`: Grants read access to authenticated AWS users. -- `log-delivery-write`: Grants write access to the bucket for logging purposes. -For further details, you can refer to [AWS S3 ACL documentation ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html). -
- -
- -### What is Amazon CloudFront? - -Amazon CloudFront is a Content Delivery Network (CDN) that speeds up the delivery of your static and dynamic content (like HTML, CSS, images, and videos) by caching it at edge locations closer to your users around the world. -
- -
- -### Can I use a custom domain name with CloudFront? - -Yes, SleakOps allows you to set a custom alias (subdomain) for your CloudFront distribution. For example, you could use `cdn.mydomain.com` as the URL for your CloudFront distribution instead of the default CloudFront URL. -
- -
- -### What is a Custom Header in CloudFront? - -Custom Headers allow you to include additional information in every request that CloudFront makes to your S3 bucket. This feature provides more control over how your S3 content is accessed and delivered by attaching specific metadata to the requests. -SleakOps allows you to define custom headers for CloudFront, which will be included in all requests sent to your S3 bucket. This is useful for adding security measures, managing permissions, or tracking requests. -``` -custom_headers: - - key: "X-Custom-Header" - value: "MyCustomValue" -``` -
- -## Set up your S3 Bucket -### 1. Add S3 Bucket as a Dependency -To integrate S3 Bucket with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "S3 Bucket" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your S3 Bucket. -When adding an S3 bucket as a dependency in SleakOps, you will be required to configure the following attributes: - -| **Attribute** | **Description** | -| --- | --- | -| **S3 Access Control List (ACL)** | Specifies the level of access for the S3 bucket and its contents. Options: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `log-delivery-write` | -| **Enable CloudFront** | Allows you to enable Amazon CloudFront, a CDN for delivering S3 bucket content globally. | -| **Alias** | The alias for the S3 bucket or CloudFront distribution (e.g., `cdn.mydomain.com`). | -| **Price Class** | Defines the set of global CloudFront edge locations used to serve content. Options: `Use all edge locations (best performance)`, `Use North America`, `Europe`, `Asia`, `Middle East`, and `Africa`, `Use only North America and Europe`. Check [AWS Price Class ](https://aws.amazon.com/cloudfront/pricing/). | -| **Custom Headers** | Custom headers that CloudFront includes in all requests sent to the S3 bucket. - Key: The header key, such as `X-Custom-Header`. - Value: The value you wish to assign to the header, like `MyCustomValue`. | -| **Override** | Specify whether CloudFront should override existing headers in requests from the origin. | - - -s3-create-p1 - - - -After that basic data, if you activated the Cloudfront, you will be able of customize its headers. -To do that: - 1. Into the form, look for the field _CloudFront custom headers_ and click on + _Add Item_. - 2. Complete _Key and Value_ -You can add as many as you need. - - -s3-create-cloudfront - - -### 3. Customize your variable names for your S3. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. - - -s3-create-outputs - - -In this step you can change the name of the attributes in case it is needed but SleakOps completes the values automatically. -After this step, your dependency is created. \ No newline at end of file diff --git a/docs/project/dependency/sqs-aws.mdx b/docs/project/dependency/sqs-aws.mdx deleted file mode 100644 index e9adc1818..000000000 --- a/docs/project/dependency/sqs-aws.mdx +++ /dev/null @@ -1,89 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS SQS - -SleakOps integrates Amazon Simple Queue Service (SQS) into your application's architecture. Amazon SQS is a fully managed message queuing service that allows you to decouple application components, ensuring smooth and efficient message processing. By leveraging SQS, you can enhance the scalability and reliability of your applications, handling large volumes of messages asynchronously. -This section provides an overview of how to configure SQS within SleakOps and details the attributes needed for successful integration. - -:::info -For further details on SQS and its benefits, you can refer to the [Amazon SQS Developer Guide ](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html). -::: - -## FAQs - -
- -### What is the difference between a Standard Queue and a FIFO Queue? - -1. A **Standard Queue** supports high throughput with at-least-once message delivery. Message ordering is not guaranteed but it's ideal for scenarios where message order isn't critical. -2. A **FIFO Queue** ensures message ordering and exactly-once delivery. It's suitable for applications where message order is crucial. -
- -
- -### What is Multi-AZ deployment and should I enable it? - -Multi-AZ (Availability Zone) deployment ensures high availability and failover support by replicating your database in another availability zone. It’s recommended for production environments to prevent downtime. Keep in mind that it increases costs. -
- -
- -### What is a Dead-Letter Queue (DLQ), and when should I use it? - -A **DLQ** is a secondary queue where messages that can't be processed successfully after a certain number of attempts are sent. You should configure a DLQ to help with error handling and to prevent message loss. See [AWS SQS DLQ ](https://aws.amazon.com/es/what-is/dead-letter-queue/). -
- -
- -### What is Deduplication in a FIFO Queue? - -In an SQS FIFO Queue, deduplication ensures that duplicate messages are automatically removed, preserving strict message ordering. -
- -## Set up your SQS -### 1. Add SQS as a Dependency -To integrate SQS with SleakOps: -1. In the SleakOps console, go to the "Dependencies" section -2. Choose "SQS" from the list of available dependency types. -For more detail see [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Set up your SQS database. -You will access the following form: - - -sqs-create-p1 - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Attribute** | **Description** | -| --- | --- | -| **Fifo Queue** | Select if the queue is standard or fifo. Read more on FAQs | -| **Fifo Deduplication** | Select if deduplication is activated. Read more on FAQs| -| **Message Delay Seconds** | Seconds of delivery delay to messages on queue. | -| **Message Max Size** | Bytes maximum limit per message | -| **Message Retention Seconds** |Seconds that a message is retained by SQS | -| **Receive WaitTime Seconds** | The time for which a ReceiveMessage call will wait for a message to arrive (long polling) before returning | -| **Visibility Timeout Seconds** | Seconds that a message is retained by SQS | -| **Dead Letter Queue** | Select if dead letter queue is enabled. Read more on FAQs | - -By activating the **Dead Letter Queue** feature, you need to complete the same information for the second queue. - -### 3. Customize your variable names for your SQS. - -As explained, when a dependency is created, SleakOps generates a vargroup to hold all the needed attributes. -In this step you can change the name of the attributes in case it is needed. -SleakOps completes the values automatically. -After this step, your dependency is created. - - -sqs-create-outputs - \ No newline at end of file diff --git a/docs/project/deployment/index.mdx b/docs/project/deployment/index.mdx deleted file mode 100644 index bc044b867..000000000 --- a/docs/project/deployment/index.mdx +++ /dev/null @@ -1,49 +0,0 @@ -import Zoom from 'react-medium-image-zoom'; -import 'react-medium-image-zoom/dist/styles.css'; - -# Deployment - -A Deployment in Sleakops signifies the installation of a new version of your application. This involves three primary components, together forming a Helm Release: -- [Releases](/docs/project/deployment/release): These are versioned combinations of your [Workloads](/docs/project/workload) including WebServices, Workers, CronJobs, and Hooks. -- Build Image: Represented by a [Build](/docs/project/build). -- Configuration Values: These comprise resources like [Volumes](/docs/project/volumes) and [VariableGroups](/docs/project/vargroup). - -:::info - -When there's an update to any of these resources, Sleakops will notify you about a Deployment via the unpublished banner shown [below](#unpublished-banner). - -::: - -## Deploying your ProjectEnv - -Upon creating a Deployment, we fetch the image corresponding to the Build to be deployed. Before this, we execute the Helm Release in the appropriate cluster namespace. This Helm release includes necessary Kubernetes services, ingresses, workers, and other services. - -Various methods exist to generate a Deployment. These are outlined below. Note that we force certain Deployments. For details, refer to [More on Deployment](/docs/project/deployment/more_on_deployment#forced-deployments). - -- [Workloads](/docs/project/workload): Provides a switcher allowing you to decide whether to run a new Deployment. -- [VariableGroup](/docs/project/vargroup): Operates similarly to Workloads but doesn't create a new Release. Instead, it only updates the [values](https://helm.sh/docs/chart_best_practices/values/) of the Deployment. -- [Dependency](/docs/project/dependency): Triggers a Deployment automatically. Delve deeper into this at [More on Deployment](/docs/project/deployment/more_on_deployment). - - - DEPLOY-deploy-switcher - - -### Manual Deployment - -If you skip deploying your changes immediately, or if your modification doesn't enforces a deployment, you have three methods to execute a Deployment: - -- [Build section](/docs/project/build): Utilizing the Deploy button, you can determine which Build to deploy. - - DEPLOY-build-button - - - -#### Unpublished banner - - -- Unpublished Changes Banner: This banner is shown when there's content pending that was not yet deployed on the cluster. Through this banner, you have the choice to deploy only the VariableGroups or if you want to deploy everything, including the Services in the 'draft' state. - - DEPLOY-deploy-changes-banner - - -- Via the [CLI ](/docs/cli). \ No newline at end of file diff --git a/docs/project/deployment/more_on_deployment.mdx b/docs/project/deployment/more_on_deployment.mdx deleted file mode 100644 index 04cc0a3cb..000000000 --- a/docs/project/deployment/more_on_deployment.mdx +++ /dev/null @@ -1,35 +0,0 @@ -# More on Deployments - -:::info - -This section serves as an extension of the primary [Deployment documentation](/docs/project/deployment). It's recommended to read that first for a foundational understanding. - -::: - -## How SleakOps Handles Deployments - -To execute a deployment, SleakOps utilizes the [Build](/docs/project/build) images stored in your project's image repository (AWS ECR), which are created either with the [ProjectEnv](/docs/project) entity during the [Initial Build](/docs/project/build) or with the creation of a Build entity that pushes to the ECR. Whenever a Deployment is initiated, we fetch the image corresponding to the designated Build. - -The next phase involves constructing and deploying the Helm chart. This is accomplished using generally purpose-built templates. Once constructed, we upload the Helm chart to the same ECR utilized for the Build images and proceed to deploy a Helm Release into the Kubernetes cluster, specifically within the ProjectEnv namespace. - -:::info - -All these resources reside in your own AWS Accounts. Sleakops does not exclusively store any data. - -::: - -### Forced Deployments - -:::caution Forced Deployment - -Hace in mind that under certain circumstances, SleakOps forces a Deploy. - -::: - -While multiple methods for generating a Deployment were highlighted in the primary [Deployment documentation](/docs/project/deployment), it's crucial to understand that SleakOps sometimes enforces Deployments. The rationale behind this is to optimize uptime, safeguard the current state of the deployed infrastructure, and mitigate potential service downtimes on the Cluster. This imperative arises because Helm templates should always synchronize with the Kubernetes Secrets present in the namespace to avert deployment failures. - -As you may already know, if it's not a 'forced' deployment, you'll be presented with an option (switcher) to determine if you wish to deploy your modifications. Deployments are forced in the following scenarios. - -- [Workloads](/docs/project/workload) Alias Configuration Changes: A Deployment is forced if any alterations are made to the 'alias' configuration. -- [Dependency](/docs/project/dependency): Always forces a Deployment to synchronize its associated VariableGroup state with the templates of the Helm Chart ensuring that Services operation is not affected. -- [VariableGroup](/docs/project/vargroup) Deletion: Same case as Dependency deletion. diff --git a/docs/project/deployment/release.mdx b/docs/project/deployment/release.mdx deleted file mode 100644 index 4b142ac1b..000000000 --- a/docs/project/deployment/release.mdx +++ /dev/null @@ -1,37 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# Release - -## What is a Release? - -In Sleakops, a release represents a deployable state of all the Workloads (web services, workers, cron jobs, hooks) of a [project](/docs/project) in an [environment](/docs/environment). - -## Release Creation - -Sleakops administers releases for you. Every time you modify, delete, or add a web service, worker, hook, or cron job, Sleakops gives you the option to publish the changes. Each time you publish those changes, Sleakops creates a new release with auto-incremented versions. - -### Helm Chart Resources - -#### Web Service: - -- A Kubernetes deployment -- A Kubernetes service -- A Kubernetes HPA (Horizontal Pod Autoscaler) -- A Kubernetes ingress - -The ingress generates its hosts using `...` - -#### Worker: - -- A Kubernetes deployment -- A Kubernetes HPA - -#### Hook: - -- A Kubernetes job - -This job uses Kubernetes hooks to start. - -#### Cron Job: - -- A Kubernetes cron job diff --git a/docs/project/dockertron.mdx b/docs/project/dockertron.mdx deleted file mode 100644 index 863f5f466..000000000 --- a/docs/project/dockertron.mdx +++ /dev/null @@ -1,266 +0,0 @@ ---- -sidebar_label: Dockertron -sidebar_position: 4 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Technical Documentation - Dockertron - -## Executive Summary - -**Dockertron** is an automated dockerization system that analyzes your source code and automatically generates the necessary infrastructure to run your application in Docker containers. The system uses artificial intelligence to understand your project structure and create the appropriate configuration files. - -You can find it in SleakOps in the **Projects > Configuration > Dockertron section.** - - - docketron_location - - ---- - -## What Does Dockertron Do? - -Dockertron automates the containerization process of your application following these steps: - -1. **Repository Analysis**: Examines your source code structure -2. **Service Identification**: Detects which components of your application need to run -3. **Dockerfile Generation**: Creates optimized Dockerfiles for each service -4. **Docker Compose Creation**: Generates a docker-compose.yml file that orchestrates all services -5. **Infrastructure Configuration**: Prepares the configuration for deployment on SleakOps - ---- - -## Dockerization Process Flow - -
- -### 1. Submit the Project - - -To start the dockerization process, you must complete the Dockertron form in three steps: - - - docketron_input - - -#### Step 1: Language Information - -Specify the main programming language of your project: - -- **Language Name**: Language name (e.g., Python, Node.js, Java, Go) -- **Language Version**: Specific language version (e.g., 3.12, 18.0, 11) - -#### Step 2: Application Frameworks - -Configure the frameworks your application uses. You can add multiple frameworks: - -- **Framework Name**: Framework name (e.g., Django, Express, Spring Boot) -- **Command**: Command to run the framework (e.g., `python manage.py runserver 0.0.0.0`) -- **Framework Version**: Framework version (e.g., 5.2, 4.18.2) - -You can add more frameworks by clicking "+ Add Item". - -
- -
- -### 2. Intelligent Analysis - - -The system performs a deep analysis of your project: - -#### Phase 1: Repository Audit - -- Confirms the main programming language -- Confirms frameworks and libraries used -- Analyzes folder structure -- Identifies configuration files (package.json, requirements.txt, etc.) - -#### Phase 2: Service Identification - -The system automatically detects: - -- **Web applications** (frontend, backend) -- **APIs and microservices** -- **Workers and background processes** -- **Required databases** -- **Cache services** (Redis, Memcached) -- **Message queues** (RabbitMQ, SQS) - -
- -
- -### 3. File Generation - - -#### Dockerfiles - -For each service that requires building, a Dockerfile is generated that includes: - -- Appropriate base image -- Dependency installation -- Environment configuration -- Startup commands -- Healthchecks -- Security and performance optimizations - -#### Docker Compose - -A `docker-compose.yml` file is generated that: - -- Defines all services -- Configures networks between services -- Establishes volumes for data persistence -- Defines environment variables -- Configures ports and service exposure -- Establishes dependencies between services - -#### README - -Documentation is generated with: - -- Instructions to run the project -- Necessary commands -- Required configurations -- Basic troubleshooting - -
- -
- -### 4. SleakOps Preparation - - -The system generates the infrastructure configuration for SleakOps, identifying: - -- Workloads -- Dependencies -- Environment Variables - -
- -
- -### 5. Pull Request Generation - - -Once the analysis and file generation is complete, **Dockertron automatically creates a Pull Request in your repository** with all generated configuration files: - -- Dockerfiles -- docker-compose.yml -- README.md with instructions -- Additional configuration files - -This allows you to: - -- **Review** all proposed changes before integrating them -- **Comment** and request adjustments if necessary -- **Approve and merge** when satisfied with the configuration -- **Maintain a clear history** of changes in your repository - -
- -
- -## Repository Integration - - -Upon completion of the process, Dockertron: - -1. **Generates a Pull Request** in your repository with all Docker configuration files -2. **Sends the information to SleakOps** so you can easily deploy from the console with the configurations recommended by the AI agent - -This way, you maintain full control over changes to your code while leveraging SleakOps automation. - -
- -
- -## Complete Example - - -### Input Project - -``` -my-app/ -├── backend/ - ├── package.json - ├── server.js - └── ... -``` - -### Generated Output - -**Detected Services**: - -1. Backend (Node.js API) -2. Frontend (React App) -3. Worker (Python) - -**Identified Dependencies**: - -- PostgreSQL (for backend) -- Redis (for cache and queues) - -**Generated Files**: - -- `backend/Dockerfile` -- `docker-compose.yml` -- `README.md` - -
- ---- - -## Frequently Asked Questions - -
- -### How long does the process take? - - -Typically between 5-30 minutes, depending on the size and complexity of the project. - -
- -
- -### What if my project has special configurations? - - -You can provide additional context in the `contexts` field when submitting the request, indicating specific frameworks, versions, or special configurations. - -
- -
- -### Can I review the files before deployment? - - -Yes, all generated files are sent back and can be reviewed before proceeding with deployment. - -
- -
- -### What happens if the process fails? - - -The system sends a detailed error message indicating what went wrong, allowing adjustments, retries, and modifications to the submitted information so the AI agent can generate the correct configuration. - -
- -
- -### Can the generated files be modified? - - -Yes, the generated files are completely editable and can be adjusted according to your specific needs. - -
- -**Document version**: 1.0 -**Last update**: November 2025 diff --git a/docs/project/index.mdx b/docs/project/index.mdx deleted file mode 100644 index 9ba389609..000000000 --- a/docs/project/index.mdx +++ /dev/null @@ -1,215 +0,0 @@ ---- -sidebar_position: 10 -sidebar_label: Project -pagination_next: project/dependency/index ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Project - -A Project in SleakOps represents a codebase managed by a Git repository, it also defines the so-called Namespace. It's the core entity that connects your repository to the SleakOps environment, enabling deployment, management, and scaling of your application in the AWS infrastructure. - -It is the combination of: Repository, Branch and Dockerfile Path. By adding the environment you have a Project (or Kubernetes Namespace). - - -## FAQs - -
- -### What is a Project or Namespace? - -A Project is the combination of a repository and an environment. It acts as a Kubernetes Namespace in the cluster and contains all the services and resources related to the project within that environment. -
- -
- -### How do I create a Project in SleakOps? - -The Project and the Project will be created at the same time. You need to connect your Git account (e.g., GitHub, GitLab, or Bitbucket) to SleakOps, select a repository, choose a branch, and specify the location of the Dockerfile. Once these steps are completed, a ProjectEnv is created, and the first image build is triggered. Follow the steps below. -
- -
- -### What happens when I create a Project? - -When a Project is created, the following resources are set up: -- **AWS Elastic Container Registry (ECR)** to store container images and Helm charts. -- A **Kubernetes Namespace** to manage services in isolation. -- A **Service Account** to handle permissions and secure connections with AWS resources. -- A **Dockerfile analysis** to verify its correctness and build a container image using Kaniko -
- -
- -### How do I add the Dockerfile Args? - -If any build-time **Docker Args** (arguments) are required, SleakOps will prompt you to enter them before running the initial build. These arguments can be modified for future builds. -
- -
- -### What is the purpose of the Dockerfile in my project? - -The **Dockerfile** defines how your application is built into a container image. During Project creation, SleakOps analyzes the Dockerfile to ensure it's correctly configured, and then builds the image using **Kaniko**. -
- -
- -### Where are the Docker images stored? - -Docker images are stored in the **AWS ECR** (Elastic Container Registry) associated with your project. The images are named after the Project, which combines the environment name and project name. -
- -
- -### What is the role of the Service Account? - -The **Service Account** manages permissions for resources inside the Kubernetes cluster. It allows services deployed in the Project to securely interact with AWS resources like S3, RDS, or any other service your application may require. -
- -
- -### Can I update the repository, branch, or Dockerfile path after creating a Project? - -Just the *Branch* and the *Dockerfile Path* can be updated. If you need to work with a different *Environment,* *Repository or Name*, you will need to create a new record. -
- -
- -### How does SleakOps handle the initial image build? - -SleakOps automates the first image build as part of the Project creation process. This initial build ensures faster deployment by utilizing the existing infrastructure. Afterward, future image builds are triggered when services are published in deployments or manually via the **Build Form**. -
- -
- -### How do I control project’s expenses? - -SleakOps allows you to see all your project expenses in one place, classified by account, resources, dates. - -Access *Projects,* select one and click the button: -cost-button -
- -
- -### How do I monitor my project? - -You can monitor your project by accessing *Projects,* selecting one **and clicking into the button: monitoring-button -
- -
- -### How do I create a Kubernetes Volume? - -When editing a Project, you can enable and define **Kubernetes Volumes** by specifying the mount path and storage capacity. SleakOps uses the **AWS EFS CSI Driver** to manage these volumes as **EFS** file systems in the EKS cluster. -
- -
- -### 🚩 How do I manage future builds and deployments? - -Future builds and deployments can be managed manually via the SleakOps interface or automated using the **SleakOps CLI**. -
- -## Lets create your first Project on SleakOps - -:::warning -You must have your Git Repository connected. See [Connect your Git Account](/docs/connect_to_git) -::: - -### 1. Navigate to Create Project section -Into the Left Pane, access _Projects_ option and then, at the top right corner, click on the _Create_ button. - - -project-list - - - -### 2. Set up your Project -You will access the following form: - - -project-create - - -Here the parameters that SleakOps allows you to customize during the creation: - -| **Setting** | **Description** | -| --- | --- | -| **Name** | Identify your Project. | -| **Environment** | The environment represents a specific stage or setup within your infrastructure where your project will be deployed (e.g., Development, Staging, Production). You are associating your project’s code with a particular environment in your Kubernetes cluster. | -| **Repository** | The repository is the Git repository that holds the codebase for your project. SleakOps will access this repository to manage code updates, builds, and deployments. Ensure that you have connected your Git provider (e.g., GitHub, GitLab, Bitbucket) and that the selected repository contains all necessary files for your project. | -| **Nodepool** | Is the resource in charge of provision the server where your services will run. More info [here](/docs/cluster/nodepools). | -| **Branch** | The branch represents a specific version or line of development within the repository. This allows you to deploy a particular version of your code (e.g., main, develop, or a feature-specific branch). The branch you select will determine the code that gets built and deployed within the associated environment. | -| **Dockerfile Path** | The Dockerfile is a critical component used to build your project into a container. The Dockerfile Path field requires the relative file path to your Dockerfile within the repository (e.g., /Dockerfile, /src/Dockerfile, or /app/Dockerfile). This file contains the instructions needed to create the container image, which SleakOps will build and later use for deployments. | - -Once you've completed the form, click on Submit in order to trigger the Dockerfile validation and then the build. - -## ProjectAccess - -ProjectAccess allows you to configure custom IAM policies and roles for your project, providing fine-grained control over AWS resource permissions. This feature enables you to define specific access patterns that align with your security requirements and operational needs. - -### Custom Policies - -Custom policies allow you to create tailored IAM policies that grant specific permissions to your project's workloads. These policies should be created in the same AWS account where your project is deployed. - -#### Creating Custom Policies - -1. **Navigate to AWS IAM Console** in your project's AWS account -2. **Create a new policy** with the specific permissions your application requires -3. **Reference the policy** in SleakOps using the policy ARN - -:::tip Policy Best Practices -- Follow the principle of least privilege - grant only the minimum permissions necessary -- Use resource-specific ARNs when possible to limit access scope -- Regularly review and audit policy permissions -::: - -#### Referencing Custom Policies in SleakOps - -When configuring ProjectAccess, you can reference your custom policies by providing the policy ARN: - -``` -arn:aws:iam::ACCOUNT_ID:policy/YourCustomPolicyName -``` - -### AWS Managed Policies - -SleakOps also supports AWS managed policies, which are pre-configured policies maintained by AWS. These policies provide common permission sets for various AWS services. - -#### Common AWS Managed Policies - -- **AmazonS3ReadOnlyAccess**: Read-only access to S3 buckets -- **AmazonRDSReadOnlyAccess**: Read-only access to RDS instances -- **CloudWatchReadOnlyAccess**: Read-only access to CloudWatch metrics and logs -- **AmazonEC2ReadOnlyAccess**: Read-only access to EC2 resources - -:::info Policy Association -When associating roles or policies with your project, it's recommended to use the minimum number of policies necessary. This approach: -- Reduces complexity in permission management -- Improves security by limiting potential attack vectors -- Makes troubleshooting easier when permission issues arise -::: - -### Best Practices for Policy Management - -1. **Minimize Policy Count**: Associate the fewest number of policies possible while meeting your requirements -2. **Regular Audits**: Periodically review and audit the policies associated with your projects -3. **Environment-Specific Policies**: Consider using different policies for different environments (dev, staging, prod) -4. **Documentation**: Maintain clear documentation of why specific policies are required for each project \ No newline at end of file diff --git a/docs/project/vargroup/index.mdx b/docs/project/vargroup/index.mdx deleted file mode 100644 index 262ee5b6f..000000000 --- a/docs/project/vargroup/index.mdx +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Variable Groups ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# VariableGroups - -A **Vargroup** in SleakOps is a resource that securely stores sensitive information (like database credentials) within your EKS cluster. It ensures that credentials and environment-specific variables are securely managed and easily accessible by your applications. - -## FAQs - -
- - -### Can I edit a VariableGroup created by SleakOps? - - -Yes, you can access and manage the Variable Group for your MySQL instance from the SleakOps console. You can modify values such as usernames, passwords, or any other environment-specific credentials. -
- -
- - -### How are Vargroups used by my applications? - - -Vargroups are securely injected into your application's environment when it is deployed. Your applications can access these credentials and other variables without exposing sensitive information in the code. -
- -
- - -### How does SleakOps ensure the security of Vargroups? - - -SleakOps securely stores vargroups as Kubernetes secrets inside your EKS cluster. Access is controlled via Kubernetes Service Accounts, ensuring that only authorized components can access the sensitive information. -
- -
- - -### Can I delete a Variable Group? - - -Yes, they can be deleted or updated as needed. However, be cautious when deleting them, as it may disrupt your application. -
- -
- - -### Can I configure an environment variable that applies only to a worker and not to the entire app? - - -Yes, it's possible. Although global environment variables affect all deployments in the project, SleakOps allows you to create Vargroups with workload scope, which lets you assign variables specifically to a type of workload (for example, only to your workers) without impacting the rest of the application. - -**Steps:** Create a new Vargroup, select the _workload_ scope instead of _global_, associate it with the corresponding worker, and add the variables you need. Those variables will only affect that workload. -
- -
- - -### What is the difference between a Global and a Workload-Scoped Vargroup? - - - -- **Global**: Available to all workload within the namespace. It is created without selecting a specific workload. To create them select “global” -- **Workload-Scoped Variable Group**: Only applies to the selected workload within the project and environment. It overrides global var group values if they have the same key. -
- -
- - -### What happens if there are duplicate keys in different Vargroups? - - -If duplicate keys exist across different var groups: - -- If the key exists in both a global and a workload-scoped var group, the workload-scoped value takes precedence. -- If two global vargroups have the same key, the most recently created one will be used. -
- -
- - -### What is the difference between ENV and FILE type Vargroups? - - - -- **ENV**: Variables are injected as environment variables into your workload containers. Each key-value pair becomes an environment variable accessible at runtime. -- **FILE**: Variables are mounted as files inside your workload containers. Each key-value pair creates one file at the configured mount path. The Vargroup name becomes a subdirectory, each key becomes a filename, and each value becomes the file content. - -
- -
- - -### How does Replicate To work? - - - -The **Replicate To** option allows you to select additional project environments where the Vargroup's Kubernetes Secret will also be created. This makes the variables available across multiple namespaces without having to recreate the Vargroup manually in each environment. - -
- -## Create a VarGroup - -### 1. Navigate to create Vargroup section - -Into the _Left Pane_, access _Vargroups_ option under _Projects_ and then, at the top right corner, click on the _Create_ button. - - -vargroup-list - - -### 2. Select a Project and complete the needed attributes - -Complete the following attributes to create a new vargroup: - -| **Attribute** | **Description** | -| --- | --- | -| **Project** | The specific application or workload within SleakOps. Determines the scope of the variable group. | -| **Workload** | A microservice or component within the project. If selected, the vargroup is limited to it; otherwise, by selecting global it'll be accessible into the namespace. | -| **Name** | A unique identifier for the var group, used to differentiate it within the project. Should be descriptive of the group's purpose. | -| **Deploy** | Enable this option if you want SleakOps to automatically publish and deploy your workloads into the project. | -| **Replicate To** | Optional. Select additional project environments where this Vargroup's Kubernetes Secret will also be created, making its variables available across multiple namespaces. | - -:::info -If you choose to add the argument using the text option: Each argument should be added on a new line, separated by an equal sign (`=`), with no extra spaces. - -ARGUMENT_NAME = VALUE -ARGUMENT_TWO = VALUE -ARGUMENT_ONE = VALUE -::: - - -vargroup-create - - -Submit to create and Deploy your vargroup. - -### 3. Select a Type and configure your variables - -The **Type** field defines how the Vargroup is consumed by your workloads. Select the type that fits your use case: - -#### ENV — Key-Value Environment Variables - -Select **ENV** to inject variables as environment variables into your workload containers. Add key-value pairs using the form, or toggle **Textmode** to enter them as `KEY=VALUE` lines. - - -vargroup-env - - -#### FILE — Mounted Configuration Files - -Select **FILE** to mount variables as files inside your workload containers. When using this type, you must also provide a **Mount Path** — the directory where the files will be mounted. - -Each key-value pair creates one file following this structure: - -- The **Mount Path** is the base directory (e.g., `/nginx/`). -- The **Vargroup name** becomes a subdirectory inside it (e.g., `my-config`). -- Each **Key** becomes a filename (e.g., `nginx.conf`). -- Each **Value** becomes the file content. - -:::info -**Example:** with Mount Path `/nginx/`, Vargroup name `my-config`, and a key `nginx.conf`, the file will be mounted at `/nginx/my-config/nginx.conf` with the value as its content. -::: - - -vargroup-file - diff --git a/docs/project/volumes.mdx b/docs/project/volumes.mdx deleted file mode 100644 index 0c425c113..000000000 --- a/docs/project/volumes.mdx +++ /dev/null @@ -1,61 +0,0 @@ -import Zoom from 'react-medium-image-zoom'; -import 'react-medium-image-zoom/dist/styles.css'; - -# Volumes - -In the context of Sleakops, volumes refer to AWS/Kubernetes storage resources attached to a cluster. They serve as general storage for specified containers. Pods can only interact with these volumes if they are explicitly attached to them. -You can define the volumes in the [Project](/docs/project) form: - - PROJECT-volumes-form - -Whenever a volume is needed, Sleakops deploys an EFS CSI Driver within the [cluster](/docs/cluster). This allows every Project to have its own unique volume mount, storing folders based on the paths you specify. -A practical use-case for Volumes is when you want all your pods to access the same files, such as a shared folder that requires its content to be persistent. - -For more details on how EFS is used for volumes, refer to the [EFS documentation](/docs/cluster/addons/efs). - -## Creating Volumes - - -new volume modal - - -To create a new volume for your project: - -1. **Click on "Create Volumes"** in the Project settings -2. **Add the mount path** - Specify the directory path where the volume will be mounted in your containers -3. **Set storage capacity** - Define the amount of storage space allocated to the volume -4. **Choose retention policy** - Select between: - - **Delete**: Volume will be removed when deleted from SleakOps - - **Retain**: Volume will persist in AWS even if removed from SleakOps - -:::tip Volume Configuration -- Mount paths should be absolute paths (e.g., `/app/data`, `/var/logs`) -- Storage capacity is specified in GB -- The retain policy determines data persistence when volumes are removed -::: - -## Deleting Volumes - - -delete volume click - - -To remove a volume from your project: - -1. **Click the "X" button** next to the volume you want to delete -2. **Confirm the deletion** when prompted - -:::warning Data Loss Warning -Deleting a volume will permanently remove all data stored in it. Make sure to backup any important data before deletion. -::: - -:::info Retain Policy Behavior -- **Delete Policy**: Volume and all data are permanently removed from AWS -- **Retain Policy**: Volume remains in AWS but is detached from the project, preserving your data -::: \ No newline at end of file diff --git a/docs/project/workload/cronjob.mdx b/docs/project/workload/cronjob.mdx deleted file mode 100644 index 3d6d4e91f..000000000 --- a/docs/project/workload/cronjob.mdx +++ /dev/null @@ -1,87 +0,0 @@ ---- -sidebar_position: 3 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Cronjobs - - -**CronJobs** are scheduled tasks that run at regular intervals (e.g., daily at 3 a.m., weekly, or monthly). They automate repetitive tasks such as backups, log cleanup, or periodic updates. Like Jobs, they also run in pods, which makes it easy to view their logs. - - -## FAQs - -
- -### How can I configure memory and CPU settings for my Cronjob? - -You can configure the *CPU Request* and *CPU Limit* values to set the minimum and maximum CPU resources each instance in your cluster can use. Similarly, you set **Memory Request** and **Memory Limit** for memory allocation per instance. -
- - - - -## **Lets add a Cronjob for your Project** -### 1. Navigate to create Cronjob section -Into the _Left Pane_, access _Workloads_. Then select the _Cronjob_ tab and then, at the top right corner, click on the _Create_ button. - - -cronjob-list - - -### 2. Select a Project and a Name for the cronjob -Start with the basic information, complete these attributes and click Next to continue. - -| **Attribute** | **Description** | -| --- | --- | -| **Name** | Identify your cronjob. | -| **Project** | Select between the existent projects. | -| **Command** | The command that runs the cronjob. | - -Once those attributes are completed, click the _Next_ button to move forward. - - -cronjob-create-1 - - -### 3. Define the periodicity -Select how will be your connection and click on _Next_. - -| **Attribute** | **Description** | -| --- | --- | -| **Crontab** | Cron expresion to determine the schedule to execute the cronjob | - - -cronjob-create-2 - - -### 5. Finish the set up -This step outlines the key attributes for configuring the resources of a Cronjob in SleakOps, allowing for flexible management of CPU, memory, and scaling behaviors. - -| **Attribute** | **Description** | -| --- | --- | -| **CPU Request** | The minimum amount of CPU resources allocated for each instance in the cluster. This ensures that each instance always has this amount of CPU available. | -| **CPU Limit** | The maximum CPU resources that each instance in the cluster can use. This cap helps prevent any single instance from consuming too much CPU. | -| **Memory Request** | The minimum amount of memory allocated for each instance in the cluster. This guarantees that the instance has enough memory to operate efficiently. | -| **Memory Limit** | The maximum amount of memory each instance in the cluster can utilize. It limits the memory usage to prevent any single instance from overconsuming resources. | - - -cronjob-create-3 - - -Submit to create and Deploy your cronjob. \ No newline at end of file diff --git a/docs/project/workload/hook.mdx b/docs/project/workload/hook.mdx deleted file mode 100644 index b25c0e132..000000000 --- a/docs/project/workload/hook.mdx +++ /dev/null @@ -1,84 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Hooks - - -**Hooks** are tasks triggered by specific events during a deployment. For example, you can use Hooks to automatically run a database migration or collect statistics whenever a new version of your application is deployed. These tasks also run in pods, making it straightforward to troubleshoot by examining the logs. - -If you want to learn more about hooks, [click here](https://helm.sh/docs/topics/charts_hooks/). - - -## FAQs - - -
- -### How can I configure memory and CPU settings for my Hook? - -You can configure the *CPU Request* and *CPU Limit* values to set the minimum and maximum CPU resources each instance in your cluster can use. Similarly, you set **Memory Request** and **Memory Limit** for memory allocation per instance. -
- - -## **Lets add a Hook for your Project** -### 1. Navigate to create Hook section -Into the _Left Pane_, access _Workloads_. Then select the _Hook_ tab and then, at the top right corner, click on the _Create_ button. - - -hook-list - - -### 2. Select a Project and a Name for the hook -Start with the basic information, complete these attributes and click Next to continue. - -| **Attribute** | **Description** | -| --- | --- | -| **Name** | Identify your web service. | -| **Project** | Select between the existent projects. | -| **Command** | The command that the workload runs. | - -Once those attributes are completed, click the _Next_ button to move forward. - - -hook-create-1 - - -### 3. Define the deploy event -Select when your hook will execute and click _Next_. - -| **Attribute** | **Description** | -| --- | --- | -| **Event** | Define when execute the hook. [Check available events](https://helm.sh/docs/topics/charts_hooks/#the-available-hooks) | - - -hook-create-2 - - -### 5. Finish the set up -This step outlines the key attributes for configuring the resources of a Hook in SleakOps, allowing for flexible management of CPU, memory, and scaling behaviors. - -| **Attribute** | **Description** | -| --- | --- | -| **CPU Request** | The minimum amount of CPU resources allocated for each instance in the cluster. This ensures that each instance always has this amount of CPU available. | -| **CPU Limit** | The maximum CPU resources that each instance in the cluster can use. This cap helps prevent any single instance from consuming too much CPU. | -| **Memory Request** | The minimum amount of memory allocated for each instance in the cluster. This guarantees that the instance has enough memory to operate efficiently. | -| **Memory Limit** | The maximum amount of memory each instance in the cluster can utilize. It limits the memory usage to prevent any single instance from overconsuming resources. | - - -hook-create-3 - - -Submit to create and Deploy your hook. \ No newline at end of file diff --git a/docs/project/workload/index.mdx b/docs/project/workload/index.mdx deleted file mode 100644 index 48446903a..000000000 --- a/docs/project/workload/index.mdx +++ /dev/null @@ -1,75 +0,0 @@ -import { FiExternalLink, FiCornerRightDown } from "react-icons/fi"; - -# Workloads - -In SleakOps, an Workload is simply a user-defined workload that runs within the cluster. Depending on how and when you need your workload to run, you can choose from five different types: - -| Name | Description | -| ------ | ----------- | -| [Web Service](/docs/project/workload/webservice) | An always-on service that handles HTTP requests (e.g., hosting websites, APIs). | -| [Worker](/docs/project/workload/worker) | A background process for internal tasks (e.g., message queues, data processing). | -| [Cronjob](/docs/project/workload/cronjob) | A scheduled job that runs periodically (e.g., daily at 3 a.m.). | -| [Job](/docs/project/workload/job) | A one-time task, ideal for ad-hoc or maintenance operations. | -| [Hook](/docs/project/workload/hook) | A task triggered by deployment events (e.g., run database migrations or collect statistics). | - - -## Which workload type is right for me? - - -```mermaid -flowchart TB - A("Does your workload
need to handle HTTP requests
(user or API traffic)?") - B["Create a
Web Service"] - C("Do you need a process
running continuously in the background
waiting for tasks/events?") - D["Create a
Worker"] - E("Do you need a task
to run on a schedule?") - F["Create a
CronJob"] - G("Do you need a task
to run just once?") - H["Create a
Job"] - I("Do you need a task
to run everytime
a deployment runs?") - J["Create a
Hook"] - - A -- "Yes" --> B - A -- "No" --> C - C -- "Yes" --> D - C -- "No" --> E - E -- "Yes" --> F - E -- "No" --> I - I -- "Yes" --> J - I -- "No" --> G - G -- "Yes" --> H -``` - - -- **Web Service:** Choose this if you need your application or service to be available 24/7 to respond to HTTP requests. -- **Worker:** Use this for background processing tasks, such as message queues or data pipelines, with no direct HTTP interaction. -- **CronJob:** Ideal for recurring maintenance or reporting tasks scheduled at specific times. -- **Job:** Suitable for one-time or on-demand tasks (e.g., manual database migrations). -- **Hook:** Perfect if you want to automate certain actions (like database migrations or analytics) on every deployment. - -## FAQs - -
- -### What are CPU and Memory Requests and Limits, and what are the defaults? - - -When configuring any workload in SleakOps (Web Service, Worker, CronJob, Job, or Hook), you can define resource **requests** and **limits** for both CPU and memory: - -- **Min/Request**: The minimum amount of resources guaranteed to your workload. Kubernetes uses this value to schedule your workload on a node with sufficient available resources. -- **Max/Limit**: The maximum amount of resources your workload can consume. If your workload exceeds this limit, it may be throttled (CPU) or terminated (memory). - -**SleakOps Default Behavior:** - -When you create a workload and specify **Request** values but **do not specify Limit** values, SleakOps automatically sets the limits to **130% of the request values**. - -For example: -- If you set **CPU Request** to `1000m` (1 CPU core) without specifying a limit, SleakOps will automatically set **CPU Limit** to `1300m` (1.3 CPU cores) -- If you set **Memory Request** to `512Mi` without specifying a limit, SleakOps will automatically set **Memory Limit** to `665Mi` (approximately 130%) - -**Overriding the Default:** - -You can override this automatic 130% limit by explicitly setting your own **CPU Limit** and **Memory Limit** values in the workload configuration form. When you specify custom limits, SleakOps will use your values instead of the automatic 130% calculation. - -This gives you full control over resource allocation while providing sensible defaults for quick deployments. -
\ No newline at end of file diff --git a/docs/project/workload/job.mdx b/docs/project/workload/job.mdx deleted file mode 100644 index a2a240d04..000000000 --- a/docs/project/workload/job.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Job ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Job - -**Jobs** are single-run tasks, typically used for one-off operations like updates, system checks, or maintenance. They run once and then complete, and you can check their progress or results by viewing the corresponding pod’s logs. - -## FAQs - -
- - -### How can I configure memory and CPU settings for my Job? - - -You can configure the _CPU Request_ and _CPU Limit_ values to set the minimum and maximum CPU resources each instance in your cluster can use. Similarly, you set **Memory Request** and **Memory Limit** for memory allocation per instance. -
- -
- - -### How can I configure memory and CPU settings for my Job? - - -You can configure the _CPU Request_ and _CPU Limit_ values to set the minimum and maximum CPU resources each instance in your cluster can use. Similarly, you set **Memory Request** and **Memory Limit** for memory allocation per instance. -
- -
- - -### **Why does a Timeout message appear on my Job?** - - -The timeout you see in SleakOps corresponds to a platform monitoring limit (approximately 30 minutes). After that time, SleakOps stops monitoring the Job but does not kill it — the Job keeps running normally in your infrastructure. - -**How can I verify if my Job completed successfully?** - -You can validate it through alternative methods: checking the pod logs directly or using tools like Lens to monitor the status in real time. - -**My Job gets cut off before finishing — what's causing this?** - -If the Job doesn't complete, it's most likely that the pod was terminated because it was running on a spot node. Spot nodes are cost-efficient but not suited for long-running workloads, as they can be interrupted at any time. You can verify this by checking the Karpenter pod logs for that time window. - -**What can I do to avoid this issue?** - -If you continue using spot nodes, the recommendation is to split the workload into smaller batches and run them across multiple pods in parallel. You can even automate this using a CronJob. -
- -## **Lets add a Job for your Project** - -### 1. Navigate to create Job section - -Into the _Left Pane_, access _Workloads_. Then select the _Job_ tab and then, at the top right corner, click on the _Create_ button. - - -job-list - - -### 2. Select a Project and a Name for the job - -Start with the basic information, complete these attributes and click Next to continue. - -| **Attribute** | **Description** | -| --- | --- | -| **Name** | Identify your job. | -| **Project** | Select between the existent projects. | -| **Command** | The command that runs the job. | -| **Image** | By default the job usage the image of your project, but you can override that with another | -| **Image tag** | You can specify the tag of image. | - -Once those attributes are completed, click the _Next_ button to move forward. - - -job-create-1 - - -### 3. Finish the set up - -This step outlines the key attributes for configuring the resources of a Job in SleakOps, allowing for flexible management of CPU, memory, and scaling behaviors. - -| **Attribute** | **Description** | -| --- | --- | -| **CPU Request** | The minimum amount of CPU resources allocated for each instance in the cluster. This ensures that each instance always has this amount of CPU available. | -| **CPU Limit** | The maximum CPU resources that each instance in the cluster can use. This cap helps prevent any single instance from consuming too much CPU. | -| **Memory Request** | The minimum amount of memory allocated for each instance in the cluster. This guarantees that the instance has enough memory to operate efficiently. | -| **Memory Limit** | The maximum amount of memory each instance in the cluster can utilize. It limits the memory usage to prevent any single instance from overconsuming resources. | - - -job-create-2 - - -Submit to create and Deploy your job. diff --git a/docs/project/workload/webservice.mdx b/docs/project/workload/webservice.mdx deleted file mode 100644 index b057c2126..000000000 --- a/docs/project/workload/webservice.mdx +++ /dev/null @@ -1,269 +0,0 @@ ---- -sidebar_position: 1 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Web Service - - -**Web services** are continuously running services that handle HTTP-based interactions, such as serving web pages, processing API calls, or managing user authentication. In Kubernetes, each Web Service runs in one or more pods that stay active to respond to external requests at any time. - - -## FAQs - -
- -### What is the difference between Public, Private, and Internal service schemas? - -- **Public**: Accessible over the internet and is open to anyone. -- **Private**: Restricted access, available only when connected to the VPN. -- **Internal**: Only accessible within the same Kubernetes cluster and is used for internal communication between services. -
- -
- -### How do I set up auto-scaling for my Web Service? - -To enable auto-scaling, you can set the **Autoscaling** option to enabled and define the **Memory Target** and **CPU Target**. These targets determine the resource usage thresholds that trigger auto-scaling. You must also specify the minimum and maximum number of replicas to be maintained when auto-scaling is enabled. -
- -
- -### What are the default success codes for a Web Service, and can I change them? - -The default success code is 200, indicating the service is healthy. You can change this code based on your application’s requirements, as some services might return different success codes based on specific actions. -
- -
- -### What happens if my health check fails repeatedly? - -If the health check fails consecutively and reaches the Failure Threshold (default is 60), the service is marked as unhealthy, and Kubernetes might restart or terminate the service instance to attempt a recovery. -
- -
- -### How can I configure memory and CPU settings for my Web Service? - -You can configure resource allocation for your Web Service in **Step 5: Finish the set up** when creating or updating the service: - -- **CPU Request**: The minimum CPU resources guaranteed for each instance -- **CPU Limit**: The maximum CPU resources each instance can use -- **Memory Request**: The minimum memory guaranteed for each instance -- **Memory Limit**: The maximum memory each instance can use - -**Important - SleakOps Default Behavior:** - -If you specify **Request** values but leave the **Limit** fields empty, SleakOps automatically sets the limits to **130% of the request values**. - -For example: -- **CPU Request** = `1000m` → **CPU Limit** automatically becomes `1300m` -- **Memory Request** = `512Mi` → **Memory Limit** automatically becomes `665Mi` - -To override this default and set custom limits, simply specify your own **CPU Limit** and **Memory Limit** values in the configuration form. Your custom values will be used instead of the automatic 130% calculation. -
- -
- -### What are some best practices when configuring a Web Service in SleakOps? - -- Always set a **minimum of 2 replicas** to avoid downtime. -- Ensure your **health check paths** and **success codes** are correctly configured to reflect the true health of your service. -- Use **auto-scaling** where possible to optimize resources dynamically based on demand. -- Review and set **memory** and **CPU usage** targets appropriately to prevent overloading your infrastructure. -
- -
- -### What should I do if my service shows response times longer than 10 seconds? - -Long response times may indicate issues such as resource constraints, application inefficiencies, or network problems. You should check your service logs, ensure your resources (CPU, memory) are adequately allocated, and review your application code for potential optimizations. -
- -
- -### What is terminationGracePeriod and how do I configure it? - -The **terminationGracePeriod** is a Kubernetes setting that defines how long (in seconds) Kubernetes waits for your application to gracefully shut down before forcefully terminating it. This is crucial for ensuring your service can finish processing active requests, close database connections, or perform cleanup operations before shutting down. - -**How it works:** When Kubernetes needs to stop your container (during a deployment, scaling event, or shutdown), it first sends a **SIGTERM** signal to your process and then waits the number of seconds defined by `terminationGracePeriod` before forcefully killing the container. Most application frameworks handle SIGTERM automatically, but if you have custom processes, make sure your application listens for SIGTERM and gracefully closes all connections and ongoing work — otherwise Kubernetes may kill your container while it's still mid-operation. - -**Default value:** 30 seconds - -**When to adjust it:** -- Increase it if your service needs more time to complete long-running tasks during shutdown. -- Increase it if you're seeing abrupt connection terminations or incomplete transactions during deployments. -- Decrease it if your service shuts down quickly and you want faster deployments. - -**How to configure it in SleakOps:** - -When creating or updating a Web Service, you can set the terminationGracePeriod in **Step 4: Workload Settings**. This field allows you to specify the number of seconds Kubernetes should wait before forcefully stopping your service. - -**Via Chart Templates:** - -You can also configure this value through Chart Templates by adding it to your values: - -```yaml -terminationGracePeriodSeconds: 60 # Wait 60 seconds before force termination -``` - -This gives your application enough time to handle graceful shutdown procedures, ensuring data integrity and a better user experience during updates or scaling operations. -
- -
- -### How can I deploy my static web service? - -At the moment, Sleakops doesn't natively support static sites, but you can still deploy them using the same flow as other sites, by containerizing them with a web server like Nginx. Below is a simple example of a Dockerfile and the corresponding nginx.conf to serve your static content. - -``` -FROM node:20.11.0-alpine AS base - -WORKDIR /app - -FROM base AS build - -ARG BACKEND_URL - -WORKDIR /app - -COPY package.json package-lock.json ./ - -RUN npm install - -COPY . ./ - -RUN npm run build - -FROM nginx:1.25.3-alpine AS production - -COPY --from=build /app/config/nginx.conf /etc/nginx/conf.d/default.conf -COPY --from=build /app/dist /usr/share/nginx/html - -EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] -``` - -And here is a sample `config/nginx.conf`: - -``` -server { - listen 80; - - location = /health { - access_log off; - add_header 'Content-Type' 'application/json'; - return 200 '{"status":"OK"}'; - } - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - try_files $uri $uri/ /index.html =404; - - add_header Last-Modified $date_gmt; - add_header Cache-Control 'no-store, no-cache'; - if_modified_since off; - expires off; - etag off; - } -} -``` - -Using this Docker-based approach, you can serve your static site with Nginx, all within a container. -
- -## **Lets add a Web Service for your Project** -### 1. Navigate to create Web Service section -Into the _Left Pane_, access _Workloads_. Then select the _Web Services_ tab and then, at the top right corner, click on the _Create_ button. - - -workloads-list - - -### 2. Select a Project and a Name for the web service -Start with the basic information, complete these attributes and click Next to continue. - -| **Attribute** | **Description** | -| --- | --- | -| **Name** | Identify your web service. | -| **Project** | Select between the existent projects. | -| **Command** | The command that runs the service. | -| **Port** | The port number where the service runs. Default: `8000` | - -Once those attributes are completed, click the _Next_ button to move forward. - - -webservice-create-p1 - - -### 3. Define the connection -Select how will be your connection and click on _Next_. - -| **Attribute** | **Description** | -| --- | --- | -| **Service Schema** | Defines the accessibility of the service: public, private, or internal. | -| **URL** | The URL assigned to the service based on the environment and project settings. Format: `name.myenv.sleakops.com`. | - - -webservice-create-p2 - - -### 4. Specify your workload settings -You’ll see the following for to specify the conditions. - - -webservice-create-p3 - - -| **Attribute** | **Description** | -| --- | --- | -| **Path** | The path where Kubernetes checks if the web service is operational. Default: `/` | -| **Success Code** | The HTTP success code indicating the service's health. Default: `200`. | -| **Initial Delay Seconds** | Number of seconds after startup before health checks begin. Default: `10`. | -| **Timeout Seconds** | Number of seconds after startup before health checks begin. Default: `1`. | -| **Period Seconds** | Interval (in seconds) between each health check probe. Default: `5`. | -| **Success Threshold** | Minimum number of consecutive successes required for the probe to be considered successful after it has failed. Default: `1`. | -| **Failure Threshold** | Number of consecutive failures before the probe is considered to have failed. Default: `60`. | -| **terminationGracePeriod** | Time in seconds that Kubernetes waits for graceful shutdown before forcefully terminating the service. Default: `30`. | - -Once those attributes are completed, click the Next button to move to the next step. - -### 5. Finish the set up -This step outlines the key attributes for configuring the resources of a Web Service in SleakOps, allowing for flexible management of CPU, memory, and scaling behaviors. - -| **Attribute** | **Description** | -| --- | --- | -| **CPU Request** | The minimum amount of CPU resources allocated for each instance in the cluster. This ensures that each instance always has this amount of CPU available. | -| **CPU Limit** | The maximum CPU resources that each instance in the cluster can use. This cap helps prevent any single instance from consuming too much CPU. | -| **Memory Request** | The minimum amount of memory allocated for each instance in the cluster. This guarantees that the instance has enough memory to operate efficiently. | -| **Memory Limit** | The maximum amount of memory each instance in the cluster can utilize. It limits the memory usage to prevent any single instance from overconsuming resources. | -| **Autoscaling** | Toggle to enable or disable auto-scaling. When enabled, it allows the service to adjust the number of replicas based on demand and resource usage. | -| **CPU Target** | The CPU usage percentage target that initiates auto-scaling. If usage exceeds this target, additional replicas may be deployed to balance the load. | -| **Memory Target** | The memory usage percentage target that triggers auto-scaling adjustments. When instances exceed this target, the system scales up to accommodate demand. | -| **Replicas Min** | The minimum number of replicas to maintain when auto-scaling is active. A minimum of 2 replicas ensures high availability and prevents downtime.| -| **Replicas Max** | The maximum number of replicas that can be deployed when auto-scaling is enabled. It sets an upper limit on the number of instances to avoid over-provisioning. | - - -webservice-create-p4 - - -Submit to create and Deploy your web service. \ No newline at end of file diff --git a/docs/project/workload/worker.mdx b/docs/project/workload/worker.mdx deleted file mode 100644 index 1dbeee84c..000000000 --- a/docs/project/workload/worker.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -sidebar_position: 2 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Worker - - -**Workers** are background processes that don’t directly respond to HTTP requests. Instead, they focus on internal tasks like data processing, handling queued jobs, or sending email notifications. Similar to Web Services, Workers also run in Kubernetes pods, but they typically operate on event triggers or schedules rather than incoming network requests. For instance, you could have a Worker pod that listens for messages in a queue (e.g., to generate reports) and processes these tasks without any user interaction. - - -## FAQs - -
- -### How do I set up auto-scaling for my Worker? - -To enable auto-scaling, you can set the **Autoscaling** option to enabled and define the **Memory Target** and **CPU Target**. These targets determine the resource usage thresholds that trigger auto-scaling. You must also specify the minimum and maximum number of replicas to be maintained when auto-scaling is enabled. -
- -
- -### How can I configure memory and CPU settings for my Worker? - -You can configure the *CPU Request* and *CPU Limit* values to set the minimum and maximum CPU resources each instance in your cluster can use. Similarly, you set **Memory Request** and **Memory Limit** for memory allocation per instance. -
- - - -## **Lets add a Worker for your Project** -### 1. Navigate to create Worker section -Into the _Left Pane_, access _Workloads_. Then select the _Worker_ tab and then, at the top right corner, click on the _Create_ button. - - -worker-list - - -### 2. Select a Project and a Name for the worker -Start with the basic information, complete these attributes and click Next to continue. - -| **Attribute** | **Description** | -| --- | --- | -| **Name** | Identify your worker. | -| **Project** | Select between the existent projects. | -| **Command** | The command that runs the worker. | - -Once those attributes are completed, click the _Next_ button to move forward. - - -worker-create-1 - - -### 3. Finish the set up -This step outlines the key attributes for configuring the resources of a Worker in SleakOps, allowing for flexible management of CPU, memory, and scaling behaviors. - -| **Attribute** | **Description** | -| --- | --- | -| **CPU Request** | The minimum amount of CPU resources allocated for each instance in the cluster. This ensures that each instance always has this amount of CPU available. | -| **CPU Limit** | The maximum CPU resources that each instance in the cluster can use. This cap helps prevent any single instance from consuming too much CPU. | -| **Memory Request** | The minimum amount of memory allocated for each instance in the cluster. This guarantees that the instance has enough memory to operate efficiently. | -| **Memory Limit** | The maximum amount of memory each instance in the cluster can utilize. It limits the memory usage to prevent any single instance from overconsuming resources. | -| **Autoscaling** | Toggle to enable or disable auto-scaling. When enabled, it allows the workload to adjust the number of replicas based on demand and resource usage. | -| **CPU Target** | The CPU usage percentage target that initiates auto-scaling. If usage exceeds this target, additional replicas may be deployed to balance the load. | -| **Memory Target** | The memory usage percentage target that triggers auto-scaling adjustments. When instances exceed this target, the system scales up to accommodate demand. | -| **Replicas Min** | The minimum number of replicas to maintain when auto-scaling is active. A minimum of 2 replicas ensures high availability and prevents downtime.| -| **Replicas Max** | The maximum number of replicas that can be deployed when auto-scaling is enabled. It sets an upper limit on the number of instances to avoid over-provisioning. | - - -worker-create-2 - - -Submit to create and Deploy your worker. \ No newline at end of file diff --git a/docs/provider/accounts.mdx b/docs/provider/accounts.mdx deleted file mode 100644 index 8b3abf151..000000000 --- a/docs/provider/accounts.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Accounts -sidebar_label: Accounts -sidebar_position: 1 ---- - -import Zoom from "react-medium-image-zoom"; - -# Accounts - -## Provider's Accounts - -Sleakops implements a well-defined infrastructure architecture designed to optimize operational excellence while ensuring a secure and scalable environment for users. The architecture consists of four accounts, each serving distinct purposes and isolated from one another. - -Each account has a VPN instance generated upon the creation of the first cluster. - -Once the Accounts are up, we set to each one of them what we call [Network Module](/docs/network) it contains a lot of different AWS services that are used to make the network connections inside accounts. - - - reference-architecture - - -### Security Account - -The Security Account serves as a centralized hub for managing IAM users and their access to the system. Learn how to switch between accounts in [AWS Console Autentication](../user/aws_console_authentication). - -### **Management Account** - -Designed to maintain internal services used for application maintenance, regardless of whether they are shared across accounts. Example: Sentry. - -- Contains an EKS cluster with integrated CI/CD (GitHub and HashiCorp Vault). -- Vault manages credentials for CloudWatch, enhancing monitoring capabilities. -- VPC Peering enables private connections to other accounts. - -### **Development Account** - -For the different stages of your application before it goes into production. - -- Contains three environments: dev, QA, and staging. -- Replicas of the prod environment for code writing, testing, and pre-releases. -- Ensures isolated testing to prevent issues for external users. -- Similar architecture to prod but without RDS Slave for reduced high availability requirements. - -### Production Account - -This account is intended for your application to be installed in a production environment, isolated from the rest of your application's stages. - -- Supports external users and requires a fully functional database (RDS Master). -- Utilizes Private DB Subnet for RDS Master, RDS Slave, and ElastiCache, each on different Availability Zones (AZs) for high availability. -- Backend Deployment with replicas distributed across different AZs. -- Frontend Deployment with LoadBalancer for even distribution of network load. -- Route53 serves as DNS and performs health checks for the application. -- AWS CloudFront serves static frontend content from an S3 bucket. -- RDS Slave acts as a replica of RDS Master for failover scenarios, maximizing uptime. - -### Selecting an Account in SleakOps - -
-
- -![account-switcher](/img/imagentestaccount.png "Account Switcher") - -

To select an account and be able to work on it, select it from the left pane.

-

The left icon refers to the Provider that groups the accounts.

-
-
diff --git a/docs/provider/common-errors.mdx b/docs/provider/common-errors.mdx deleted file mode 100644 index a75ac260e..000000000 --- a/docs/provider/common-errors.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -sidebar_label: Common Errors -sidebar_position: 3 ---- - -import Zoom from "react-medium-image-zoom"; - -# Common errors on Providers - -If the process of a Provider creation ends in *Error*, usually is because a connection error with the AWS account. - -You’ll find the *Error* status in the provider listing. - -Here are the most common cases and the way to solve them. - -### 1. The Account ID set does not have root access - -In this case, by clicking the *Fix* button, you’ll be redirected to AWS again. - -Be sure to be logged as a Root user. - - - provider-non-root - - -### 2. Maximum Number of AWS Accounts Reached - -AWS has an account limit that can prevent new ones. - -Before retrying the process, increase that limit. Otherwise, the process will fail again. - - - provider-account-limit-error - - -### 3. Other errors - -Other issues might happen and usually, they'll be solved by running the Connection to AWS again. - -If the error remains and you've tried deleting the provider and creating a new one. Please, do not hesitate and report us an issue. - - - provider-unexpected-error - \ No newline at end of file diff --git a/docs/provider/deleting-a-provider.mdx b/docs/provider/deleting-a-provider.mdx deleted file mode 100644 index d0068410d..000000000 --- a/docs/provider/deleting-a-provider.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -sidebar_label: Deleting a Provider -sidebar_position: 2 ---- - -import Zoom from "react-medium-image-zoom"; - -# Deleting a Provider - -- This feature allows you to delete a Provider and all that was created under it. -- Only Providers *Successfully Created* and in *Error* can be deleted. So, if you do not see the feature, probably it is in other status. - -:::warning -The created *Organization* and its accounts (management, development, production, and security) will not be automatically deleted. While keeping these accounts under your AWS Root Account does not incur any costs, **we recommend removing** them manually. -::: - -## How to delete a Provider - -### 1. Select the provider to be deleted - -Once you are in the *Providers* section, choose a provider and click on the Three Dots **button to display the *Delete* option. Click on it. - - - provider-delete - - -### 2. Confirm the procedure - -You'll see a modal to confirm the action. Remember this action will remove all the infrastructure created on AWS under this Provider. - - - provider-confirm-delete - - -### 3. Manually remove the Organization and its Accounts - -As it was mentioned before the created *Organization* and its accounts (management, development, production, and security) will not be automatically deleted. - -Access your AWS Root Account to manually remove them by going to [AWS Organizations](https://console.aws.amazon.com/organizations/v2/home/accounts). - - - management-account - diff --git a/docs/provider/index.mdx b/docs/provider/index.mdx deleted file mode 100644 index bc5b44abd..000000000 --- a/docs/provider/index.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -sidebar_position: 4 -pagination_next: provider/schemas ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Providers - -In SleakOps a Provider represents the connection to your AWS Cloud, the credentials granted to SleakOps to it and the set of accounts created in order to properly manage the infrastructure. - -On AWS, SleakOps will create an Organization with the name you selected and it will include a set of accounts into it. - -In order to provide you with a clear view of your AWS cost and resources, SleakOps activates [AWS Tags ](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)  on your account. Specially SleakOps uses [Cost Allocation Tags ](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) . - -## Let's create your provider on SleakOps - -### 1. Navigate to the providers section - -Into the *Left Pane*, access the *Setting* option and then *Providers* and then, at the top right corner, click on the *Create* button. - - - provider-section - - -### 2. Set up basic Information - - - provider-basic-information - - -These are the settings you must define: - -| Setting | Description | -| --- | --- | -| Name | Select a name for the Organizative Unit into AWS under the needed accounts will be created. | -| Region | AWS region to use. If you want to know more about them, you can visit this documentation https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html. | -| Domain | Here you must provide the domain you own in which the different environments will be deployed. It must be delegated to the Primary Route53 of SleakOps manually. Follow the steps described on this https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html. | -| Email | By default SleakOps uses the email from the root account provided, If you want to use other email to register your SleakOps accounts in AWS, fill in this field. | - -Once you've completed the form, click on *Next* to move forward. - -### 3. Connect to your AWS Root Account - -:::warning -You must be logged into your AWS Root Account. -::: - -To start installing your application, we need to connect to your AWS Root Account. Here's how to do it: - -- By clicking the *Next* button, you’ll be redirected to AWS to create an IAM role in your main account called "SleakopsIntegrationRole". -
    -
  1. This role lets us access necessary resources, making installation quick and smooth.
  2. -
  3. After installation, we will remove this role to keep your account secure.
  4. -
- - - provider-root-account-access - - -### 4. Ongoing Organizative Unit process started - -:::note -Creating your Organizative Unit doesn't generate any cost on your AWS account 😃 -::: - -Once the connection is established role is created, SleakOps will automatically start the Organizative Unit creation. - -This process will take a few minutes. - - - provider-process-started - - -### 5. Learn about the infrastructure architecture created by SleakOps for you. - -In order to understand what was created on your AWS, please see [Accounts](/docs/provider/accounts). - diff --git a/docs/provider/schemas.mdx b/docs/provider/schemas.mdx deleted file mode 100644 index 277810b0c..000000000 --- a/docs/provider/schemas.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -pagination_next: cluster/index -pagination_back: cluster/index ---- - -import Zoom from "react-medium-image-zoom"; - -# Designing your Infra - -## Single Schema Vs. Multi Schema - -SleakOps provides the flexibility and control necessary to build infrastructure tailored to your specific requirements. - -While we recommend adopting a **Multiple Schema** configuration to align with best practices, we understand that different stages of your project may require alternative schema configurations. - - - Sleakops accounts schemas - - -Here a comparative with two options: - -| | **Multi Schema** ⭐️ | **Single Schema** | -| --- | --- | --- | -| **Description** | Aligned with best practices. You'll set first the *Development* account. | Centralizes your environments within a single cluster. | -| **Account to be used** | Use all accounts as described [here](/docs/provider/accounts) | Only the *Production* account | -| **Pros** | Increases Security by granting access per account *Production* remains isolated. | Reduces costs, as it is just one cluster. | -| **Cons** | More expensive as each environment'll have it own cluster and VPN. | Less secure, ass all environments shares the account. | - -These are just two options; you have the freedom to create the schema that best suits your needs. - -## Multi-Schema Example - - - Sleakops MultiSchema Example - - -## Single-Schema Example - - - Sleakops SingleSchema Example - \ No newline at end of file diff --git a/docs/responsability-model.mdx b/docs/responsability-model.mdx deleted file mode 100644 index 1b6af881b..000000000 --- a/docs/responsability-model.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -sidebar_position: 13 ---- -import { FiExternalLink } from "react-icons/fi"; - -# Shared Responsibility Model -We transparently utilize all AWS services, which means the responsibility extends to the guidelines set by AWS. - -To safeguard your data and ensure it doesn't get lost due to potential service disruptions, it's advisable to have backup policies in place. Currently, we don't support backups for our dependencies (RDS, S3, RabbitMQ, etc.). To set this up, you can access via your AWS client and define your backup policies. - -[Learn more about AWS's Shared Responsibility Model] -(https://aws.amazon.com/compliance/shared-responsibility-model/) \ No newline at end of file diff --git a/docs/user/aws_console_authentication.mdx b/docs/user/aws_console_authentication.mdx deleted file mode 100644 index 3eb91b14d..000000000 --- a/docs/user/aws_console_authentication.mdx +++ /dev/null @@ -1,67 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Console Authentication - -::: tip[VIDEO] -How to enter to any of your Accounts. - - -::: - -As described in the [Architecture Overview](/docs/provider/accounts). You'll have to enter the 'security' account, then, assume the role on the account you want. The easiest way to do this is by using the [Sleakops Dashboard](https://console.sleakops.com/): - -First, use the AWS Login button: - - USER-aws-login - - -This will open the AWS login form. The Account ID field should be automatically filled with the 'security' account ID. If this doesn't happen, it might be because another service is attempting to fill the fields. - - - USER-aws-security-login - - - -Once logged into the 'security' account, it will appear as shown in the following image: - - - USER-aws-console-initial - - - -Now, in the AWS console, you need to return to the SleakOps dashboard, select 'Get Access' and use the drawer, on it, select the account you want to log in to. - -USER-get-access -USER-account-switcher - - -This will prompt a new AWS tab to switch the role from your 'security' Account into the account you've selected, you'll leave the 'security account' and enter the selected one. - - - USER-switch-role - - -:::info -If you're in 'security' or another account you can directly use the account switchers, AWS understands that you are already inside the 'security' account. -::: - -For more information about this process, you can read its [AWS documentation ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html). diff --git a/docs/user/index.mdx b/docs/user/index.mdx deleted file mode 100644 index 6deba2f88..000000000 --- a/docs/user/index.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -sidebar_position: 12 -title: User ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# User - -User management in SleakOps allows you to control access to your infrastructure and platform features. - -## User Creation - -Sleakops has three fundamental fields of user permissions: - -#### Viewer (Read Only) - -- **Objective**: Provide read-only access to monitor and review infrastructure without making changes -- **Scope**: - - View all projects, clusters, and environments - - Access monitoring dashboards and logs - - Review deployment history and configurations - - Cannot create, modify, or delete any resources -- **AWS IAM Policy**: [ReadOnlyAccess ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) -- **Examples**: - - DevOps engineers who need to monitor production environments - - Security auditors reviewing infrastructure compliance - - Team leads who need visibility into project status - -#### Editor (Power User) - -- **Objective**: Enable infrastructure management and deployment capabilities while maintaining security boundaries -- **Scope**: - - Create and manage projects, clusters, and environments - - Deploy applications and manage infrastructure resources - - Configure environments, dependencies, and networking - - Cannot manage other users and billing -- **AWS IAM Policy**: [PowerUserAccess ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/PowerUserAccess.html) -- **Examples**: - - Senior developers deploying applications - - DevOps engineers managing infrastructure - - Team members responsible for specific project deployments - -#### Admin (Administrator) - -- **Objective**: Provide complete platform control including user management and billing -- **Scope**: - - All Editor capabilities plus user management and billing section - - Create, modify, and delete user accounts - - Assign roles and permissions to other users - - Access to all AWS accounts without restrictions - - Platform configuration and settings management -- **AWS IAM Policy**: [AdministratorAccess ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) -- **Examples**: - - Platform administrators - - Team leads managing multiple projects - - DevOps managers with cross-team responsibilities - -## FAQs - -
- - -### How do I delete a user? - - - -Only administrators can delete users. To delete a user, access the User List, in the Action column, click on the bin icon. Then confirm the action. - -SleakOps automatically handles the complete deletion process across all systems (IAM user, Pritunl VPN server user, and SleakOps console user). No additional manual steps are required outside the SleakOps console. - -Deleted users cannot be recovered. However, deleting a user never removes any resources created by that user. -
- -### Access Configuration - - **AWS Account Access**: This field shows you every account, here you select to which accounts the user (Editor or Read-only) will have access. - **VPN Account Access**: It's similar to the AWS account accesses field but here you set if a user it's also created on the VPN Server of the account you give. More information can be checked on [VPN documentation](/docs/user/vpn) - - - USER-creation-form - - -For access into the AWS accounts SleakOps initially sets a random password and sends it to the email of the created user. The user can login with that password but it will be obligated to change its password on the first login. For SleakOps platform access we use the password that was set on the User form. - -After this user creation an AWS User will be created on the 'security' Account, this account is where we control acesses to all the SleakOps AWS accounts. We will also create, depending on the configuration, users on the VPN servers, read how to use them on the corresponding [documentation ](/docs/user/vpn) and on the SleakOps user. - -## Users Without SleakOps Access - -Some users in your organization may not have direct access to the SleakOps platform but still interact with the infrastructure: - -### External Collaborators - -- **Scenario**: Third-party contractors or consultants who need temporary access to specific AWS resources -- **Access Method**: Direct AWS console access with limited IAM permissions -- **Management**: Handled through AWS IAM directly, not through SleakOps user management - -### Read-Only Observers - -- **Scenario**: Stakeholders who need visibility into infrastructure costs and usage without operational access -- **Access Method**: AWS Cost Explorer, CloudWatch dashboards, or custom reporting tools -- **Management**: AWS billing and monitoring permissions only - -### VPN-Only Consumers - -- **Scenario**: Users who need to consume workloads and applications within the VPN but don't require infrastructure administration or monitoring capabilities -- **Access Method**: VPN access only, with limited permissions to access specific applications and services -- **Management**: VPN user accounts with restricted access to designated workloads and environments diff --git a/docs/user/vpn.mdx b/docs/user/vpn.mdx deleted file mode 100644 index 7007ce5bc..000000000 --- a/docs/user/vpn.mdx +++ /dev/null @@ -1,41 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Connect into the VPN - -To handle VPN connections we use Pritunl. You can download the client [here](https://client.pritunl.com/#install). - - - vpn-pritunl-client - - -Once you've created a [Provider ](/docs/provider), go to [SleakOps dashboard](https://console.sleakops.com/) and select the account for which you want to get VPN access. Remember, to do this, you need to have access to the VPN of that account, but the VPN must also be created. We create the VPN of a specific account when the first cluster of that account is created. - - - vpn-get-access - - - - vpn-get-uri - - -This will prompt you with what is called the URI profile. It has a validation period of 24 hours, and you must load it into the Pritunl client. - - - vpn-uri-profile - - -Copy it and import it into the Pritunl client, and you'll be able to connect to it: - - - vpn-client-import - - - - vpn-importing-profile - - - - vpn-profile-connect - diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-23-V1.0.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-23-V1.0.0.md deleted file mode 100644 index be3a2b3d6..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-23-V1.0.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Versión 1.0.0" -slug: v1-0-0 -date: 2023-08-23 -tags: [release] ---- - -# 🚀 Versión 1.0.0 - - - -23/08/2023 - -## Nuevas Funcionalidades - -- **Configuración de Volúmenes:** Ahora puedes configurar volúmenes en environments de proyecto directamente desde el formulario. -- **Apagado Nocturno con Zona Horaria:** Agregado soporte para seleccionar zonas horarias en el apagado nocturno. -- **Inicio Manual de Cluster:** Nuevo botón para iniciar clusters manualmente. -- **Integración con CloudFront:** Soporte para usar CloudFront para mejorar la entrega de contenido. -- **Backups Automáticos:** Puedes configurar backups automáticos para dependencies. -- **Instancias Graviton:** Soporte para usar instancias Graviton en nodos. -- **Encriptación:** Implementada encriptación en StackSettings para mayor seguridad. - -## Correcciones de Errores - -- Resuelto un problema en la API de facturación y estimación de costos. -- Corregidos errores al eliminar Providers y VPNs. -- Ahora puedes eliminar certificados ACM usados por un Load Balancer sin problemas. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-29-V1.0.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-29-V1.0.1.md deleted file mode 100644 index e67ba3b46..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-08-29-V1.0.1.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Versión 1.0.1" -slug: v1-0-1 -date: 2023-08-29 -tags: [release] ---- - -# 🚀 Versión 1.0.1 - - - -29/08/2023 - -## Nuevas Funcionalidades - -- **Gestión de Suscripciones:** El login y actualizaciones de token se controlan según el estado de la suscripción. Adicionalmente, se implementó una nueva API para registrar usuarios y empresas, validando suscripciones pendientes, con un nuevo modelo para mejor gestión de suscripciones, integrando AwsClient. -- **Onboarding de Marketplace:** Proceso simplificado para crear usuarios que vienen de un marketplace. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-04-V1.0.2.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-04-V1.0.2.md deleted file mode 100644 index fda7152c7..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-04-V1.0.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.0.2" -slug: v1-0-2 -date: 2023-09-04 -tags: [release] ---- - -# 🚀 Versión 1.0.2 - - - -04/09/2023 - -## Nuevas Funcionalidades - -- **Optimización de Deployment:** Simplificado el proceso de deployment y edición de environment de proyecto (ProjectEnv), facilitando configuración y deployment. -- **Ajustes de Recursos y Configuración:** Ahora puedes crear aliases personalizados para buckets. -- **Mejoras en Health Check:** La sonda de readiness para servicios en la cuenta de desarrollo ahora es opcional. - -## Correcciones de Errores - -- Resueltos problemas relacionados con VPN y configuración de parámetros de seguridad. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-25-V1.0.3.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-25-V1.0.3.md deleted file mode 100644 index a6b6ef722..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-09-25-V1.0.3.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.0.3" -slug: v1-0-3 -date: 2023-09-25 -tags: [release] ---- - -# 🚀 Versión 1.0.3 - - - -25/09/2023 - -## Nuevas Funcionalidades - -- **Botones de Gestión y Mejoras en Formularios:** Agregados botones para gestión de recursos y mejorados formularios de mapeo de variables. -- **Cronjobs y Regeneración de Dominio:** Ahora puedes detener o activar cronjobs y regenerar dominios. - -## Correcciones de Errores - -- Resuelto el problema de obtener el URI de VPN en Pritunl. -- Corregido el problema de selección de cuenta para usuarios viewer. -- Mejorado el manejo de información de health check enviada al backend. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-11-V1.0.4.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-11-V1.0.4.md deleted file mode 100644 index d39cb2c03..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-11-V1.0.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.0.4" -slug: v1-0-4 -date: 2023-10-11 -tags: [release] ---- - -# 🚀 Versión 1.0.4 - - - -11/10/2023 - -## Nuevas Funcionalidades - -- **Refactorización y Mejoras:** Refactorizado el dashboard y mejorada la visualización de logs y la gestión de eliminación de entidades. - -## Correcciones de Errores - -- Corregidos problemas de edición de usuarios. -- Corregida la gestión del estado del cluster. -- Resueltos problemas con dominios de environment. -- Corregido el manejo de errores en respuestas S3 con CloudFront. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-27-V1.0.5.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-27-V1.0.5.md deleted file mode 100644 index 453d32d89..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-10-27-V1.0.5.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Versión 1.0.5" -slug: v1-0-5 -date: 2023-10-27 -tags: [release] ---- - -# 🚀 Versión 1.0.5 - - - -27/10/2023 - -## Correcciones de Errores - -- Resueltos problemas de deployment y corregido Karpenter con instancias spot. -- Corregidos problemas al eliminar entidades y validar URLs de servicios. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-11-06-V1.1.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-11-06-V1.1.0.md deleted file mode 100644 index e3b637dc6..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-11-06-V1.1.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.1.0" -slug: v1-1-0 -date: 2023-11-06 -tags: [release] ---- - -# 🚀 Versión 1.1.0 - - - -06/11/2023 - -## Nuevas Funcionalidades - -- **Gestión de Vargroups:** Agregada la opción de mostrar vargroups en los formularios para servicios, workers, hooks y cronjobs. -- **Kubecost:** Integrado Kubecost con Prometheus-stack. - -## Correcciones de Errores - -- Resuelto el problema con Karpenter en instancias spot. -- Corregidos roles de usuario y edición de usuarios. -- Corregidos problemas al eliminar un environment y la eliminación incorrecta de dominios. -- Corregido el error al intentar iniciar manualmente el cluster. -- Resuelto un error en la generación de hooks. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-12-05-V1.1.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2023-12-05-V1.1.1.md deleted file mode 100644 index d520b90c0..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2023-12-05-V1.1.1.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Versión 1.1.1" -slug: v1-1-1 -date: 2023-12-05 -tags: [release] ---- - -# 🚀 Versión 1.1.1 - - - -05/12/2023 - -## Nuevas Funcionalidades - -- **Visor de Logs en Jobs:** Agregado un visor de logs en la lista de jobs, similar al que ya existe para deployments. -- **Dashboard v2:** Mejoras en la segunda versión del Dashboard, con más opciones y mejor organización de información. -- **Certificados de Cluster:** Los certificados de cluster ahora se eliminan y actualizan automáticamente para prevenir problemas de expiración. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-05-V1.2.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-05-V1.2.0.md deleted file mode 100644 index 9796076d0..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-05-V1.2.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.2.0" -slug: v1-2-0 -date: 2024-01-05 -tags: [release] ---- - -# 🚀 Versión 1.2.0 - - - -05/01/2024 - -## Nuevas Funcionalidades - -- **Logs en Grafana:** Se ha configurado una fuente de datos en Grafana para mostrar logs desde S3. -- **Botón de Actualización de Cluster:** Se ha agregado un botón para permitir actualizaciones de cluster desde la interfaz. -- **Log de Actividad de Usuario:** Se ha creado un log de actividad para acciones de usuario. -- **Deploy de Validación de Dominio:** Ahora puedes crear un deploy que se ejecuta una vez que los dominios están validados. -- **Autenticación de Dos Factores:** Se ha agregado autenticación de dos factores (2FA) al login para mayor seguridad. - -## Correcciones de Errores - -- Se ha corregido un problema con builds usando la misma rama que la predeterminada. -- Se ha mejorado la lectura de logs para procesamiento más rápido. -- Se han realizado varias optimizaciones de frontend, incluyendo estilos, búsqueda y visibilidad de recursos pendientes. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-12-V1.2.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-12-V1.2.1.md deleted file mode 100644 index ce1690e5c..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-12-V1.2.1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.2.1" -slug: v1-2-1 -date: 2024-01-12 -tags: [release] ---- - -# 🚀 Versión 1.2.1 - - - - -12/01/2024 - -## Nuevas Funcionalidades - -- **Optimización de Formulario de Vargroup:** Se han realizado mejoras de usabilidad en los formularios de Vargroup. -- **Eliminación de Provider y Cuenta de Usuario:** Eliminar un provider ahora también elimina las cuentas de usuario asociadas. - -## Correcciones de Errores - -- Se ha corregido un bug en la regeneración de certificados ACM. -- Se ha corregido un problema de eliminación de provider. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-25-V1.2.2.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-25-V1.2.2.md deleted file mode 100644 index 9748c8ffc..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-01-25-V1.2.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.2.2" -slug: v1-2-2 -date: 2024-01-25 -tags: [release] ---- - -# 🚀 Versión 1.2.2 - - - -25/01/2024 - -## Nuevas Funcionalidades - -- **Botón de Validación de Dominio:** Se ha agregado un botón "verificar validación" al drawer de dominio para facilitar la gestión de dominios. -- **Tabla de Log de Actividad:** Se ha creado una tabla de log de actividad. -- **Encriptación de Access Keys:** Las access keys para proveedores de versión de código (GIT) ahora están encriptadas. - -## Correcciones de Errores - -- Se ha corregido un problema donde la API no recreaba correctamente el módulo ACM durante la regeneración. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-05-V1.2.3.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-05-V1.2.3.md deleted file mode 100644 index d1c273e01..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-05-V1.2.3.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Versión 1.2.3" -slug: v1-2-3 -date: 2024-02-05 -tags: [release] ---- - -# 🚀 Versión 1.2.3 - - - -05/02/2024 - -## Nuevas Funcionalidades - -- **Desacoplamiento de Alias en Web Services:** La creación de aliases ahora está separada del formulario de web services. -- **Restablecimiento de Contraseña IAM:** Ahora es posible restablecer la contraseña IAM para un usuario. - -## Correcciones de Errores - -- Se ha corregido un problema menor con tareas de release. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-15-V1.2.4.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-15-V1.2.4.md deleted file mode 100644 index 2c1afa0d2..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-02-15-V1.2.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.2.4" -slug: v1-2-4 -date: 2024-02-15 -tags: [release] ---- - -# 🚀 Versión 1.2.4 - - - - -15/02/2024 - -## Nuevas Funcionalidades - -- **Optimización de Cluster Switcher:** El comportamiento del selector de cluster ha sido optimizado. -- **Login en Flujo de Suscripción AWS:** El flujo de suscripción AWS ahora incluye la capacidad de iniciar sesión directamente. - -## Correcciones de Errores - -- Se han resuelto problemas de callback para integraciones Git y ruta de archivo Docker para GitLab. -- Se han corregido bugs menores relacionados con la pantalla de facturación. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-01-V1.3.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-01-V1.3.0.md deleted file mode 100644 index e78dc8d2f..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-01-V1.3.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Versión 1.3.0" -slug: v1-3-0 -date: 2024-03-01 -tags: [release] ---- - -# 🚀 Versión 1.3.0 - - - -01/03/2024 - -## Nuevas Funcionalidades - -- **Vista de Detalles de Project:** Una vista detallada de proyecto ahora está disponible en la nueva interfaz. -- **API de Métricas RDS:** Se ha agregado una nueva API para mostrar métricas RDS, mejorando la visibilidad de recursos. -- **LogViewer Mejorado:** La carga de LogViewer ahora es más rápida y eficiente. -- **Onboarding Mejorado:** Se ha implementado un nuevo proceso de onboarding para facilitar la configuración. -- **Monitoreo de Redis:** Se ha agregado monitoreo de Redis, mejorando la supervisión de infraestructura. -- **Configuración de Réplica RDS:** Se ha agregado la opción de configurar réplicas en la Dependency RDS para mayor flexibilidad. -- **Estado de Eliminación de Dominio:** La eliminación de dominio ahora crea un deploy con estado `pending-approval`, en lugar de un deploy automático. -- **Mejoras en Workload de Job:** El workload de Job ha sido mejorado, permitiendo reintentos automáticos en caso de fallo inicial. - -## Correcciones de Errores - -- Se han resuelto problemas de integración con Bitbucket. -- Se han corregido problemas con valores indefinidos en Vargroups. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-06-V1.4.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-06-V1.4.0.md deleted file mode 100644 index 3b7a9748f..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-03-06-V1.4.0.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.4.0" -slug: v1-4-0 -date: 2024-03-06 -tags: [release] ---- - -# 🚀 Versión 1.4.0 - - - - -06/03/2024 - -## Nuevas Funcionalidades - -- **Configuración de Grafana:** Se configuró la base de datos para el addon de Grafana, junto con DataSources y Dashboards. -- **Persistencia de Métricas de Prometheus con Thanos:** Agregado soporte para persistir métricas de Prometheus usando Thanos. -- **Nueva API de Volumen:** Implementado soporte para la nueva API de volumen, mostrando estados y aplicando configuración para deployments. -- La opción de actualización en addons ha sido deshabilitada. -- Ahora, cuando se elimina una dependency, se creará un deploy con "pending-approval" en lugar de uno automático. - -## Correcciones de Errores - -- Corregido un problema donde pre-hooks y nuevos volúmenes se agregaban durante deploys, impidiendo que se generaran. -- Los subdominios ahora se marcan correctamente como delegados si los dominios padre ya están delegados. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-11-V1.4.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-11-V1.4.1.md deleted file mode 100644 index adc6db7c6..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-11-V1.4.1.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.4.1" -slug: v1-4-1 -date: 2024-04-11 -tags: [release] ---- - -# 🚀 Versión 1.4.1 - - - - -11/04/2024 - -## Nuevas Funcionalidades - -- **Monitoreo de Dependencies y OpenSearch:** Se creó una nueva página de monitoreo para dependencies, facilitando el seguimiento de su estado. OpenSearch fue incluido. -- **Política de Ciclo de Vida de ECR:** Se configuró una política de ciclo de vida para ECR, mejorando la gestión de imágenes. - -## Correcciones de Errores - -- Corregido el problema de nombres duplicados entre cluster y nodo en Redis. -- Resueltos varios errores de frontend que afectaban la experiencia del usuario. -- Corregido el problema donde se mostraba un error al intentar publicar un vargroup sin un servicio asociado. -- Se corrigieron problemas al realizar múltiples deployments y releases consecutivos. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-25-V1.4.2.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-25-V1.4.2.md deleted file mode 100644 index a5d8ddd43..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-04-25-V1.4.2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.4.2" -slug: v1-4-2 -date: 2024-04-25 -tags: [release] ---- - -# 🚀 Versión 1.4.2 - - - - -25/04/2024 - -## Nuevas Funcionalidades - -- **Nuevas Métricas:** Agregadas nuevas métricas para buckets S3 y RabbitMQ, mejorando el monitoreo de servicios. También se implementó un sistema de monitoreo de métricas de OpenSearch. -- **Reorganización de Esquema de Monitoreo:** Las estructuras de esquema de monitoreo fueron reorganizadas para mejor gestión y visualización. La pantalla de monitoreo de Dependencies ahora soporta diferentes tipos de recursos, proporcionando una vista más detallada. - -## Correcciones de Errores - -- Se ha resuelto un problema crítico con vargroups, asegurando su funcionamiento adecuado. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-13-V1.4.3.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-13-V1.4.3.md deleted file mode 100644 index 1cb453149..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-13-V1.4.3.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.4.3" -slug: v1-4-3 -date: 2024-05-13 -tags: [release] ---- - -# 🚀 Versión 1.4.3 - - - - -13/05/2024 - -## Nuevas Funcionalidades - -- **Mejoras en Gestión de Dashboard:** Se mejoró la carga del dashboard, permitiendo que se visualice incluso si no hay cuenta seleccionada. -- **Mejoras en Pantallas de Facturación y Project:** Se realizaron mejoras en la pantalla de facturación, incluyendo una nueva sección "otros" para contabilizar costos previamente no considerados. La pantalla de environment de proyecto también fue mejorada. -- **Actualizaciones de Políticas:** La política de CloudFormation ha sido actualizada para mejorar gestión y seguridad. - -## Correcciones de Errores - -- Corregido un error crítico que impedía la creación de providers. -- Revisado y resuelto un problema relacionado con la integración de NewRelic. -- Corregido un problema con el refresh token al solicitar el URI de VPN. -- **Pantalla de Validación ACM y Errores de Logs de Builds:** Correcciones realizadas en la tabla de validación ACM y visualización de logs para builds en estado de creación. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-23-V1.5.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-23-V1.5.0.md deleted file mode 100644 index 50fdbfc4c..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-05-23-V1.5.0.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Versión 1.5.0" -slug: v1-5-0 -date: 2024-05-23 -tags: [release] ---- - -# 🚀 Versión 1.5.0 - - - - -23/05/2024 - -## Nuevas Funcionalidades - -- **Creación de Múltiples Environments de Project:** Ahora puedes crear múltiples environments de proyecto usando el mismo repositorio y rama. -- **Validación de Dominio para Aliases:** Mejorada la validación de creación de dominio para aliases usando un ACM existente utilizable para ingress. -- **Configuración de Recursos en Project Env:** Agregada la capacidad de configurar recursos de build y deploy por environment de proyecto. -- **Configuración de Request de Deploy y Build:** Agregada la opción de configurar requests de deploy y build en un ProjectEnv. -- **Dashboard de Grafana:** Se incorporó un dashboard de Grafana para visualizar consumo por namespace. -- **Configuración de Loki:** Los logs ahora pueden buscarse por namespace con la nueva configuración de Loki. -- **Recolección de Datos:** Mejorado el script de recolección de facturación para ser idempotente y ejecutable para fechas específicas. - -## Correcciones de Errores - -- Corregido un error al crear dependencies S3 y resuelto un problema crítico con vargroups durante actualizaciones de apagado de cluster. -- Corregido un error crítico al invitar colaboradores. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-06-24-V1.5.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-06-24-V1.5.1.md deleted file mode 100644 index 99fdb5ad6..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-06-24-V1.5.1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.5.1" -slug: v1-5-1 -date: 2024-06-24 -tags: [release] ---- - -# 🚀 Versión 1.5.1 - - - - -24/06/2024 - -## Nuevas Funcionalidades - -- **Configuración Avanzada de Recursos:** Se han implementado opciones avanzadas para configuración de recursos en environments de proyecto. -- **Optimización de Scripts de Recolección de Datos:** Mejorada la eficiencia de scripts de recolección de datos para workload más rápido. - -## Correcciones de Errores - -- Se han resuelto varios errores de interfaz que afectaban la usabilidad del sistema. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-12-V1.6.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-12-V1.6.0.md deleted file mode 100644 index 12c0663b9..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-12-V1.6.0.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Versión 1.6.0" -slug: v1-6-0 -date: 2024-08-12 -tags: [release] ---- - -# 🚀 Versión 1.6.0 - - - - -12/08/2024 - -## Nuevas Funcionalidades - -- **Soporte para Instancias ARM y Versiones Adicionales de RDS:** Agregadas instancias ARM y versiones extra en RDS. -- **EKS Actualizado a Versión 1.29:** EKS ha sido actualizado a la versión 1.29. Los changelogs de actualizaciones de EKS ahora se muestran. -- **Mejoras en Creación y Edición de Provider:** Pantallas y campos para formularios de provider fueron actualizados, incluyendo cambios en estados y visualización. -- **Búsqueda de Repositorio Mejorada:** Agregado soporte para búsqueda asíncrona en el selector de repositorio y mejorada la función de búsqueda para GitHub, GitLab y Bitbucket. -- **Parametrización de Healthcheck:** Las propiedades de healthcheck ahora pueden parametrizarse con JSONSchema. -- **Nuevo Dashboard:** Se ha agregado un nuevo dashboard para ver consumo por namespace. -- Corrección de un error al regenerar certificados, así como problemas con builds que no se ejecutaban correctamente. -- Errores de frontend relacionados con listados y problemas de API que causaban errores de filtrado han sido corregidos. - -## Correcciones de Errores - -- Corregido un error al regenerar certificados, así como problemas con builds que no se ejecutaban correctamente. -- Errores de frontend relacionados con listados y problemas de API que causaban errores de filtrado han sido corregidos. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-22-V1.6.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-22-V1.6.1.md deleted file mode 100644 index 9e2b879ea..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-08-22-V1.6.1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.6.1" -slug: v1-6-1 -date: 2024-08-22 -tags: [release] ---- - -# 🚀 Versión 1.6.1 - - - - -22/08/2024 - -## Nuevas Funcionalidades - -- **Actualizaciones de Versión de Dependencies:** Actualizadas versiones de dependencies MQ, Elasticsearch, Memcache y Redis. -- **Mejoras en Autenticación:** Agregado soporte para almacenar tokens de autenticación vía cookies en lugar de almacenamiento local. -- Agregada impresión de registro de validación ACM en la pantalla de detalle de ACM, y el estado de ACM ahora está incluido en el sistema. - -## Correcciones de Errores - -- Se han resuelto problemas con el flujo de provider. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-19-V1.6.2.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-19-V1.6.2.md deleted file mode 100644 index eb09dc8d9..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-19-V1.6.2.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.6.2" -slug: v1-6-2 -date: 2024-09-19 -tags: [release] ---- - -# 🚀 Versión 1.6.2 - - - - -19/09/2024 - -## Nuevas Funcionalidades - -- **Actualizaciones:** Actualizado **Prometheus**, **Loki**, y **EBS CSI Driver** a las últimas versiones a partir de agosto de 2024. -- **Migración de EBS CSI Driver:** SleakOps ahora usa el Addon EKS gestionado por AWS para el EBS CSI Driver, reemplazando la versión auto-gestionada. -- **Prometheus y Loki con EBS:** Prometheus ahora utiliza volúmenes EBS para persistencia de datos, previniendo pérdida de datos incluso si los pods fallan. -- **Loki con SimpleScalable:** Adopta una estructura **SimpleScalable** con almacenamiento **TSDB** para logs, mejorando el rendimiento. -- **Colas Dead-letter de SQS:** Ahora soporta la creación de **colas SQS** con colas dead-letter asociadas para mejor manejo de errores. - -## Correcciones de Errores - -- Varias correcciones menores de errores y mejoras en los flujos de workload de la plataforma. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-27-V1.6.3.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-27-V1.6.3.md deleted file mode 100644 index 0b1175478..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-09-27-V1.6.3.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Versión 1.6.3" -slug: v1-6-3 -date: 2024-09-27 -tags: [release] ---- - -# 🚀 Versión 1.6.3 - - - - -27/09/2024 - -## Nuevas Funcionalidades - -- **Registro:** Implementado un nuevo flujo de registro. - -## Correcciones de Errores - -- Varias correcciones menores de errores y mejoras. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-14-V1.7.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-14-V1.7.0.md deleted file mode 100644 index b4c97aa18..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-14-V1.7.0.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Versión 1.7.0" -slug: v1-7-0 -date: 2024-10-14 -tags: [release] ---- - -# 🚀 Versión 1.7.0 - - - - -14/10/2024 - -## Nuevas Funcionalidades - -- **Gestión Avanzada de Nodos:** Introducida gestión de node pools para proporcionar mayor control sobre los tipos de nodos donde se ejecutan los workloads. -- **Migración de Módulos de Cluster:** Todos los módulos creados con el cluster ahora se ejecutan en instancias Graviton, mejorando el rendimiento y reduciendo costos. -- **Add-ons de Cluster:** Todos los add-ons ahora se ejecutan en instancias Graviton, mejorando aún más el rendimiento y reduciendo costos. -- **Nodos de Build Aislados:** Los builds ahora se ejecutan en nodos dedicados separados de los nodos de aplicación, mejorando la estabilidad de los nodos que ejecutan aplicaciones. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-30-V1.7.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-30-V1.7.1.md deleted file mode 100644 index 929a2d4b1..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-10-30-V1.7.1.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.1" -slug: v1-7-1 -date: 2024-10-30 -tags: [release] ---- - -# 🚀 Versión 1.7.1 - - - - -30/10/2024 - -## Nuevas Funcionalidades - -- **Creación de Environment y Dominio:** Mejorado el proceso para crear environments y dominios. Ahora puedes usar un dominio diferente al configurado globalmente sin limitaciones. -- **Notificaciones:** Agregado un sistema de notificaciones para informar a los usuarios sobre acciones manuales pendientes y actualizaciones de infraestructura programadas. -- **Documentación:** Actualizada documentación sobre gestión de dominios, proyectos, dependencies y variables de entorno. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-05-V1.7.2.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-05-V1.7.2.md deleted file mode 100644 index 21d24c5af..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-05-V1.7.2.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.2" -slug: v1-7-2 -date: 2024-11-05 -tags: [release] ---- - -# 🚀 Versión 1.7.2 - - - -05/11/2024 - -## Nuevas Funcionalidades - -- **Eliminación de Bucket S3:** Introducida la capacidad de eliminar buckets S3 que contienen una gran cantidad de archivos. -- **VPN:** Actualizado el módulo Pritunl a la última versión para mayor seguridad y rendimiento. -- **Mejoras en Gestión de Suscripciones:** Mejorada la gestión de suscripciones para una mejor experiencia de usuario. -- **Registro de Usuarios:** Habilitado el registro de nuevos usuarios en la plataforma. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-14-V1.7.3.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-14-V1.7.3.md deleted file mode 100644 index fca2a6d4b..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-11-14-V1.7.3.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Versión 1.7.3" -slug: v1-7-3 -date: 2024-11-14 -tags: [release] ---- - -# 🚀 Versión 1.7.3 - - - - -14/11/2024 - -## Nuevas Funcionalidades - -- **Soporte para Oracle RDS (Beta):** Ahora puedes gestionar instancias Oracle RDS como dependencies dentro de SleakOps. -- **Soporte para Aurora PostgreSQL Serverless (Beta):** Agregada la capacidad de crear y gestionar bases de datos Aurora PostgreSQL Serverless. - -## Correcciones de Errores - -- Varias correcciones menores de errores. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-05-V1.7.4.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-05-V1.7.4.md deleted file mode 100644 index 036f7575e..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-05-V1.7.4.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.4" -slug: v1-7-4 -date: 2024-12-05 -tags: [release] ---- - -# 🚀 Versión 1.7.4 - - - -05/12/2024 - -## Nuevas Funcionalidades - -- **Accesibilidad de Add-on:** Agregados enlaces en SleakOps para fácil acceso a visualizar logs, APM o métricas para recursos específicos. -- **OpenTelemetry (Beta):** Introducido un add-on para mejorar la observabilidad en aplicaciones desplegadas con SleakOps. Con OpenTelemetry, puedes tener tu propio APM para monitorear métricas como tasa de solicitudes, latencia y tasa de errores de tu aplicación. -- **Configuraciones de Disponibilidad de Add-on:** Agregadas varias configuraciones de disponibilidad para cada add-on. -- **Documentación:** Actualizada la documentación de add-ons y disponible en español. - -## Correcciones de Errores - -- **Revisión de Integración Kubecost:** Revisada la integración Prometheus-Kubecost. Kubecost ahora mapea correctamente los nombres de recursos desplegados a sus costos, mejorando enormemente la precisión de sus estimaciones. Ahora es posible habilitar análisis aproximado de costos de tráfico de red dentro del cluster en Kubecost (Beta). diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-09-V1.7.5.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-09-V1.7.5.md deleted file mode 100644 index 439b534f7..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2024-12-09-V1.7.5.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Versión 1.7.5" -slug: v1-7-5 -date: 2024-12-09 -tags: [release] ---- - -# 🚀 Versión 1.7.5 - - - -09/12/2024 - -## Nuevas Funcionalidades - -- **Manejo de Errores de Integración AWS:**: Implementado un mecanismo para manejar retrasos en activaciones de cuentas AWS creadas por SleakOps. -- **Enlaces de Add-on en Builds:** Agregados enlaces para visualizar fácilmente logs y métricas durante el proceso de build. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-01-06-V1.7.6.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-01-06-V1.7.6.md deleted file mode 100644 index 619978543..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-01-06-V1.7.6.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.7.6" -slug: v1-7-6 -date: 2025-01-06 -tags: [release] ---- - -# 🚀 Versión 1.7.6 - - - -06/01/2025 - -## Nuevas Funcionalidades - -- **Nuevas Configuraciones de Nodepool**: Ahora puedes establecer parámetros adicionales, como tamaños mínimos de instancia y más. -- **Job con Imágenes Específicas**: Al crear un job, puedes especificar la imagen exacta y el tag que deseas ejecutar (ej: `postgres:16.4`). -- **(BETA) Extensión de Chart por Project**: SleakOps ahora puede extender los charts usados para desplegar workloads de proyecto, permitiéndote agregar dependencies. Para más información, consulta la [documentación de Helm](https://helm.sh/docs/helm/helm_dependency/). -- **Mejoras en CI/CD**: El archivo para configurar CI/CD ha sido simplificado y optimizado. - -## Correcciones de Errores - -- **URL de Web Service Interna**: Corrección de un problema que causaba URLs incorrectas para web services de tipo "interno". -- **Eliminación de Volumen**: Resueltos problemas relacionados con la eliminación de volúmenes bajo varias políticas de retención. -- **Mejoras de UX/UI**: Mejoras en la interfaz para Projects, Volumes y Variable Groups. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-05-V1.7.7.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-05-V1.7.7.md deleted file mode 100644 index 07c29035f..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-05-V1.7.7.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 1.7.7" -slug: v1-7-7 -date: 2025-02-05 -tags: [release] ---- - -# 🚀 Versión 1.7.7 - - - -05/02/2025 - -## Nuevas Funcionalidades - -- **Importación desde Buckets Externos:** Copiar rápidamente archivos desde un Bucket S3 externo a SleakOps mediante la nueva función Import Bucket. -- **Revisión de Vista de Project:** Ver logs e información clave en una sola pantalla para mejor visibilidad. -- **Executions Renombrados a Workloads:** Terminología actualizada para alinearse con la notación interna de cluster. -- **Optimización de Eliminación de Cluster:** Agregada validación adicional para un proceso de eliminación más seguro y estable. - -## Correcciones de Errores - -- **Permisos de Project para Jobs:** Corrección de un problema donde los Jobs usaban permisos de nodo de cluster en lugar de permisos de Project. -- **Modificación de Docker Args:** Los builds ahora aplican correctamente cualquier Docker Args cambiado justo antes de ejecutarse. -- **Generación de Perfil VPN:** Resuelto un problema que impedía que los perfiles de usuario de terceros se generaran exitosamente. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-10-V1.7.8.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-10-V1.7.8.md deleted file mode 100644 index 16ea40ee0..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-10-V1.7.8.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Versión 1.7.8" -slug: v1-7-8 -date: 2025-02-10 -tags: [release] ---- - -# 🚀 Versión 1.7.8 - - - -10/02/2025 - -## Nuevas Funcionalidades - -- **Kubernetes 1.30:** Actualizado soporte de EKS a la versión 1.30. - -## Correcciones de Errores - -- **Mejoras Menores de UI:** Mejorado el diseño visual para pantallas de proyecto y workload. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-17-V1.7.9.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-17-V1.7.9.md deleted file mode 100644 index 540cda251..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-02-17-V1.7.9.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Versión 1.7.9" -slug: v1-7-9 -date: 2025-02-17 -tags: [release] ---- - -# 🚀 Versión 1.7.9 - - - - -17/02/2025 - -## Nuevas Funcionalidades - -- **Mejoras en Cronjobs:** Configurar políticas de cronjob y filtrar fácilmente entre cronjobs activos e inactivos. -- **Emails de Soporte en Notificaciones:** Cuando SleakOps genera una notificación, los usuarios ahora la reciben por email. -- **EKS Insights:** Durante las actualizaciones de cluster, SleakOps verifica EKS Insights para asegurar que todo funcione correctamente. - -## Correcciones de Errores - -- **Mejoras en Flujo de Project:** Mejorados varios ajustes, formularios y otros elementos para una gestión de proyectos más fluida. -- **Flujo de Creación de Cuenta AWS:** Ahora soporta cuentas AWS inactivas, proporcionando orientación clara sobre cómo activarlas manualmente antes de reanudar el proceso en SleakOps. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-01-V1.7.10.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-01-V1.7.10.md deleted file mode 100644 index 50d011428..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-01-V1.7.10.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Versión 1.7.10" -slug: v1-7-10 -date: 2025-04-01 -tags: [release] ---- - -# 🚀 Versión 1.7.10 - - - -01/04/2025 - -## Nuevas Funcionalidades - -- **Control de Permisos Mejorado:** Los proyectos ahora pueden tener permisos adicionales asociados, ya sean Políticas IAM de AWS o permisos personalizados. -- **Detalles de Dependencies:** Los detalles de configuración de cada dependency ahora se muestran dentro de su vista de detalle. -- **Mejoras en Pantalla de Actualización de Cluster:** El análisis de EKS Insights ahora se incluye directamente en SleakOps para agilizar las actualizaciones de cluster. -- **Mejoras en Builds y Projects:** Información adicional durante builds y flujos de trabajo de validación de proyectos mejorados. - -## Correcciones de Errores - -- **Entrada de Texto Mejorada:** Resueltos problemas que afectaban las entradas de texto en formularios. -- **Datos de Acceso a Cluster:** Corrección de un bug al recuperar datos de conexión de cluster bajo una cuenta seleccionada diferente. -- **Filtros de Lista de Dominios:** Agregados filtros por cuenta a la lista de dominios. -- **Mejoras en Lista de Nodepool:** Refinados los visuales para la vista de lista de nodepool. -- **Actualizaciones de Instalación de Add-ons:** La lista de add-ons ahora se actualiza correctamente después de la instalación. -- **Edición de Variable Groups:** Corrección de un problema con la edición de grupos de variables. -- **Adjunto de Suscripción:** Solucionado un bug que impedía que nuevas suscripciones se adjuntaran correctamente. -- **Pronóstico de Costos:** Corrección de problemas de pronóstico para mejores estimaciones de costos. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-24-V1.7.11.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-24-V1.7.11.md deleted file mode 100644 index 48ffd1992..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-04-24-V1.7.11.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.7.11" -slug: v1-7-11 -date: 2025-04-24 -tags: [release] ---- - -# 🚀 Versión 1.7.11 - - - - -24/04/2025 - -## Nuevas Funcionalidades - -- **Kubernetes 1.31 & Karpenter 1.3:** SleakOps ahora provisiona clusters en EKS 1.31 y actualiza el autoscaler a Karpenter 1.3. -- **Gestión de Secretos Más Fuerte:** Todos los secretos ahora también se almacenan encriptados en AWS Systems Manager Parameter Store, agregando una capa adicional de durabilidad más allá de la copia en-cluster. - -## Correcciones de Errores - -- **Workers de Dev-Cluster:** Eliminado el PodDisruptionBudget mejorando la confiabilidad de workers en clusters de desarrollo cuando el cluster tenía el scheduler de apagado habilitado. -- **Builds:** Los builds ya no se activan por cada edición menor de proyecto. -- **Deployments:** Cambiados los jobs de deployments fuera de Fargate; los logs de builds ahora se persisten para facilitar la resolución de problemas. -- **Detalles de Web Service:** Refinada la página de detalles del servicio para mejor visibilidad de endpoints, estado y métricas. -- **Add-on de Kubecost:** Mejoras de estabilidad. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-05-14-V1.7.12.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-05-14-V1.7.12.md deleted file mode 100644 index 7b5085b47..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-05-14-V1.7.12.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 1.7.12" -slug: v1-7-12 -date: 2025-05-14 -tags: [release] ---- - -# 🚀 Versión 1.7.12 - - - - -14/05/2025 - -## Nuevas Funcionalidades - -- **Nuevo Flujo de Soporte:** Introducido un chatbot de soporte y sistema de tickets para proporcionar mejor trazabilidad y tiempos de respuesta más rápidos. -- **Gestión de Suscripciones y Planes:** Herramientas mejoradas para gestionar suscripciones y planes de servicio. - -## Correcciones de Errores - -- **Mejoras en Formularios:** Mejoras generales en usabilidad y validación de formularios. -- **Consola de Project:** Mejoras de UI/UX en la pantalla de consola de proyecto. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-02-V1.7.13.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-02-V1.7.13.md deleted file mode 100644 index a9c019db0..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-02-V1.7.13.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Versión 1.7.13" -slug: v1-7-13 -date: 2025-06-02 -tags: [release] ---- - -# 🚀 Versión 1.7.13 - - - -02/06/2025 - -## Nuevas Funcionalidades - -- **Monitoreo de Dependencies:** Mejora en visualización y seguimiento de dependencies. -- **Control de Servicios:** Nuevo toggle para encender o apagar webservices y workers. -- **Builds con o sin caché:** Opción para ejecutar builds usando caché o desde cero. -- **Importación de Bucket S3 con Versionado:** Agregado soporte para importar Buckets S3 con versionado activo. -- **Variable Groups:** Interfaz mejorada para gestionar grupos de variables. -- **Validación de Dockerfile:** Nuevas validaciones para asegurar la confiabilidad de Dockerfiles. - -## Correcciones de Errores - -- **Logs de Jobs:** Corrección de enlaces rotos de logs para Jobs. -- **Nombres de Ramas:** Agregado soporte para ramas con / en sus nombres. -- **Pipelines de GitLab:** Corrección de problemas que afectaban la ejecución de pipelines. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-26-V1.7.14.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-26-V1.7.14.md deleted file mode 100644 index bf93e7a1b..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-06-26-V1.7.14.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.7.14" -slug: v1-7-14 -date: 2025-06-26 -tags: [release] ---- - -# 🚀 Versión 1.7.14 - - - -26/06/2025 - -## Nuevas Funcionalidades - -- **Mejoras en Transiciones de Estado:** Cambios de estado más fluidos para addons de cluster y formularios. -- **Soporte con Imágenes:** Los usuarios ahora pueden subir imágenes en el chat de soporte. -- **Jobs desde Cronjobs o Jobs Existentes:** Capacidad de lanzar un Job desde un cronjob o Job existente. -- **Errores de Infraestructura:** Mejora en el análisis y visualización de errores de infraestructura para facilitar la resolución de problemas. - -## Correcciones de Errores - -- **Volúmenes Duplicados:** Corrección del problema al crear volúmenes con el mismo nombre. -- **Usuarios Duplicados:** Prevención de creación de usuarios con el mismo email. -- **Dependencies Duplicadas:** Bloqueo de creación de dependencies con nombres duplicados. -- **Monitoreo de Dependencies:** Corrección de problemas de rango de fechas en la pantalla de monitoreo de dependencies. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-07-V1.7.15.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-07-V1.7.15.md deleted file mode 100644 index 096e92448..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-07-V1.7.15.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Versión 1.7.15" -slug: v1-7-15 -date: 2025-07-07 -tags: [release] ---- - -# 🚀 Versión 1.7.15 - - - -07/07/2025 - -## Nuevas Funcionalidades - -- **Resiliencia de Nodegroup Spot:** Los nodegroups Spot ahora previenen fallos cuando no hay instancias Spot disponibles. -- **VariableGroups Basados en Archivos:** Agregado soporte para crear variablegroups de tipo archivo. -- **Agent Bot (beta):** Bot agente experimental lanzado en beta. - -## Correcciones de Errores - -- **Configuración de dominio dependiente:** Generar registros DNS cuando el dominio padre ya está creado. -- **Estado de Cluster con apagado nocturno:** Corrección de visualización incorrecta del estado para clusters con apagado nocturno habilitado. -- **Filtros de VariableGroups:** Filtrar por proyectos en la lista de variablegroups. -- **Eliminar cluster:** Corrección del flujo de eliminación de cluster. -- **Estado de ticket de soporte:** Corrección del estado de cierre de ticket de soporte. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-21-V1.7.16.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-21-V1.7.16.md deleted file mode 100644 index 8f7b9b6a7..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-07-21-V1.7.16.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Versión 1.7.16" -slug: v1-7-16 -date: 2025-07-21 -tags: [release] ---- - -# 🚀 Versión 1.7.16 - - - -21/07/2025 - -## Nuevas Funcionalidades - -- **Projects con Repositorios Públicos:** Ahora puedes crear y gestionar proyectos vinculados a repositorios públicos. -- **Excluir Builds de Métricas:** Los builds pueden excluirse del dashboard de métricas de Grafana para reportes más precisos. - -## Correcciones de Errores - -- **Deployments de Nuevos Projects:** Corrección de problemas que impedían el despliegue exitoso de proyectos recién creados. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-01-V2.0.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-01-V2.0.0.md deleted file mode 100644 index 438b54bb6..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-01-V2.0.0.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Versión 2.0.0" -slug: v2-0-0 -date: 2025-10-01 -tags: [release] ---- - -# 🚀 Versión 2.0.0 - - - -01/10/2025 - -## Nuevas Funcionalidades - -- **Rediseño Completo de Consola:** UI modernizada para una experiencia más limpia e intuitiva. -- **Soporte para Tema Claro:** Soporte completo para modo claro. -- **Bot de Soporte:** Respuestas automatizadas para preguntas comunes de soporte. -- **Documentación Integral:** Guías ampliadas cubriendo todas las funcionalidades. -- **Actualización de lambdas:** Actualización de versiones de Python para lambdas. -- **Project Chart:** Promovido a estable. -- **Project Access:** Promovido a estable. -- **Dependency Aurora MySQL:** Promovido a estable. -- **Dependency Oracle:** Promovido a estable. -- **Dependency MariaDB:** Promovido a estable. -- **Dependency Aurora PostgreSQL:** Promovido a estable. -- **Edición de Dependencies:** Capacidad de editar dependencies existentes. -- **Dockertron (beta):** Dockerización automática impulsada por IA. -- **Cancelación de Builds:** Posibilidad de cancelar builds pendientes. -- **Nueva Dependency MSK:** Soporte para Kafka vía AWS MSK. -- **Webservices Mejorados:** Configurar anotaciones de ingress personalizadas y healthchecks opcionales. -- **Nodepools Avanzados:** Nuevas estrategias de fallback y mezcla de instancias (reservadas, spot, on-demand) para mejor control de costos y rendimiento. - -## Correcciones de Errores - -- **GitLab self-hosted:** Corrección de validación de URL. -- **Eliminación de Cluster:** Mejoras en el manejo de eliminación en cascada. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-15-V2.0.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-15-V2.0.1.md deleted file mode 100644 index 6c718b475..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-10-15-V2.0.1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Versión 2.0.1" -slug: v2-0-1 -date: 2025-10-15 -tags: [release] ---- - -# 🚀 Versión 2.0.1 - - - -15/10/2025 - -## Nuevas Funcionalidades - -- **Tabla de Builds y Deploys:** Mejoras en los datos mostrados en la tabla de builds y deploys. - -## Correcciones de Errores - -- **Cron de Apagado Nocturno:** Corrección de visualización del cron de apagado nocturno. -- **Estado de Cluster:** Corrección de actualización del estado de Cluster durante la actualización. -- **Notificaciones Largas:** Corrección de visualización de notificaciones largas. -- **VPN de Terceros:** Corrección de acceso VPN para terceros. -- **Cancelación de Deploy:** Corrección del flujo de cancelación de deploy. -- **Creación de Provider:** Corrección de jerarquías de texto en el flujo de creación de Provider. -- **Información Faltante:** Corrección de redirección en el flujo de información faltante para Project. -- **Usuario Viewer:** Corrección de navegación para usuarios viewer. -- **Toggles de Modo Claro:** Mejora de visibilidad de toggles en modo claro. -- **Contraseña de Dependency MQ:** Corrección de auto-generación de contraseña para Dependency MQ. -- **Carga de Iconos:** Mejoras en la carga de iconos. -- **Pantallas de Transición:** Corrección de pantallas de transición durante la carga de datos. -- **Tablas de Consola de Project:** Mejora de visualización de tablas en la pantalla "Consola de Project". -- **Errores de Infraestructura:** Corrección de mensajes de error cuando falla la ejecución de módulos de infraestructura. -- **Selector de Cuenta Móvil:** Soporte para selector de cuenta en dispositivos móviles. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-10-V2.1.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-10-V2.1.0.md deleted file mode 100644 index cc0891b63..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-10-V2.1.0.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Versión 2.1.0" -slug: v2-1-0 -date: 2025-11-10 -tags: [release] ---- - -# 🚀 Versión 2.1.0 - - - -10/11/2025 - -## Nuevas Funcionalidades - -- **Actualización de Cluster:** Soporte para actualización de Cluster de 1.31 a 1.32. -- **Tour de Dependencies:** Nuevo tour guiado para la pantalla de Dependencies. -- **Tour de Workloads:** Nuevo tour guiado para la pantalla de Workloads. -- **Tour de Variable Groups:** Nuevo tour guiado para la pantalla de Variable Groups. -- **Tour de Cluster:** Nuevo tour guiado para la pantalla de Cluster. -- **Tour de Projects:** Nuevo tour guiado para la pantalla de Projects. -- **Optimización de Actualización de Cluster:** Optimización de tareas de actualización de Cluster. -- **Carga de Pantallas:** Mejoras en la carga de drawers y pantallas secundarias. -- **Actualización Programada:** Nuevo flujo para programar actualizaciones de Cluster. -- **Onboarding:** Nuevo flujo de onboarding para usuarios nuevos. -- **Configuración de Nodepool:** Soporte para más parámetros de configuración de Nodepool (tipos de instancia, fallbacks, etc.). -- **Monitoreo de Actualización:** Nuevo flujo de monitoreo de servicios durante la actualización de Cluster con reporte de errores. -- **Logs de Builds:** Mejoras en logs de builds con más contexto. - -## Correcciones de Errores - -- **Certificado SSL para S3:** Corrección de errores de certificado SSL para S3 con CloudFront. -- **Logs de Actividad:** Corrección de nombres en algunos Logs de Actividad. -- **Creación de Usuarios:** Corrección de errores en el flujo de creación de usuarios. -- **Tickets de Soporte:** Corrección del estado de tickets de soporte. -- **Build con CLI:** Corrección de parámetros al construir usando el CLI. -- **Apagado Nocturno:** Corrección del estado de Cluster con apagado nocturno habilitado. -- **Resoluciones de Pantalla:** Ajustes para algunas resoluciones en la pantalla principal de la consola. -- **Eliminar Web Services:** Corrección de errores al eliminar un Web Service desde la tabla. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-13-V2.2.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-13-V2.2.0.md deleted file mode 100644 index 81ffd496d..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-13-V2.2.0.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Versión 2.2.0" -slug: v2-2-0 -date: 2025-11-13 -tags: [release] ---- - -# 🚀 Versión 2.2.0 - - - -13/11/2025 - -## Nuevas Funcionalidades - -- **Visor de Código:** Nuevo componente para visualizar código dentro de la consola. - -## Correcciones de Errores - -- **Usuarios Eliminados:** Corrección de errores con usuarios eliminados. -- **Actualización de Ramas:** Corrección del flujo para actualizar ramas en Project. -- **Información Incompleta:** Corrección del flujo cuando la información del Project está incompleta. -- **Políticas Extra:** Corrección del flujo para configurar políticas extra en Project. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-18-V2.3.0.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-18-V2.3.0.md deleted file mode 100644 index d6baf7ba1..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-11-18-V2.3.0.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Versión 2.3.0" -slug: v2-3-0 -date: 2025-11-18 -tags: [release] ---- - -# 🚀 Versión 2.3.0 - -18/11/2025 - -## Nuevas Funcionalidades - -- **Clonación de Environments:** Nueva función para clonar Environments. -- **Clonación de Projects:** Nueva función para clonar Projects. -- **Clonación de Dependencies:** Nueva función para clonar Dependencies. -- **Clonación de Workloads:** Nueva función para clonar Workloads. -- **Clonación de Variable Groups:** Nueva función para clonar Variable Groups. -- **Filtros de Monitoreo de Cluster:** Agregados filtros para navegar eventos de Cluster en Cluster Monitoring. -- **Búsqueda de Variable Groups:** Capacidad de buscar Variable Groups por nombres de claves internas desde la búsqueda general. - -## Correcciones de Errores - -- **Cuenta Seleccionada:** La cuenta seleccionada ahora persiste al cambiar de usuario. -- **Apagado de Web Services:** Mejoras en el apagado de Web Services. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-01-V2.3.1.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-01-V2.3.1.md deleted file mode 100644 index 20327926a..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-01-V2.3.1.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Versión 2.3.1" -slug: v2-3-1 -date: 2025-12-01 -tags: [release] ---- - -# 🚀 Versión 2.3.1 - -🗓️ _01/12/2025_ - -## Nuevas Funcionalidades - -- **Análisis de Imágenes en Soporte:** Soporte para análisis de imágenes en el bot de soporte. -- **Documentación:** Nueva documentación para Dockertron y gestión de charts. -- **Valores Personalizados en Addons:** Capacidad de usar valores personalizados al instalar un addon. -- **Cambio de Nodegroup:** Capacidad de cambiar el nodegroup de clusters no productivos. -- **Flujo de Soporte:** Flujo de conversación para soporte entre bot y humano. - -## Correcciones de Errores - -- **Modales de Confirmación:** Corrección de posición de modales de confirmación de eliminación. -- **Tabla de Builds:** Corrección de errores de datos y columnas en la tabla de builds. -- **Notificaciones del Dashboard:** Corrección de mensajes de notificación en el dashboard. -- **Nombres de Workloads:** Ajuste de tamaños de nombres para Workloads. -- **Dependencia de Chart:** Corrección del flujo de dependencia de charts. -- **Alertas de Consola:** Corrección de alertas de notificación en la consola. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-19-V2.3.2.md b/i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-19-V2.3.2.md deleted file mode 100644 index 2f7854a39..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/2025-12-19-V2.3.2.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Versión 2.3.2" -slug: v2-3-2 -date: 2025-12-19 -authors: - - name: Equipo SleakOps - title: Equipo de Desarrollo -tags: [release] ---- - -# 🚀 Versión 2.3.2 - - - -## Nuevas Funcionalidades - -- **CLI de SleakOps:** Mejoras y nuevas funcionalidades, incluyendo la posibilidad de abrir una shell de Workload de forma local. -- **S3 con CloudFront:** Mejoras en la integración de S3 con CloudFront. -- **Python en Lambdas:** Actualización de versiones de Python para Lambdas. -- **Charts en Projects:** Mejoras en la pantalla de configuración de charts en Projects. -- **Tags de Subnet:** Mejoras en el manejo de tags de subnet para autodiscovery. -- **Restauración de DB:** Mejoras en el flujo de restauración de base de datos desde un snapshot. -- **Ingress en Web Services:** Soporte para configurar URL y anotaciones de ingress en Web Services. -- **Performance de APIs:** Optimización del rendimiento de las APIs. -- **Errores de Dominios:** Mejoras en el manejo de errores de dominios. -- **Botones de Addons:** Mejoras visuales en los botones de addons. -- **Notificaciones:** Mejoras visuales al mostrar notificaciones. -- **Opciones de Botones:** Mejoras visuales en las opciones de botones (configuración, copiar, etc.). -- **Versiones de RDS:** Actualización de versiones disponibles de RDS. -- **Módulos de Infraestructura:** Optimización de tiempos de ejecución para módulos de infraestructura. - -## Correcciones de Errores - -- **Eliminación de Roles:** Manejo de la eliminación de roles al eliminar un Project. -- **Facturación Multi-Proveedor:** Corrección en la pantalla de facturación con múltiples proveedores. -- **Registro y Login:** Manejo del flujo de registro y login con diferentes estados de suscripciones. -- **Formulario de Nodepool:** Manejo de errores en el formulario de Nodepool. -- **Cambio de Cuentas:** Manejo de errores al cambiar entre cuentas. -- **Caracteres en Variables:** Manejo de caracteres inválidos en nombres de variables en Variable Groups. -- **Acceso a Cluster:** Manejo del acceso a Cluster para diferentes tipos de usuarios. -- **Acceso a VPN:** Manejo de errores al obtener acceso a VPN para diferentes tipos de usuarios. -- **Textos en Listados:** Corrección de textos en listados y formularios. -- **Conexión con AWS:** Corrección de textos en la guía paso a paso para conectarse con AWS. -- **Deployments Pendientes:** Indicador de alerta para deployments pendientes de aprobación. -- **Actualización de Postgres:** Manejo de errores en la actualización de PostgreSQL de 14 a 17. -- **Security Group de RDS:** Corrección del security group para réplicas públicas y privadas de RDS. -- **Chat de Soporte:** Corrección en la delegación en el chat de soporte. diff --git a/i18n/es/docusaurus-plugin-content-blog-changelog/options.json b/i18n/es/docusaurus-plugin-content-blog-changelog/options.json deleted file mode 100644 index d9f47273e..000000000 --- a/i18n/es/docusaurus-plugin-content-blog-changelog/options.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "title": { - "message": "Registro de Cambios", - "description": "The title for the changelog blog used in SEO" - }, - "description": { - "message": "Registro de cambios de SleakOps - Últimas actualizaciones y versiones", - "description": "The description for the changelog blog used in SEO" - }, - "sidebar.title": { - "message": "Actualizaciones recientes", - "description": "The label for the left sidebar" - } -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/basicconcepts.mdx b/i18n/es/docusaurus-plugin-content-docs/current/basicconcepts.mdx deleted file mode 100644 index 6e12dcec9..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/basicconcepts.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_label: Conceptos Básicos -sidebar_position: 2 -id: basicconcepts ---- - -# Conceptos Básicos - -### Proveedor - -El primer paso para iniciar una infraestructura es decidir qué proveedor de nube utilizar (AWS, Azure o GCP, etc.). En SleakOps, un **Proveedor** representa la selección de uno de estos proveedores de nube, las credenciales otorgadas a SleakOps para su uso, y el conjunto de cuentas creadas para gestionar la infraestructura adecuadamente. Está compuesto por una Unidad Organizativa en AWS y sus cuentas asociadas. - -### Clúster - -Un clúster de Kubernetes es un sistema distribuido para gestionar aplicaciones en contenedores. Consiste en nodos (máquinas físicas o virtuales) que ejecutan pods (grupos de uno o más contenedores). Un plano de control central, compuesto por varios componentes de software, coordina la actividad de los nodos y gestiona el ciclo de vida de los pods. - -### Entorno - -En informática, un entorno o namespace se refiere típicamente a un área aislada donde operan de forma independiente recursos, aplicaciones o servicios específicos. Esta separación mejora la organización, la seguridad y la gestión de recursos dentro de sistemas o plataformas de mayor tamaño. - -### Proyecto - -Un proyecto es una colección de archivos y código gestionados con Git, que representa una base de código dentro de un repositorio git. - -### Servicio - -Un **servicio** es una unidad funcional fundamental que puede implementarse y gestionarse de forma independiente dentro de un entorno. Los servicios realizan tareas o procesos específicos e interactúan con otros servicios mediante interfaces definidas. Son escalables y modulares, formando los componentes básicos de arquitecturas como microservicios y arquitecturas orientadas a servicios (SOA), permitiendo un desarrollo de sistemas flexible y eficiente. - -### Dependencia - -Una **dependencia** es un recurso o servicio externo que una aplicación necesita para funcionar correctamente en un entorno de nube. Estas dependencias incluyen diversos componentes de infraestructura, como bases de datos relacionales, servicios de almacenamiento y caches. Cada dependencia se asocia con servicios específicos del proveedor, asegurando una integración y operación fluida dentro de la plataforma en la nube. - -### Grupo de Variables - -En SleakOps, un **grupo de variables** (o **var group**) es un conjunto de pares clave-valor, similar a un diccionario, que proporciona configuraciones para los servicios dentro de un proyecto y entorno específico. - -### Build - -Un **build** es el proceso de crear una nueva versión del código de tu aplicación como una imagen de contenedor a partir de un Dockerfile, incorporando el código compilado y las dependencias necesarias. - -### Despliegue - -En tecnología, **desplegar** significa lanzar una aplicación de software, servicio o actualización en un entorno de producción, haciéndolo disponible para su uso por los usuarios finales. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx b/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx deleted file mode 100644 index cb23e1030..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx +++ /dev/null @@ -1,838 +0,0 @@ ---- -sidebar_position: 14 ---- -# Registro de Cambios - - -## **Versión 2.4.0** - -🗓️ *08/01/2026* - -**🚀 Novedades:** - -- **Autodiagnóstico en Workloads:** Con la ayuda de IA, ahora puedes descubrir de manera fácil y rápida qué está pasando con tus Workloads. Con solo presionar un botón desde la consola, obtendrás un diagnóstico completo. -- **Grace Period en Workloads:** Soporte para configurar grace period en Workloads. -- **Notificaciones de Cost Tags:** Se agregan notificaciones para configurar etiquetas de costos. -- **Eliminación en Cascada:** Mejoras en el flujo de eliminación en cascada con Dependencies activas. -- **Variable Groups de Archivos:** Mejoras en el formulario de Variable Groups de tipo archivo. -- **Selector de Project:** Mejoras en formularios con selector de Project. -- **Navegación en Activity Logs:** Se agregan enlaces para navegar entre Activity Logs y recursos. -- **Sidebar:** Mejora visual del sidebar. -- **Pantalla de Billing:** Mejoras en la pantalla de facturación. -- **Edición de Dominios:** Posibilidad de modificar dominios en Environments ya creados. -- **Nombres de Variables:** Manejo de longitud de nombres de variables en Variable Groups. -- **Nombres de Environment:** Ajustes en nombres por defecto de Environment. -- **Monitoreo de Dependencies:** Mejoras en el monitoreo de Dependencies. -- **Resoluciones Pequeñas:** Mejoras de UI para resoluciones bajas o pantallas pequeñas. -- **Variables Modificadas:** Mejoras en el formulario de Variable Groups para marcar qué variables fueron modificadas. -- **Target Port en Web Services:** Soporte para configurar targetPort en servicios de Web Services. - -**🐞 Correcciones:** - -- **Nombres de Environments:** Manejo de longitud de nombres de Environments. -- **Filtros Persistentes:** Los filtros de Project y Environment ahora persisten entre pantallas. -- **Iconos de Projects:** Mejora en los iconos de Projects. -- **Addons con Atributos Custom:** Corrección en la edición de addons con atributos personalizados. -- **Réplicas RDS:** Validación de longitud de réplicas en RDS. -- **URL en Web Services:** Corrección en la autogeneración de URL al editar un Web Service. -- **Selector de Projects:** Corrección en la visibilidad del selector de Projects. -- **Formularios de Nodepool:** Corrección de errores en formularios de edición y creación de Nodepools. -- **Transición de Estados:** Corrección en la transición de estado de pendiente a finalizado. -- **Certificado SSL:** Corrección en alertas para validación de certificado SSL. -- **Clonado con Versiones:** Corrección en el clonado con versiones de Dependencies. -- **Email de Notificaciones:** Corrección de errores visuales en el email de notificaciones. -- **URL en Clonado:** Corrección de URL de Web Services en flujo de clonado. -- **Eliminación de Project con RDS:** Corrección al eliminar un Project con una RDS con protección de eliminación activa. - - -## **Versión 2.3.2** - -🗓️ _19/12/2025_ - -**🚀 Novedades:** - -- **SleakOps CLI:** Mejoras y nuevas funciones, incluyendo la posibilidad de abrir una shell de un Workload en local. -- **S3 con CloudFront:** Mejoras en la integración de S3 con CloudFront. -- **Python en Lambdas:** Actualización de versiones de Python para Lambdas. -- **Charts en Projects:** Mejoras en la pantalla de configuración de charts en Projects. -- **Tags de Subnet:** Mejoras en el manejo de tags de subnet para autodiscovery. -- **Restauración de DB:** Mejoras en el flujo de restauración de base de datos desde un snapshot. -- **Ingress en Web Services:** Soporte para configurar URL y annotations de ingress en Web Services. -- **Performance de APIs:** Optimización en el rendimiento de las APIs. -- **Errores en Domains:** Mejoras en el manejo de errores en dominios. -- **Botones de Addons:** Mejora visual en los botones de addons. -- **Notificaciones:** Mejora visual al mostrar notificaciones. -- **Opciones de Botones:** Mejora visual en opciones de botones (configuración, copiar, etc.). -- **Versiones de RDS:** Actualización de versiones disponibles de RDS. -- **Módulos de Infraestructura:** Optimización de tiempos en la ejecución de módulos de infraestructura. - -**🐞 Correcciones:** - -- **Eliminación de Roles:** Manejo en la eliminación de roles al eliminar un Project. -- **Billing Multi-Provider:** Corrección en pantalla de billing con múltiples proveedores. -- **Registro y Login:** Manejo del flujo de registro y login con diferentes estados de suscripciones. -- **Formulario de Nodepools:** Manejo de errores en el formulario de Nodepools. -- **Cambio de Cuentas:** Manejo de errores al cambiar entre cuentas. -- **Caracteres en Variables:** Manejo de caracteres inválidos en nombres de variables en Variable Groups. -- **Acceso a Cluster:** Manejo de acceso a Cluster para diferentes tipos de usuarios. -- **Acceso a VPN:** Manejo de errores al obtener acceso a VPN para diferentes tipos de usuarios. -- **Textos en Listados:** Corrección de textos en listados y formularios. -- **Conexión con AWS:** Corrección de textos en el paso a paso para conectarse con AWS. -- **Deployments Pendientes:** Alerta indicadora de deployments pendientes de aprobación. -- **Actualización de Postgres:** Manejo de error en actualización de PostgreSQL de 14 a 17. -- **Security Group en RDS:** Corrección de security group para réplicas de RDS públicas y privadas. -- **Chat de Soporte:** Corrección al delegar conversación en el chat de soporte. - -## **Versión 2.3.1** - -🗓️ _01/12/2025_ - -**🚀 Novedades:** - -- **Análisis de Imágenes en Soporte:** Soporte de análisis de imágenes en el bot de soporte. -- **Documentación:** Nueva documentación para Dockertron y manejo de charts. -- **Valores Custom en Addons:** Posibilidad de usar valores personalizados al instalar un addon. -- **Cambio de Nodegroup:** Posibilidad de cambiar el nodegroup de clusters no productivos. -- **Flujo de Soporte:** Flujo de conversación de soporte entre bot y humano. - -**🐞 Correcciones:** - -- **Modales de Confirmación:** Corrección en la posición de modales de confirmación de eliminación. -- **Tabla de Builds:** Corrección de errores de datos y columnas en la tabla de builds. -- **Notificaciones en Dashboard:** Corrección de mensajes de notificaciones en el dashboard. -- **Nombres de Workloads:** Ajuste de tamaños de nombres para Workloads. -- **Chart Dependency:** Corrección del flujo de chart dependency. -- **Alertas en Console:** Corrección de alertas de notificaciones en la consola. - -## **Versión 2.3.0** - -🗓️ _18/11/2025_ - -**🚀 Novedades:** - -- **Clonado de Environments:** Nueva función de clonado de Environments. -- **Clonado de Projects:** Nueva función de clonado de Projects. -- **Clonado de Dependencies:** Nueva función de clonado de Dependencies. -- **Clonado de Workloads:** Nueva función de clonado de Workloads. -- **Clonado de Variable Groups:** Nueva función de clonado de Variable Groups. -- **Filtros en Cluster Monitoring:** Se agregan filtros para navegación de eventos de Cluster en Cluster Monitoring. -- **Búsqueda de Variable Groups:** Posibilidad de buscar Variable Groups por nombres de claves internas desde el buscador general. - -**🐞 Correcciones:** - -- **Cuenta Seleccionada:** Se persiste la cuenta seleccionada al cambiar de usuario. -- **Apagado de Web Services:** Mejora en el apagado de Web Services. - -## **Versión 2.2.0** - -🗓️ _13/11/2025_ - -**🚀 Novedades:** - -- **Visualizador de Código:** Nuevo componente para visualizar código dentro de la consola. - -**🐞 Correcciones:** - -- **Usuarios Eliminados:** Corrección de errores en usuarios eliminados. -- **Actualizar Ramas:** Corrección en el flujo de actualizar ramas en Project. -- **Información Incompleta:** Corrección del flujo cuando falta completar información de un Project. -- **Extra Policies:** Corrección del flujo para configurar políticas adicionales en Project. - -## **Versión 2.1.0** - -🗓️ _10/11/2025_ - -**🚀 Novedades:** - -- **Actualización de Cluster:** Soporte para actualización de Cluster de 1.31 a 1.32. -- **Tour de Dependency:** Nuevo tour guiado para la pantalla de Dependency. -- **Tour de Workload:** Nuevo tour guiado para la pantalla de Workload. -- **Tour de Variable Group:** Nuevo tour guiado para la pantalla de Variable Group. -- **Tour de Cluster:** Nuevo tour guiado para la pantalla de Cluster. -- **Tour de Project:** Nuevo tour guiado para la pantalla de Project. -- **Actualización de Cluster:** Optimización en tareas de actualización de Cluster. -- **Carga de Pantallas:** Mejoras en la carga de drawers y pantallas secundarias. -- **Programar Actualización:** Nuevo flujo para programar la actualización de Cluster. -- **Onboarding:** Nuevo flujo de onboarding para usuarios nuevos. -- **Configuración de Nodepool:** Soporte de más parámetros de configuración para Nodepool (tipo de instancias, fallbacks, etc.). -- **Monitoreo de Upgrade:** Nuevo flujo de monitoreo de servicios durante el upgrade de Cluster con reporte de errores. -- **Logs de Builds:** Mejoras en los logs de builds con más contexto. - -**🐞 Correcciones:** - -- **Certificado SSL en S3:** Corrección de errores de certificado SSL para S3 con CloudFront. -- **Activity Logs:** Corrección de nombres en algunos Activity Logs. -- **Creación de Usuarios:** Corrección de errores en el flujo de creación de usuarios. -- **Tickets de Soporte:** Corrección del estado de tickets de soporte. -- **Build con CLI:** Corrección de parámetros al hacer build usando la CLI. -- **Apagado Nocturno:** Corrección del estado de Cluster con apagado nocturno activado. -- **Resoluciones de Pantalla:** Ajustes para algunas resoluciones en la pantalla principal de la consola. -- **Eliminar Web Services:** Corrección de errores al eliminar un Web Service en la tabla. - -## **Versión 2.0.1** - -🗓️ _15/10/2025_ - -**🚀 Novedades:** - -- **Tabla de Builds y Deploys:** Mejoras en los datos mostrados en la tabla de builds y deploys. - -**🐞 Correcciones:** - -- **Cron de Apagado Nocturno:** Corrección en la visualización del cron del apagado nocturno. -- **Estado de Cluster:** Corrección en la actualización de estado de un Cluster mientras se está actualizando. -- **Notificaciones Largas:** Corrección en la visualización de notificaciones largas. -- **VPN para Terceros:** Corrección en el acceso a VPN para terceros. -- **Cancelación de Deploy:** Corrección en el flujo de cancelación de deploy. -- **Creación de Provider:** Corrección de jerarquías de texto en el flujo de creación de Provider. -- **Missing Information:** Corrección de redirección en el flujo de información faltante en Project. -- **Usuario Viewer:** Corrección de navegación para usuario viewer. -- **Toggles en Modo Light:** Mejora de visibilidad de toggles en modo claro. -- **Password en Dependency MQ:** Corrección en la autogeneración de password para Dependency MQ. -- **Carga de Iconos:** Mejoras en la carga de iconos. -- **Pantallas de Transición:** Corrección de pantallas de transición durante carga de datos. -- **Tablas en Project Console:** Mejoras de visualización de tablas en la pantalla "Project Console". -- **Errores de Infraestructura:** Corrección de mensaje de errores al fallar la ejecución de módulo de infraestructura. -- **Selector de Cuentas Mobile:** Soporte de selector de cuentas para dispositivos móviles. - -## **Version 2.0.0** - -🗓️ _01/10/2025_ - -**🚀 New Features:** - -- **Rediseño completo de la consola:** Interfaz modernizada para una experiencia más limpia, ágil e intuitiva. -- **Soporte de tema claro:** Compatibilidad total con modo claro en la interfaz. -- **Bot de soporte:** Respuestas automáticas para consultas frecuentes. -- **Documentación ampliada:** Guías detalladas y cobertura completa de todas las funcionalidades. -- **Actualización lambdas:** Actualización de versiones de Python utilizadas en las Lambdas. -- **Project Chart:** Promovido a versión estable. -- **Project Access:** Promovido a versión estable. -- **Dependency Aurora MySQL:** Promovido a versión estable. -- **Dependency Oracle:** Promovido a versión estable. -- **Dependency MariaDB:** Promovido a versión estable. -- **Dependency Aurora PostgreSQL:** Promovido a versión estable. -- **Edición de dependencias:** Ahora es posible editar dependencias existentes. -- **Dockertron (beta):** Dockerización automática impulsada por IA. -- **Cancelar builds pendientes:** Opción para detener builds en cola. -- **Nueva dependencia MSK:** Soporte para Kafka con AWS MSK. -- **Mejoras en Webservices:** Configuración de custom ingress annotations y healthcheck opcional. -- **Nodepools avanzados:** Nuevas opciones de fallback y mezcla de instancias (reservadas, spot y bajo demanda) para un mayor control de costos y rendimiento. - -**🐞 Bug Fixes:** - -- **GitLab self-hosted:** Validación de URL corregida. -- **Cluster deletion:** Manejo mejorado de la eliminación en cascada. - -## **Version 1.7.16** - -🗓️ _21/07/2025_ - -**🚀 New Features:** - -- **Proyectos con repositorios públicos:** Ahora es posible crear y gestionar proyectos vinculados a repositorios públicos. -- **Exclusión de builds en métricas:** Se pueden excluir builds del dashboard de métricas en Grafana para mayor precisión en los reportes. - -**🐞 Bug Fixes:** - -- **Deploy de nuevos proyectos:** Se solucionaron problemas que impedían el despliegue correcto de proyectos recién creados. - -## **Version 1.7.15** - -🗓️ _07/07/2025_ - -**🚀 Novedades:** - -- **Resiliencia en nodegroups con Spot:** Ahora los nodegroups Spot evitan caídas cuando no hay instancias disponibles. -- **VariableGroups tipo archivo:** Se incorpora la opción de crear variablegroups basados en archivos. -- **Agente Bot (beta):** Nueva funcionalidad experimental de agente bot en versión beta. - -**🐞 Correcciones:** - -- **Dominios dependientes** Genera registros DNS automaticos cuando existe un dominio ya creado. -- **Cluster con apagado nocturno:** orrección en el estado mostrado de clusters con apagado automático. -- **Filtros en grupo de variables:** Arreglo de filtro por proyecto en listado de group de variables -- **Eliminacion de cluster:** Arreglo de flujo de eliminación de cluster -- **Estados de tickets de soporte:** Arreglo de transicion de estados en tickets de soporte. - -## **Version 1.7.14** - -🗓️ _26/06/2025_ - -**🚀 Novedades:** - -- **Mejoras en transición de estados:** Optimización en el cambio de estado de cluster addons y formularios. -- **Soporte con imágenes:** Posibilidad de subir imágenes en el chat de soporte. -- **Jobs desde cronjobs o existentes:** Ahora es posible lanzar un Job a partir de un cronjob o de un Job ya creado. -- **Errores de infraestructura:** Mejor interpretación y visualización de errores para facilitar la resolución. - -**🐞 Correcciones:** - -- **Volúmenes duplicados:** Solucionado el error al crear volúmenes con el mismo nombre. -- **Usuarios duplicados:** Corrección para evitar la creación de usuarios con correos electrónicos repetidos. -- **Dependencias duplicadas:** Se evita la creación de dependencias con nombres repetidos. -- **Monitoreo de dependencias:** Corrección en el rango de fechas de la pantalla de monitoreo de dependencias. - -## **Version 1.7.13** - -🗓️ _02/06/2025_ - -**🚀 Novedades:** - -- **Monitoreo de dependencias:** Mejoras en la visualización y seguimiento de dependencias. -- **Control de servicios:** Nuevo toggle para apagar o encender webservices y workers. -- **Builds con o sin caché:** Opción de ejecutar builds utilizando caché o desde cero. -- **Importación de Buckets con versionado:** Soporte para importar Buckets S3 con versionado activo. -- **Variable Groups:** Mejoras en la interfaz de gestión de grupos de variables. -- **Validaciones en Dockerfile:** Se agregan validaciones para mejorar la confiabilidad de los Dockerfiles. - -**🐞 Correcciones:** - -- **Logs de Jobs:** Ahora los enlaces de logs funcionan correctamente en los Jobs. -- **Nombres de ramas:** Soporte para branches con / en el nombre. -- **Pipelines de GitLab:** Se resolvieron errores en la ejecución de pipelines. - -## **Version 1.7.12** - -🗓️ _14/05/2025_ - -**🚀 Novedades:** - -- **Nuevo Flujo de Soporte:** Se incorporó un chatbot y un sistema de tickets para brindar mayor trazabilidad y agilidad en la atención. -- **Gestión de Subscripciones y Planes:** Nuevas mejoras para administrar subscripciones y planes de servicio. - -**🐞 Correcciones:** - -- **Mejoras en Formularios:** Optimización en la usabilidad y validación de formularios. -- **Consola de Proyectos:** Mejoras de UI/UX en la pantalla de la consola de proyectos. - -## **Version 1.7.11** - -🗓️ _24/04/2025_ - -**🚀 Novedades:** - -- **Kubernetes 1.31 y Karpenter 1.3 :** SleakOps ahora aprovisiona clusters en EKS 1.31 y actualiza el autoscaler a Karpenter 1.3. -- **Gestión de Secrets Mejorada:** Todos los secrets se guardan cifrados en AWS Systems Manager Parameter Store, además de la copia dentro del cluster, añadiendo una capa extra de seguridad - -**🐞 Correcciones:** - -- **Workers en Clúster de Desarrollo:** Se eliminó el PodDisruptionBudget el desescalado en entorno con apagado nocturno, mejorando la fiabilidad de los workers en entornos de desarrollo. -- **Mejoras en builds:** Ya no se dispara un build por cada cambio menor en un proyecto. -- **Mejoras en deploys:** Los jobs de build dejaron de usar Fargate y los logs ahora se persisten. -- **Detalles de Web Services:** Pantalla refinada con mayor claridad sobre endpoints, estado y métricas. -- **Add-on Kubecost:** Mejoras de estabilidad. - -## **Version 1.7.10** - -🗓️ _01/04/2025_ - -**🚀 Novedades:** - -- **Mayor Control sobre Permisos:** Ahora los proyectos pueden contar con permisos adicionales, ya sean políticas de IAM de AWS o permisos personalizados. -- **Detalles de Dependencias:** Se muestran los detalles de configuración de cada dependencia en su vista correspondiente. -- **Mejoras en la Pantalla de Actualización de Clusters:** Se incluye el análisis de EKS Insights directamente en SleakOps para optimizar las actualizaciones de los clusters. -- **Mejoras en Build & Proyectos:** Más detalles en el proceso de build y un flujo de validaciones de proyectos optimizado. - -**🐞 Correcciones:** - -- **Datos de Acceso al Cluster:** Solucionado un error al acceder a la información de conexión de un cluster cuando se seleccionaba una cuenta diferente. -- **Listado de Dominios:** Se agregó un filtro por cuenta al listar los dominios. -- **Mejoras Visuales en el Listado de Nodepools:** Se optimizó la presentación del listado de nodepools. -- **Instalación de Add-ons:** Ahora se actualiza correctamente el listado de add-ons después de una instalación. -- **Edición de Variable Groups:** Corregido un problema que impedía editar los grupos de variables. -- **Adjuntar Nuevas Suscripciones:** Solucionado un error que evitaba la correcta vinculación de nuevas suscripciones. -- **Pronóstico de Costos (Forecast Cost):** Se corrigieron problemas para mejorar la estimación de costos. - -## **Version 1.7.9** - -🗓️ _17/02/2025_ - -**🚀 Novedades:** - -- **Mejoras en Cronjobs:** Ahora puedes configurar las políticas de cronjobs y filtrar entre cronjobs activos e inactivos. -- **Notificaciones por Correo:** Cuando SleakOps genera una notificación, los usuarios la reciben por correo electrónico. -- **EKS Insights:** Durante la actualización de clusters, SleakOps consulta los Insights de EKS para verificar que todo funcione correctamente. - -**🐞 Correcciones:** - -- **Mejoras en los Flujos de Proyectos:** Se han mejorado varios ajustes, formularios y otros elementos para una gestión de proyectos más ágil. -- **Flujo de Creación de Cuentas AWS:** Ahora se admiten cuentas inactivas de AWS, proporcionando una guía clara para activarlas manualmente antes de retomar el proceso en SleakOps. - -## **Version 1.7.8** - -🗓️ _10/02/2025_ - -**🚀 Novedades:** - -- **Kubernetes 1.30:** Se actualizó la versión de EKS a la 1.30. - -**🐞 Correcciones:** - -- **Mejoras Estéticas Menores:** Se optimizó el diseño visual de las pantallas de proyectos y workloads. - -## **Versión 1.7.7** - -🗓️ _05/02/2025_ - -**🚀 Novedades:** - -- **Importación desde buckets externos:** Copia fácilmente archivos de un bucket S3 externo a SleakOps con la nueva función Import Bucket. -- **Rediseño de vista de Proyectos:** Accede a logs e información clave en una sola pantalla para mayor visibilidad. -- **Cambio de “Executions” a “Workloads”:** Se actualiza la terminología para alinearla con la notación interna del clúster. -- **Optimización de eliminación de Clusters:** Se agregó una validación adicional para un proceso de eliminación más seguro y estable. - -**🐞 Correcciones:** - -- **Permisos de Proyectos para Jobs:** Solucionado un problema donde los Jobs usaban permisos del nodo del clúster en lugar de los permisos del Proyecto. -- **Modificación de Docker Args:** Ahora los builds aplican correctamente los cambios de Docker Args hechos justo antes de su ejecución. -- **Generación de Perfiles VPN:** Resuelto un inconveniente que impedía generar perfiles para usuarios de terceros. - -## **Versión 1.7.6** - -🗓️ _06/01/2025_ - -**🚀 Novedades:** - -- **Nuevas configuraciones de Nodepool**: Ahora puedes establecer parámetros adicionales, como tamaños mínimos de instancia y más. -- **Job con imágenes específicas**: Al crear un job, puedes especificar la imagen y el tag exactos que deseas ejecutar (por ejemplo, `postgres:16.4`). -- **(BETA) Extensión de Charts por Proyecto**: SleakOps ahora puede extender los charts utilizados para desplegar carga de trabajo de proyectos, permitiéndote agregar dependencias. Para más información, consulta la [documentación de Helm](https://helm.sh/docs/helm/helm_dependency/). -- **Mejoras en CI/CD**: Se ha simplificado y optimizado el archivo de configuración de CI/CD. - -**🐞 Correcciones:** - -- **URL de Web Services internos**: Se corrigió un problema que causaba URLs incorrectas para los servicios web de tipo “interno”. -- **Eliminación de Volúmenes**: Se resolvieron problemas relacionados con la eliminación de volúmenes bajo varias políticas de retención. -- **Mejoras en UX/UI**: Mejoras en la interfaz para Proyectos, Volúmenes y Grupos de Variables. - -## **Version 1.7.5** - -🗓️ _09/12/2024_ - -**🚀 New Features:** - -- **Manejo de error en integracion con AWS:**: Se agrego un manejo para la tardanza de AWS en activar las cuentas creadas por Sleakops. -- **Links de addons en build:** Se agrega los links para poder ver logs y metricas en los builds. - -## **Version 1.7.4** - -🗓️ _05/12/2024_ - -**🚀 New Features:** - -- **Accesibilidad a addons**: Se agregaron enlaces en SleakOps para acceder fácilmente a ver logs, APM o métricas de recursos específicos. -- **OpenTelemetry** **(beta):** Se introdujo un add-on para mejorar la observabilidad en las aplicaciones desplegadas con SleakOps. Con OpenTelemetry, puedes tener tu propio APM para monitorear métricas como tasa de solicitudes, latencia y tasa de errores de tu aplicación. -- **Addons, Configuraciones de disponibilidad**: Se agregaron diversas configuraciones de disponibilidad para cada add-on. -- **Documentacion**: Se actualizó la documentación de los add-ons y se puso a disposición en español. - -**🐞 Correcciones:** - -- Revision Kubecost: Se revisó la integración entre Prometheus y Kubecost. Ahora Kubecost asigna correctamente los nombres de los recursos desplegados a sus costos, mejorando significativamente la precisión de sus estimaciones. Es posible habilitar en Kubecost el análisis aproximado de costos de tráfico de red dentro del clúster (Beta). - -## **Version 1.7.3** - -🗓️ _14/11/2024_ - -**🚀 New Features:** - -- **Oracle (beta):** Ahora podes gestionar Oracle RDS como dependency en Sleakops . -- **Aurora postgres serverless (beta)**: Se agrega soporte para crear y gestionar aurora postgres serverless. - -## **Version 1.7.2** - -🗓️ _05/11/2024_ - -**🚀 New Features:** - -- **Eliminacion de bucket s3:** Eliminacion de bucket s3 con muchos archivos. -- **VPN**: actualizacion del modulo de Pritunl - -**🐞 Correcciones:** - -- Varias correcciones de errores menores - -## **Version 1.7.1** - -🗓️ _30/10/2024_ - -**🚀 Nuevas Funciones:** - -- **Creacion de entornos y dominios:** Se mejora la creacion de entornos y dominios; ya no exite limitacion para usar un dominio diferente al que fue configurado a nivel global -- **Notificaciones**: Se agrega un sistema de notificaciones para avisar al usuario de todas las acciones manules que tiene pendiente y actualizaciones de infraestructura programadas. -- **Documentacion:** Se actualiza documentacion para la gestion de dominios, proyectos, dependencias, variables de entorno. - -**🐞 Correcciones:** - -- Varias correcciones de errores menores. - -## **Versión 1.7.0** - -🗓️ _14/10/2024_ - -**🚀 Nuevas Funciones:** - -- **Gestión Avanzada de Nodos:** Se agregó la gestión de pools de nodos para tener un mayor control sobre los tipos de nodos donde se ejecutan las cargas de trabajo. -- **Migración de Módulos de Clúster:** Todos los módulos creados con el clúster ahora se ejecutan en instancias Graviton, mejorando el rendimiento y reduciendo costos. -- **Complementos de Clúster:** Todos los complementos ahora se ejecutan en instancias Graviton, lo que mejora el rendimiento y reduce los costos. -- **Nodos de Construcción Aislados:** Las construcciones ahora se ejecutan en nodos dedicados separados de los nodos de aplicaciones, mejorando la estabilidad de los nodos que ejecutan aplicaciones. - -**🐞 Correcciones** - -- Varias correcciones menores de errores. - -## **Versión 1.6.3** - -🗓️ _27/09/2024_ - -**🚀 Nuevas Funciones:** - -- **Registro:** Implementado un nuevo flujo de registro. - -**🐞 Correcciones** - -- Varias correcciones menores de errores y mejoras. - -## **Versión 1.6.2** - -🗓️ _19/09/2024_ - -**🚀 Nuevas Funciones:** - -- **Actualizaciones:** Actualizados **Prometheus**, **Loki** y **EBS CSI Driver** a las versiones más recientes de agosto de 2024. -- **Migración del Driver EBS CSI:** SleakOps ahora usa el complemento gestionado por AWS para EKS, reemplazando la versión autogestionada. -- **Prometheus con EBS:** Prometheus ahora utiliza volúmenes EBS para la persistencia de datos, evitando pérdidas en caso de fallos de pods. -- **Loki con SimpleScalable:** Adopta una estructura **SimpleScalable** con almacenamiento **TSDB** para registros, mejorando el rendimiento. -- **Colas Muertas en SQS:** Ahora es compatible con la creación de colas SQS con colas muertas asociadas para un mejor manejo de errores. - -**🐞 Correcciones** - -- Varias correcciones menores de errores y mejoras en los flujos de ejecución de la plataforma. - -## **Versión 1.6.1** - -🗓️ _22/08/2024_ - -**🚀 Nuevas Funciones:** - -- **Actualización de Versiones de Dependencias:** Se actualizaron versiones de dependencias como MQ, Elasticsearch, Memcache y Redis. -- **Mejoras en la Autenticación:** Se agregó soporte para almacenar tokens de autenticación mediante cookies en lugar de almacenamiento local. -- Se agregó la impresión de registros de validación ACM en la pantalla de detalles y el estado de ACM ahora está incluido en el sistema. - -**🐞 Correcciones** - -- Se resolvieron problemas en el flujo de creación de proveedores. - -## **Versión 1.6.0** - -🗓️ _12/08/2024_ - -**🚀 Nuevas Funciones:** - -- **Soporte para Instancias ARM y Versiones Adicionales de RDS:** Se añadieron instancias ARM y versiones extra en RDS. -- **Actualización de EKS a la Versión 1.29:** EKS ha sido actualizado a la versión 1.29. Ahora se muestran los registros de cambios de EKS. -- **Mejoras en Creación y Edición de Proveedores:** Se actualizaron las pantallas y campos de los formularios de proveedores, incluyendo cambios en estados y visualización. -- **Búsqueda Mejorada de Repositorios:** Añadido soporte para búsqueda asincrónica en el selector de repositorios y se mejoró la búsqueda en GitHub, GitLab y Bitbucket. -- **Parametrización de Healthchecks:** Ahora se pueden parametrizar propiedades de healthcheck con JSONSchema. -- **Nuevo Tablero:** Se añadió un nuevo tablero para ver el consumo por namespace. - -**🐞 Correcciones** - -- Solucionado un error al regenerar certificados y problemas con construcciones que no se ejecutaban correctamente. -- Errores de frontend relacionados con listados y problemas de API que causaban errores en filtros fueron corregidos. - -# **Versión 1.5.1** - -🗓️ _24/06/2024_ - -**🚀 Nuevas Funciones:** - -- **Configuración Avanzada de Recursos:** Se implementaron opciones avanzadas para la configuración de recursos en entornos de proyectos. -- **Optimización de Scripts de Recolección de Datos:** Mejorada la eficiencia de los scripts de recolección de datos para una ejecución más rápida. - -**🐞 Correcciones:** - -- Resueltos varios errores de interfaz que afectaban la usabilidad del sistema. - -## **Versión 1.5.0** - -🗓️ _23/05/2024_ - -**🚀 Nuevas Funciones:** - -- **Creación de Múltiples Entornos de Proyecto:** Ahora puedes crear múltiples entornos de proyecto utilizando el mismo repositorio y rama. -- **Validación de Dominios para Alias:** Mejorada la validación de creación de dominios para alias utilizando un ACM existente y utilizable para ingress. -- **Configuración de Recursos en Entornos de Proyecto:** Se añadió la capacidad de configurar recursos de construcción y despliegue por entorno de proyecto. -- **Configuración de Solicitudes de Despliegue y Construcción:** Se agregó la opción de configurar solicitudes de despliegue y construcción en un entorno de proyecto. -- **Tablero de Grafana:** Se incorporó un tablero de Grafana para visualizar el consumo por namespace. -- **Configuración de Loki:** Ahora es posible buscar registros por namespace con la nueva configuración de Loki. -- **Recolección de Datos:** Mejorado el script de recolección de costos para que sea idempotente y ejecutable en fechas específicas. - -**🐞 Correcciones:** - -- Corregido un error al crear dependencias de S3 y solucionado un problema crítico con vargroups durante actualizaciones de apagado del clúster. -- Corregido un error crítico al invitar colaboradores. - -## **Versión 1.4.3** - -🗓️ _13/05/2024_ - -**🚀 Nuevas Funciones:** - -- **Mejoras en la Gestión de Tableros:** Mejorada la carga de tableros, permitiendo visualizarlos incluso si no se selecciona una cuenta. -- **Mejoras en las Pantallas de Facturación y Proyecto:** Se realizaron mejoras en la pantalla de facturación, incluyendo una nueva sección "otros" para considerar costos previamente no contabilizados. También se mejoró la pantalla de entornos de proyecto. -- **Actualización de Políticas:** La política de CloudFormation ha sido actualizada para mejorar la gestión y seguridad. - -**🐞 Correcciones:** - -- Corregido un error crítico que impedía la creación de proveedores. -- Revisado y resuelto un problema relacionado con la integración de NewRelic. -- Solucionado un problema con el token de actualización al solicitar la URI de la VPN. -- **Errores en la Pantalla de Validación de ACM y Logs de Construcción:** Se corrigieron problemas en la tabla de validación de ACM y en la visualización de logs para construcciones en estado de creación. - -## Versión 1.4.2 - -🗓️ _25/04/2024_ - -**🚀 Nuevas Funciones:** - -- **Nuevas Métricas:** Se añadieron nuevas métricas para los buckets de S3 y RabbitMQ, mejorando el monitoreo de servicios. También se implementó un sistema de monitoreo para métricas de OpenSearch. -- **Reorganización del Esquema de Monitoreo:** Las estructuras del esquema de monitoreo se reorganizaron para una mejor gestión y visualización. La pantalla de monitoreo de dependencias ahora admite diferentes tipos de recursos, proporcionando una vista más detallada. - -**🐞 Correcciones:** - -- Resuelto un problema crítico con vargroups, asegurando su correcto funcionamiento. - -## **Versión 1.4.1** - -🗓️ _11/04/2024_ - -**🚀 Nuevas Funciones:** - -- **Monitoreo de Dependencias y OpenSearch:** Se creó una nueva página de monitoreo para dependencias, facilitando el seguimiento de su estado. También se incluyó OpenSearch. -- **Política de Ciclo de Vida para ECR:** Se configuró una política de ciclo de vida para ECR, mejorando la gestión de imágenes. - -**🐞 Correcciones:** - -- Solucionado el problema de nombres duplicados entre clúster y nodo en Redis. -- Resueltos varios errores de frontend que afectaban la experiencia del usuario. -- Corregido el problema donde se mostraba un error al intentar publicar un vargroup sin un servicio asociado. -- Se solucionaron los problemas al realizar múltiples despliegues y lanzamientos consecutivos. - -## **Versión 1.4.0** - -🗓️ _06/03/2024_ - -**🚀 Nuevas Funciones:** - -- **Configuración de Grafana:** Se configuró la base de datos para el addon de Grafana, junto con DataSources y Dashboards. -- **Persistencia de Métricas de Prometheus con Thanos:** Se agregó soporte para la persistencia de métricas de Prometheus usando Thanos. -- **Nueva API de Volúmenes:** Se implementó soporte para la nueva API de volúmenes, mostrando estados y aplicando configuraciones para despliegues. -- La opción de actualización en addons fue deshabilitada. -- Ahora, cuando se elimina una dependencia, se crea un despliegue con estado "pendiente de aprobación" en lugar de uno automático. - -**🐞 Correcciones:** - -- Solucionado un problema donde se añadían pre-hooks y nuevos volúmenes durante los despliegues, impidiendo su generación. -- Los subdominios ahora se marcan correctamente como delegados si los dominios principales ya están delegados. - -## **Versión 1.3.0** - -🗓️ _03/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Vista Detallada de Proyectos:** Ahora está disponible una vista detallada de proyectos en la nueva interfaz. -- **API de Métricas de RDS:** Se agregó una nueva API para mostrar métricas de RDS, mejorando la visibilidad de los recursos. -- **LogViewer Mejorado:** La carga de LogViewer ahora es más rápida y eficiente. -- **Mejor Onboarding:** Se implementó un nuevo proceso de onboarding para una configuración más sencilla. -- **Monitoreo de Redis:** Se añadió el monitoreo de Redis, mejorando la supervisión de infraestructura. -- **Configuración de Réplicas en RDS:** Se agregó la opción de configurar réplicas en la dependencia RDS para mayor flexibilidad. -- **Estado de Eliminación de Dominios:** La eliminación de dominios ahora crea un despliegue con estado `pendiente de aprobación` en lugar de un despliegue automático. -- **Mejoras en la Ejecución de Jobs:** Se mejoró la ejecución de jobs, permitiendo reintentos automáticos en caso de fallas iniciales. - -**🐞 Correcciones:** - -- Se resolvieron problemas de integración con Bitbucket. -- Corregidos problemas de valores indefinidos en Vargroups. - -## **Versión 1.2.4** - -🗓️ _15/02/2024_ - -**🚀 Nuevas Funciones:** - -- **Optimización del Selector de Clústeres:** Se optimizó el comportamiento del selector de clústeres. -- **Inicio de Sesión en el Flujo de Subscripción de AWS:** El flujo de subscripción de AWS ahora incluye la posibilidad de iniciar sesión directamente. - -**🐞 Correcciones:** - -- Resueltos problemas de callbacks para integraciones con Git y rutas de archivos Docker para GitLab. -- Corregidos errores menores relacionados con la pantalla de facturación. - -## **Versión 1.2.3** - -🗓️ _05/02/2024_ - -**🚀 Nuevas Funciones:** - -- **Desacoplamiento de Alias en Servicios Web:** La creación de alias ahora está separada del formulario de servicios web. -- **Restablecimiento de Contraseña IAM:** Ahora es posible restablecer la contraseña de IAM para un usuario. - -**🐞 Correcciones:** - -- Se corrigió un problema menor con las tareas de lanzamiento. - -## **Versión 1.2.2** - -🗓️ _25/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Botón de Validación de Dominio:** Se agregó un botón de "verificar validación" en el panel de dominio para facilitar la gestión de dominios. -- **Tabla de Registro de Actividad:** Se creó una tabla de registro de actividad. -- **Cifrado de Claves de Acceso:** Ahora las claves de acceso para proveedores de código (GIT) están cifradas. - -**🐞 Correcciones:** - -- Se resolvió un problema donde la API no recreaba correctamente el módulo ACM durante la regeneración. - -## **Versión 1.2.1** - -🗓️ _12/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Optimización de Formularios de Vargroups:** Se mejoró la usabilidad de los formularios de Vargroups. -- **Eliminación de Proveedores y Cuentas de Usuario:** Eliminar un proveedor ahora también elimina las cuentas de usuario asociadas. - -**🐞 Correcciones:** - -- Se corrigió un error en la regeneración de certificados ACM. -- Solucionado un problema en la eliminación de proveedores. - -## **Versión 1.2.0** - -🗓️ _05/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Logs en Grafana:** Se configuró una fuente de datos en Grafana para mostrar logs de S3. -- **Botón de Actualización de Clúster:** Se añadió un botón para permitir la actualización de clústeres desde la interfaz. -- **Registro de Actividad de Usuario:** Se creó un registro de actividad para acciones de usuarios. -- **Despliegue para Validación de Dominios:** Ahora se puede crear un despliegue que se ejecuta una vez que los dominios son validados. -- **Autenticación de Dos Factores:** Se añadió autenticación de dos factores (2FA) en el inicio de sesión para mayor seguridad. - -**🐞 Correcciones:** - -- Se resolvió un problema con builds que usaban la misma rama que la predeterminada. -- Mejorado el procesamiento de logs para mayor velocidad. -- Varias optimizaciones de frontend, incluyendo estilos, búsqueda y visibilidad de recursos pendientes. - -## **Versión 1.1.1** - -🗓️ _05/12/2023_ - -**🚀 Nuevas Funciones:** - -- **Visor de Logs en Jobs:** Se agregó un visor de logs en la lista de jobs, similar al de los despliegues. -- **Dashboard v2:** Mejoras en la segunda versión del Dashboard, con más opciones y mejor organización de la información. -- **Certificados de Clúster:** Los certificados de clúster ahora se eliminan y actualizan automáticamente para evitar problemas de expiración. - -## **Versión 1.1.0** - -🗓️ _06/11/2023_ - -**🚀 Nuevas Funciones:** - -- **Gestión de Vargroups:** Se añadió la opción de mostrar vargroups en los formularios de servicios, workers, hooks y cronjobs. -- **Kubecost:** Se integró Kubecost con Prometheus-stack. - -**🐞 Correcciones:** - -- Solucionado el problema con Karpenter en instancias spot. -- Corrección en roles de usuario y edición de usuarios. -- Resueltos problemas al eliminar un entorno y la eliminación incorrecta de dominios. -- Solucionado el error al intentar iniciar manualmente el clúster. -- Corregido un error en la generación de hooks. - -## **Versión 1.0.5** - -🗓️ _27/10/2023_ - -**🐞 Correcciones:** - -- Solucionados problemas de despliegue y corrección de Karpenter con instancias spot. -- Se corrigieron problemas al eliminar entidades y validar URLs de servicios. - -## **Versión 1.0.4** - -🗓️ _11/10/2023_ - -**🚀 Nuevas Funciones:** - -- **Refactorización y Mejoras:** Refactorización del dashboard y mejoras en la visualización de logs y gestión de eliminación de entidades. - -**🐞 Correcciones:** - -- Solucionados problemas al editar usuarios. -- Corrección en la gestión del estado de clústeres. -- Resueltos problemas con dominios de entornos. -- Arreglado el manejo de errores en respuestas de S3 con CloudFront. - -## **Versión 1.0.3** - -🗓️ _25/09/2023_ - -**🚀 Nuevas Funciones:** - -- **Botones de Gestión y Mejoras en Formularios:** Se añadieron botones para gestión de recursos y mejoras en los formularios de mapeo de variables. -- **Cronjobs y Regeneración de Dominios:** Ahora puedes detener o activar cronjobs y regenerar dominios. - -**🐞 Correcciones:** - -- Solucionado el problema de obtención de la URI VPN en Pritunl. -- Corregido el problema de selección de cuenta para usuarios solo visualizadores. -- Mejorado el manejo de información de health checks enviada al backend. - -## **Versión 1.0.2** - -🗓️ _04/09/2023_ - -**🚀 Nuevas Funciones:** - -- **Optimización de Despliegues:** Simplificación del proceso de despliegue y edición de entornos de proyecto (ProjectEnv), facilitando configuración y despliegue. -- **Ajustes de Recursos y Configuración:** Ahora puedes crear alias personalizados para buckets. -- **Mejoras en Health Checks:** La sonda de readiness para servicios en la cuenta de desarrollo ahora es opcional. - -**🐞 Correcciones:** - -- Resueltos problemas relacionados con VPN y configuración de parámetros de seguridad. - -## **Versión 1.0.1** - -🗓️ _29/08/2023_ - -**🚀 Nuevas Funciones:** - -- **Gestión de Suscripciones:** El inicio de sesión y las actualizaciones de tokens ahora se controlan en función del estado de la suscripción. Además, se implementó una nueva API para registrar usuarios y empresas, validando suscripciones pendientes, con un nuevo modelo que mejora la gestión de suscripciones e integra AwsClient. -- **Onboarding desde Marketplace:** Proceso simplificado para la creación de usuarios provenientes de un marketplace. - -## **Versión 1.0.0** - -🗓️ _23/08/2023_ - -**🚀 Nuevas Funciones:** - -- **Configuración de Volúmenes:** Ahora puedes configurar volúmenes en entornos de proyecto directamente desde el formulario. -- **Apagado Nocturno con Zona Horaria:** Se añadió soporte para seleccionar zonas horarias en el apagado nocturno. -- **Inicio Manual de Clústeres:** Nuevo botón para iniciar clústeres manualmente. -- **Integración con CloudFront:** Soporte para usar CloudFront y mejorar la entrega de contenido. -- **Backups Automáticos:** Configuración de backups automáticos para dependencias. -- **Instancias Graviton:** Soporte para usar instancias Graviton en nodos. -- **Cifrado:** Implementación de cifrado en StackSettings para mayor seguridad. - -**🐞 Correcciones:** - -- Resuelto un problema en la API de facturación y estimación de costos. -- Corregidos errores al eliminar Proveedores y VPNs. -- Ahora puedes eliminar certificados ACM usados por un Load Balancer sin problemas. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx deleted file mode 100644 index 86fb0cfdd..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cli.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: CLI -sidebar_label: CLI de Sleakops -sidebar_position: 11 ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# CLI - -## Optimiza tu CI/CD con la CLI de SleakOps - -La CLI de SleakOps es un paquete de Python diseñado para simplificar tus flujos de trabajo de CI/CD. -Con solo dos subcomandos sencillos, puedes crear compilaciones y desplegar tus aplicaciones con facilidad, garantizando un proceso de desarrollo fluido y eficiente. -Para comenzar, simplemente instala SleakOps usando pip: - -```plain -pip install sleakops -``` - -### 1. Autenticación - -Para autenticarte con el SleakOps CLI, necesitas una API_KEY. Puedes obtener esta clave desde la [consola ](https://console.sleakops.com/settings/apikey) haciendo clic en Generar API-Key. -Cada empresa puede tener solo una API_KEY activa a la vez. Si solicitas una nueva API_KEY, la antigua será revocada automáticamente. En la página se muestran las claves de la empresa y quién las generó. - -Una vez que tengas tu API_KEY, puedes usarla como argumento al ejecutar comandos de SleakOps o configurarla como una variable de entorno llamada SLEAKOPS_KEY. - -:::tip Configurando SLEAKOPS_KEY en Pipelines de CI/CD -Para pipelines de CI/CD, se recomienda configurar SLEAKOPS_KEY como una variable de entorno secreta en tu proveedor de Git: - -- **GitHub**: Agrégala como un secreto de repositorio en Settings → Secrets and variables → Actions -- **GitLab**: Agrégala como una variable de CI/CD en Settings → CI/CD → Variables -- **Bitbucket**: Agrégala como una variable de repositorio en Repository settings → Pipelines → Repository variables - -Esto asegura el acceso seguro a los servicios de SleakOps sin exponer tu clave API en los archivos de configuración de tu pipeline. -::: - -### 2. Crear un Build - -Para crear una compilación de tu aplicación, usa el siguiente comando: - -```plain -sleakops build [options] -``` - -Este comando inicia el proceso de compilación, y SleakOps se encarga de compilar tu código, ejecutar pruebas y empaquetar la aplicación para su despliegue. Puedes especificar opciones adicionales para adaptar el proceso de compilación a tus necesidades específicas. - -Hay dos argumentos obligatorios: **project** y **branch**, que se utilizan para saber qué compilar. -Además, puedes añadir un **commit** para compilar un commit anterior, una **tag** para la imagen y el _proveedor_ si necesitas especificarlo. - -Como se mencionó anteriormente, la clave puede ser un entrada aquí o una variable de entorno. - -También puedes indicar si quieres que el proceso **espere** a que la compilación termine o no. - -:::tip DockerArgs desde CLI -También puedes definir DockerArgs cuando uses la CLI de SleakOps para builds. Usa el parámetro `--docker-args` para pasar argumentos de construcción directamente desde la línea de comandos: - -```bash -sleakops build -p myproject -b main --docker-args "ARG1=value1,ARG2=value2" -``` - -Esto es particularmente útil para pipelines de CI/CD donde quieres pasar diferentes argumentos basados en el entorno o contexto de construcción. -::: - -### 3. Realizar un Despliegue - -Una vez que tu compilación esté lista, puedes desplegar tu aplicación fácilmente usando el siguiente comando: - -```plain -sleakops deploy [options] -``` - -SleakOps gestiona de manera transparente el proceso de despliegue, asegurando que tu aplicación esté en funcionamiento en poco tiempo. Puedes especificar opciones de despliegue para ajustar el proceso según tus requisitos. - -Aquí, **project** y **environment** son los argumentos obligatorios. El usuario puede añadir una **build** o **tag** de imagen para especificar una imagen. Aquí también están presentes las opciones de **wait** y **key**, su uso es el mismo que en el comando de compilación. - -## Ejemplos de CI/CD - -Con la CLI de SleakOps, puedes integrar tus tuberías de CI/CD, automatizar el proceso de compilación y despliegue, y concentrarte en entregar aplicaciones excepcionales sin la molestia de intervención manual. -Disfruta de una experiencia de desarrollo fluida con SleakOps y crea flujos de trabajo de CI/CD personalizados. - - - - - -```plain -name: Deploy - -on: - push: - branches: - - main -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Install SleakOps CLI - run: pip install sleakops - - name: Run SleakOps build - env: - SLEAKOPS_KEY: ${{ secrets.SLEAKOPS_KEY }} - run: sleakops build -p core -b main -w - deploy: - needs: [build] - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Install SleakOps CLI - run: pip install sleakops - - name: Run SleakOps deploy - env: - SLEAKOPS_KEY: ${{ secrets.SLEAKOPS_KEY }} - run: sleakops deploy -p core -e main -w -``` - - - - - - -```plain -image: python:3.9 - -stages: - - build - - deploy - -build: - stage: build - script: - - apt-get update -qy - - apt-get install -y python3-pip - - pip3 install sleakops - - sleakops build -p core -b main -w - rules: - - if: '$CI_COMMIT_BRANCH == main' - -deploy: - stage: deploy - needs: - - build - script: - - apt-get update -qy - - apt-get install -y python3-pip - - pip3 install sleakops - - sleakops deploy -p core -e prod -w - rules: - - if: '$CI_COMMIT_BRANCH == main' -``` - - - - - - -```plain -image: python:3.9 - -pipelines: - branches: - main: - - step: - name: Deploy - script: - - apt-get update -qy - - apt-get install -y python3-pip - - pip3 install sleakops - - sleakops build -p core -b main -w - - sleakops deploy -p core -e main -w -``` - - - - - -## FAQs - -
- - -### ¿SleakOps usa webhooks para CI/CD? - - - -No. SleakOps no utiliza webhooks para activar pipelines de CI/CD. En su lugar, el proceso de CI/CD se ejecuta a través de comandos de SleakOps CLI corriendo en los runners de tu pipeline: GitHub Actions, GitLab Runners o Bitbucket Pipelines. -
- -
- - -### ¿Qué debo hacer si la CLI devuelve "Multiple projects found with the same name and branch"? - - - -Este mensaje aparece cuando tenés varios proyectos con el mismo nombre en distintos entornos. Para resolverlo, especificá el entorno usando el parámetro `-e` o `--environment` en tus comandos de build o deploy. Si necesitás más información sobre las opciones de este comando, ejecutá `sleakops sub-command --help`. - -El nombre del entorno debe coincidir exactamente con el entorno configurado en SleakOps. Podés encontrar el valor correcto del entorno en los ejemplos de pipelines ubicados en Proyecto → Configuración → Git Pipelines. -
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/cluster/_category_.json deleted file mode 100644 index 8fbc57c8b..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Cluster", - "position": 4 -} \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/access-cluster.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/access-cluster.mdx deleted file mode 100644 index 45def4593..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/access-cluster.mdx +++ /dev/null @@ -1,75 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Accede a tu Clúster - -Para acceder a tu clúster de Kubernetes, debes completar algunos pasos y generar un archivo Kubeconfig para conectarte a un IDE de Kubernetes. - -## Preguntas Frecuentes - -
- -### ¿Qué es Kubeconfig? - -Kubeconfig es un archivo de configuración utilizado por la herramienta de línea de comandos de Kubernetes *kubectl* para interactuar con los clústeres de Kubernetes. Contiene información sobre los clústeres, usuarios, contextos y namespaces que *kubectl* utiliza para comunicarse con uno o más clústeres de Kubernetes. -
- -
- -### ¿Qué es un IDE? - -Un IDE para Kubernetes es un entorno de software que proporciona herramientas y funciones específicamente diseñadas para ayudar a los desarrolladores a crear, gestionar y desplegar aplicaciones en clústeres de Kubernetes. Integra comandos de Kubernetes, gestión de recursos y edición de YAML/Helm Charts en el flujo de trabajo de desarrollo. - -Lens es un IDE de código abierto para Kubernetes que ofrece una interfaz gráfica de usuario fácil de usar para gestionar, monitorear y solucionar problemas en múltiples clústeres en tiempo real. -
- -### 1. Ve a la configuración de Acceso al Clúster - -Haz clic en *Clusters*, selecciona uno y accede a su configuración. - -Dirígete a la opción *Access Cluster*. - - - cluster-settings-main-section - - -### 2. Instala las siguientes Dependencias - -- **AWS CLI:** [Documentación de AWS](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) -- **Kubectl:** [Documentación de Kubernetes](https://kubernetes.io/docs/tasks/tools/) -- **Lens:** [Documentación de K8SLens](https://docs.k8slens.dev/getting-started/install-lens/) -- **Cliente VPN de Pritunl:** [Página de Pritunl](https://pritunl.com/) - -### 3. Configura una VPN - -- Abre el **Cliente VPN de Pritunl**. -- Genera una URI de VPN, cópiala y configúrala en el cliente. - -pritunl-access-cluster - -### 4. Genera tus Claves de AWS y crea el archivo kubeconfig - -- Inicia sesión en AWS con tu usuario. -- Luego, dirígete al [Asistente de Claves de Acceso de AWS](https://us-east-1.console.aws.amazon.com/iam/home#/security_credentials/access-key-wizard) para generar las claves en AWS. -- Pega las claves en el formulario y genera el archivo kubeconfig. -- Copia el resultado. - - - cluster-access-cluster - - -### 5. Agrégalo a Lens - -Abre Lens, localiza la opción 'Import Kubeconfig' e importa el archivo YAML obtenido de la sección Access Cluster. - - - cluster-kubeconfig-yaml - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons.mdx deleted file mode 100644 index 1455d5054..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons.mdx +++ /dev/null @@ -1,45 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Complementos del Clúster - -En SleakOps, los complementos (Add-ons) mejoran la funcionalidad de tu clúster EKS al proporcionar componentes esenciales y opcionales que simplifican las operaciones, optimizan el rendimiento y mejoran la visibilidad. Los complementos esenciales incluyen herramientas para monitoreo, gestión de DNS, balanceo de carga y provisión inteligente de nodos, garantizando que tu clúster sea robusto y eficiente. - -## Preguntas Frecuentes - -
- -### ¿Cuáles son los complementos esenciales? - -Por defecto, SleakOps incluye en tu infraestructura: - -- **Metric Server**: SleakOps instala el Metric Server para recopilar métricas a nivel de clúster y nodos, permitiendo el monitoreo del rendimiento y decisiones informadas de escalado. -- **External-DNS**: SleakOps despliega External-DNS para la gestión automática de registros DNS, asegurando una conectividad perfecta con nombres de dominio amigables para el usuario. -- **Balanceador de Carga Automático**: SleakOps provisiona balanceadores de carga automáticamente, distribuyendo el tráfico de manera eficiente y manteniendo una alta disponibilidad. -- **Despliegue de Karpenter**: SleakOps implementa Karpenter para la provisión inteligente de nodos, escalando tu clúster según las necesidades reales de recursos para optimizar el rendimiento. -
- -
- -### ¿Qué complementos opcionales están disponibles? - -- **Grafana**: Visualiza y analiza datos con los paneles de Grafana, facilitando el monitoreo del rendimiento del sistema y la solución de problemas. Ideal para rastrear el uso de memoria y CPU de aplicaciones. -- **LOKI**: Usa Loki para la agregación de registros a bajo costo. Simplifica la gestión de registros etiquetando flujos de registro sin indexar el contenido, ideal para explorar y monitorear registros de aplicaciones. -- **Kubecost**: Obtén información en tiempo real sobre los costos en la nube de Kubernetes con Kubecost. Este complemento te ayuda a monitorear y reducir gastos en los proyectos de tu clúster. -- **Prometheus**: SleakOps despliega Prometheus para monitoreo y alertas, proporcionando información detallada sobre el rendimiento del clúster y la utilización de recursos. -- **OTEL**: Usa OpenTelemetry para recopilar y analizar trazas distribuidas, permitiéndote monitorear y optimizar el rendimiento de las aplicaciones en tu clúster. -
- -
- -### ¿Cómo configuro un complemento? - -Navega a la lista de Clústeres, selecciona un clúster y haz clic en los tres puntos para abrir el menú de opciones. Elige la opción deseada para comenzar la configuración. Para obtener una guía detallada sobre cada configuración, consulta la documentación específica vinculada al final de este artículo. - - - cluster-addons-create - - -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/ebs.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/ebs.mdx deleted file mode 100644 index 94f4244eb..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/ebs.mdx +++ /dev/null @@ -1,58 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# EBS (Elastic Block Store) - -En SleakOps, AWS EBS (Elastic Block Store) se utiliza para proporcionar almacenamiento en bloque persistente para instancias EC2. Los volúmenes EBS son especialmente útiles para aplicaciones que requieren acceso de baja latencia a datos y alto rendimiento. - -## Preguntas Frecuentes - -
- - ### ¿Qué es AWS EBS? - -[AWS EBS ](https://aws.amazon.com/ebs/) es un servicio de almacenamiento en bloque de AWS diseñado para proporcionar almacenamiento persistente para instancias EC2. Los volúmenes EBS se replican automáticamente dentro de su Zona de Disponibilidad, ofreciendo alta disponibilidad y durabilidad, y protegiendo contra fallos de hardware. -
- -
- - ### ¿Cómo se utiliza EBS en SleakOps? - -En SleakOps, EBS se utiliza para proporcionar almacenamiento persistente a aplicaciones que se ejecutan en instancias EC2. Cada volumen EBS puede estar conectado a una sola instancia EC2 a la vez, aunque se pueden conectar múltiples volúmenes a una sola instancia. Dentro de Kubernetes, EBS se utiliza para volúmenes persistentes, garantizando la consistencia de los datos a través de reinicios de pods y reprogramaciones. SleakOps gestiona y configura EBS automáticamente para adaptarse a las necesidades de tus aplicaciones. - -
- -
- - ### ¿Cuáles son los beneficios de usar EBS? - -EBS ofrece varios beneficios clave para aplicaciones de alto rendimiento: -- **Alto rendimiento**: EBS proporciona un rendimiento consistente y de baja latencia, ideal para aplicaciones que requieren acceso rápido a los datos. -- **Durabilidad**: Los volúmenes EBS se replican dentro de su Zona de Disponibilidad para garantizar alta durabilidad. -- **Escalabilidad**: Los volúmenes pueden redimensionarse fácilmente para satisfacer las crecientes demandas de las aplicaciones. -
- -
- - ### ¿Cómo configuro volúmenes con EBS en SleakOps? - -Para configurar y gestionar volúmenes utilizando EBS dentro de SleakOps, consulta la [documentación de volúmenes](/docs/project/volumes). Esta guía proporciona instrucciones sobre cómo crear y gestionar volúmenes EBS para satisfacer los requisitos de almacenamiento de tus aplicaciones. -
- -
- - ### ¿Cómo utilizo volúmenes EBS en mis propios charts? - -Para usar volúmenes EBS, debes pasar al archivo de valores del chart el nombre de la 'StorageClass' como 'default-sc'. - -Puedes verificar tus StorageClasses actuales con: -``` -kubectl get storageclass --all-namespaces -``` -
- -
- - ### ¿Cuándo debo usar EBS? - -Debes usar EBS cuando necesites un volumen que solo se monte en un pod, por ejemplo, una base de datos que se ejecute en el clúster sin réplicas. -
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/efs.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/efs.mdx deleted file mode 100644 index 2026be848..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/efs.mdx +++ /dev/null @@ -1,66 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# EFS (Elastic File System) - -En SleakOps, AWS EFS (Elastic File System) se utiliza principalmente para gestionar los volúmenes de los Proyectos. EFS ofrece un sistema de archivos escalable y elástico que puede montarse en múltiples instancias EC2, permitiendo que los pods de un clúster de Kubernetes compartan el mismo sistema de archivos de manera eficiente. - -## Preguntas Frecuentes - -
- -### ¿Qué es AWS EFS? - -[AWS EFS ](https://aws.amazon.com/efs/) es un servicio de almacenamiento en la nube de AWS que proporciona almacenamiento compartido y escalable para aplicaciones y servicios. Es ideal para cargas de trabajo que requieren acceso concurrente a un sistema de archivos común entre diferentes servicios. -
- -
- -### ¿Cómo se utiliza EFS en SleakOps? - -En SleakOps, EFS se utiliza para los volúmenes de los Proyectos. Cada Proyecto puede tener uno o más volúmenes, que se implementan como sistemas de archivos EFS dentro del clúster EKS, proporcionando almacenamiento compartido al que pueden acceder diferentes servicios y pods. - -
- -
- -### ¿Cuáles son los beneficios de usar EFS? - -EFS ofrece varias ventajas, convirtiéndolo en una opción poderosa para almacenamiento compartido en aplicaciones distribuidas: -- **Escalabilidad**: Escala automáticamente a medida que se agregan o eliminan archivos. -- **Alta disponibilidad**: Diseñado para ser altamente disponible y duradero, con datos replicados en múltiples zonas de disponibilidad. -- **Acceso concurrente**: Varias instancias EC2 pueden montar el mismo sistema de archivos EFS simultáneamente, soportando cargas de trabajo que requieren acceso concurrente. -
- -
- -### ¿Qué es la política de retención de EFS en SleakOps? - -SleakOps aplica una política de retención para los volúmenes EFS, lo que evita que se elimine un volumen EFS en AWS cuando se elimina un volumen de SleakOps. Esto garantiza la persistencia de los datos incluso si el volumen se desvincula del clúster. -
- -
- -### ¿Cómo configuro volúmenes con EFS en SleakOps? - -Para configurar y gestionar volúmenes con EFS dentro de SleakOps, sigue las instrucciones en la [documentación de volúmenes](/docs/project/volumes). Esta guía cubre la creación y gestión de volúmenes para tus Proyectos y la configuración de ajustes de EFS dentro de tu clúster. -
- - -
- -### ¿Cómo utilizo volúmenes EFS en mis propios charts? - -Para usar volúmenes EFS, debes pasar al archivo de valores del chart el nombre de la 'StorageClass' como 'efs-sc-delete' o 'efs-sc-retain', dependiendo de la [política de retención ](https://kubernetes.io/docs/concepts/storage/storage-classes/) que necesites. - -Puedes verificar tus StorageClasses actuales con: -``` -kubectl get storageclass --all-namespaces -``` -
- -
- -### ¿Cuándo debo usar EFS? - -Debes usar EFS cuando necesites un volumen que sea montado en más de un pod, por ejemplo, una aplicación ejecutándose en el clúster con dos réplicas o más. -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/grafana.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/grafana.mdx deleted file mode 100644 index ea26887d1..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/grafana.mdx +++ /dev/null @@ -1,95 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Grafana - -Introducción -En SleakOps, [Grafana ](https://grafana.com/docs/) es un complemento que te permite visualizar métricas sobre el rendimiento y la salud de tu clúster. Grafana se instala junto con [Prometheus ](https://prometheus.io/docs/introduction/overview/) para ayudarte a rastrear métricas como el uso de CPU y memoria, además de otros indicadores clave que te permiten monitorear el estado de tu infraestructura en tiempo real. -Además, Grafana es necesario para usar otros complementos como Loki y OTEL. - -## Preguntas Frecuentes - -
- -### ¿Cuáles son las credenciales predeterminadas de Grafana? - - -Cuando instalas por primera vez el addon de Grafana en SleakOps, las credenciales de inicio de sesión predeterminadas son: - -- **Usuario:** `admin` -- **Contraseña:** `changeme` - -:::warning Cambiar Contraseña Predeterminada -Por razones de seguridad, es muy recomendable cambiar la contraseña predeterminada después de tu primer inicio de sesión. Puedes cambiar tu contraseña directamente desde la interfaz web de Grafana yendo a **Perfil de Usuario** → **Cambiar Contraseña**. -::: -
- -
- -### Acceso a Grafana - -Para acceder a Grafana, primero necesitas estar conectado a la [VPN](/docs/user/vpn), luego simplemente haz clic en el botón de Grafana en la consola de SleakOps. - -:::tip -Las credenciales por defecto de Grafana están documentadas en la FAQ de arriba. Recuerda cambiar la contraseña predeterminada después de tu primer inicio de sesión. -::: - -Serás redirigido a la página de inicio de sesión de Grafana. -Una vez que inicies sesión, la interfaz de Grafana te presentará un panel como este: - - - grafana-dashboard - -
- -
- -### ¿Cómo funciona? - -Grafana, como herramienta de monitoreo, te permite conectar directamente a las fuentes de datos dentro de tu clúster sin necesidad de una configuración extensa. -Al instalar Grafana, SleakOps configura automáticamente la fuente de datos de Prometheus, brindando acceso rápido a métricas esenciales a través de una interfaz centralizada. -Cuando se instalan Loki u OTEL, estas fuentes de datos también se conectan automáticamente. -
- -
- -### Paneles Preconfigurados - -Grafana en SleakOps incluye una serie de paneles prácticos. Estos cubren métricas generales del sistema, ofreciendo vistas organizadas para monitorear diversos aspectos del rendimiento de aplicaciones y el uso de recursos. Los paneles están listos para usar y proporcionan visualizaciones de datos consistentes que simplifican el monitoreo y la gestión continua del sistema. -SleakOps incluye los siguientes paneles para monitorear asignaciones de recursos: -- Kubernetes / Compute Resources / Cluster -- Kubernetes / Compute Resources / Namespaces (Pods) -- Kubernetes / Compute Resources / Namespaces (Workloads) -- Kubernetes / Compute Resources / Nodes (Pods) - -Y estos para monitoreo de redes: -- Kubernetes / Networking / Cluster -- Kubernetes / Networking / Namespaces (Pods) -- Kubernetes / Networking / Namespaces (Workloads) -Además, incluye otros paneles como CoreDNS, que monitorean el sistema interno de DNS y descubrimiento de servicios. - -Todos estos paneles son útiles para monitorear la salud de tu clúster y las aplicaciones que se ejecutan en él, especialmente para redimensionar Wrokloads, investigar si se necesitan más réplicas o si los recursos están bien asignados. -Los paneles son personalizables, permitiéndote ajustar el diseño y los datos mostrados según tus necesidades específicas de monitoreo. También puedes crear tus propios paneles. -
- -
- -### Visualización de Recursos de Despliegues - -Para observar los recursos utilizados por un despliegue, navega al panel de monitoreo de recursos en Grafana. -Una vez que inicies sesión, ve a: - -**Inicio -> Dashboards -> Kubernetes / Compute Resources / Namespace (Pods)** - -Este panel está configurado para mostrar datos en tiempo real sobre el uso de CPU, memoria y disco, permitiéndote rastrear y gestionar los recursos asignados a cada despliegue dentro de tu clúster. - - - grafana-dashboard-for-resources - -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/index.mdx deleted file mode 100644 index 07943f6c8..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/index.mdx +++ /dev/null @@ -1,46 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Addons - -En SleakOps, los Add-ons mejoran la funcionalidad de tu clúster EKS al proporcionar componentes esenciales y opcionales que optimizan operaciones, mejoran el rendimiento y aumentan la visibilidad. Los Add-ons esenciales incluyen herramientas para monitoreo, gestión de DNS, balanceo de carga y aprovisionamiento inteligente de nodos, asegurando que tu clúster sea robusto y eficiente. - - -## Preguntas Frecuentes - -
- -### ¿Cuáles son los Add-ons esenciales? - -Por defecto, SleakOps incluye en tu infraestructura: - -- **Metric Server**: SleakOps instala el Metric Server para recopilar métricas del clúster y a nivel de nodos, permitiendo el monitoreo del rendimiento y decisiones informadas sobre escalado. -- **External-DNS**: SleakOps despliega External-DNS para la gestión automática de registros DNS, asegurando conectividad sin problemas con nombres de dominio amigables. -- **Load Balancer Automático**: SleakOps aprovisiona balanceadores de carga automáticamente, distribuyendo el tráfico de manera eficiente y manteniendo alta disponibilidad. -- **Despliegue de Karpenter**: SleakOps implementa Karpenter para el aprovisionamiento inteligente de nodos, escalando tu clúster según las necesidades reales de recursos para optimizar el rendimiento. -
- -
- -### ¿Qué Add-ons opcionales están disponibles? - -- **Grafana**: Visualiza y analiza datos con los tableros de Grafana, facilitando el monitoreo del rendimiento del sistema y la resolución de problemas. Ideal para rastrear el uso de memoria y CPU de las aplicaciones. -- **LOKI**: Usa Loki para la agregación de logs rentable. Simplifica la gestión de logs etiquetando flujos de logs sin indexar el contenido, ideal para navegar y monitorear logs de aplicaciones. -- **Kubecost**: Obtén información en tiempo real sobre los costos de la nube en Kubernetes con Kubecost. Este Add-on te ayuda a monitorear y reducir gastos en los proyectos de tu clúster. -- **Prometheus**: SleakOps implementa Prometheus para monitoreo y alertas, proporcionando información detallada sobre el rendimiento del clúster y la utilización de recursos. -- **OTEL**: Usa OpenTelemetry para recolectar y analizar trazas distribuidas, permitiéndote monitorear y optimizar el rendimiento de aplicaciones en tu clúster. -- [**EFS Controller**](./addons/efs): El EFS Controller permite gestionar volúmenes de EFS dentro de tu clúster EKS, proporcionando almacenamiento escalable y compartido para tus aplicaciones. Para más detalles, consulta la [documentación de EFS](/docs/cluster/addons/efs). -- [**EBS Controller**](./addons/ebs): El EBS Controller permite gestionar volúmenes de EBS dentro de tu clúster EKS, proporcionando almacenamiento de bloques persistente para tus aplicaciones. Para más detalles, consulta la [documentación de EBS](/docs/cluster/addons/ebs). -
- -
- -### ¿Cómo configuro un Add-on? - -Para configurar un Add-on, sigue estos pasos: -1. Ve a la sección Add-ons en la sección [Cluster](../cluster). -2. Selecciona el Add-on deseado de la lista de opciones disponibles. -3. Configura los ajustes del Add-on según sea necesario. -4. Haz clic en "Deploy" para instalar el Add-on en tu clúster EKS. - -Para instrucciones más detalladas, consulta la [guía de configuración de Add-ons](/docs/cluster/addons). -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/kubecost.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/kubecost.mdx deleted file mode 100644 index 23a9cf968..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/kubecost.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -sidebar_label: Kubecost -pagination_back: cluster/addons/grafana -pagination_next: environment/index ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Kubecost: Monitoreo de Costos del Clúster - -Introducción [Kubecost ](https://docs.kubecost.com/) es una herramienta esencial de gestión de costos integrada en SleakOps que proporciona visibilidad detallada de los costos de tu clúster de Kubernetes. Te ayuda a comprender los gastos de tu clúster desglosándolos por namespaces, despliegues y workloads individuales. - -La mejor manera de leer la información que proporciona Kubecost es a través de su interfaz web, a la cual puedes acceder desde el detalle del clúster. - -El panel principal de Kubecost muestra los costos distribuidos por Tiempo y Namespace. - - kubecost-main-dashboard - - -## Preguntas Frecuentes - -
- -### ¿Qué significa la métrica __idle__? - -El valor '__idle__' que se muestra en todas las métricas de Kubecost indica cuánto de la capacidad de todas las opciones filtradas no se está utilizando. Este valor debe ser analizado cuidadosamente, ya que gran parte de esta capacidad "idle" puede corresponder a un nodo que aún no está completamente asignado o que debería estar disponible para tus workloads. -
- -
- -### ¿Debería preocuparme si el valor __idle__ es muy alto? - -No necesariamente. Podrías optimizar este valor reduciendo las solicitudes de CPU y Memoria de las [Workloads](/docs/project/workload) desplegadas en tu Proyecto. Sin embargo, ten en cuenta que gran parte de esta capacidad está asignada como un límite máximo para la utilización de recursos, incluso si no se está usando. Esto proporciona espacio para el escalado interno de cada workload en caso de ser necesario. Por otro lado, muchas de estas workloads son críticas para el clúster, por lo que tendrán una capacidad "idle" para permitirles escalar libremente. -
- -
- -### ¿Puedo revisar un Namespace de manera más detallada? - -Kubecost permite un análisis granular de los costos. Por ejemplo, además de los costos por Namespace, puedes profundizar haciendo clic en el Namespace y analizar los costos de los pods, despliegues y otros elementos asignados a él. -
- -
- -### ¿Puedo analizar algo más aparte de los Namespaces? - -Sí. Desde el panel principal puedes analizar específicamente los costos de un Nodo como entidad individual. También permite revisar los costos de almacenamiento que se están utilizando. Por ejemplo, para un nodo específico podrías ver esto: - - kubecost-node-costs - -
- -
- -### ¿Kubecost tiene alguna función para analizar costos de red? - -En este momento, SleakOps ofrece la capacidad de habilitar 'NetworkCosts', una función de Kubecost que estima el costo del tráfico de red de cada workload. Esta función es una excelente opción si deseas analizar más profundamente el tráfico de red del clúster. Puede habilitarse en el formulario de instalación de Kubecost: - - kubecost-installation-form - -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/loki.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/loki.mdx deleted file mode 100644 index d52d8765d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/loki.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -sidebar_label: Loki -pagination_back: cluster/addons/grafana -pagination_next: cluster/addons/kubecost ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Loki - -Introducción -[Loki ](https://grafana.com/oss/loki/) es un Addon que te permite almacenar y consultar logs de los contenedores desplegados dentro del clúster. Loki depende de [Grafana ](/docs/cluster/addons/grafana), ya que SleakOps lo utiliza como visor de logs. Es una herramienta crucial para la resolución de problemas, ya que puede almacenar los logs de todo lo que ocurre en el clúster, lo cual es útil para el análisis de las causas raíz de problemas en tus aplicaciones o en cualquier recurso asignado dentro del clúster. - - - loki-log-explorer - - -## Preguntas Frecuentes - -
- -### ¿Qué paneles me permiten leer logs? - -Actualmente, SleakOps proporciona dos paneles para consultar los logs recolectados por Loki: -- **Log Explorer**: Es un panel simple que te permite filtrar por Namespace, Pod, Contenedor y Stream, donde puedes elegir entre 'stdout' y 'stderr'. También te permite buscar expresiones mediante el campo 'Search Query' en la parte superior. -- **Container Log Dashboard**: Similar al anterior, pero más orientado a analizar casos complejos. Es más lento porque requiere más procesamiento, y para consultas generales no será necesario. -
- -
- -### ¿Cuál es la mejor manera de usar Loki? - -Minimizar el rango de tiempo que se consulta es la mejor forma de revisar logs de manera rápida y sin errores, ya que este parámetro tiene la mayor influencia en el peso de la respuesta. Recomendamos primero obtener una visión general de cuándo ocurrió el problema y luego buscar en Loki los logs de un rango de tiempo más específico, ya que, generalmente, la cantidad de logs puede ser muy alta. - -Ten en cuenta que Loki utiliza pequeñas unidades de procesamiento para lectura, escritura y como controlador (backend), por lo que las consultas grandes pueden ser lentas si no hay suficientes réplicas de lectura o capacidad de procesamiento. Esto se puede modificar mediante SleakOps, pero también incrementará los costos. -
- -
- -### ¿Cómo puedo modificar la capacidad de procesamiento de Loki? - -SleakOps te permite modificar la capacidad de procesamiento de Loki a través de la configuración del Addon. Una forma de aumentar su capacidad es modificando la cantidad de réplicas desplegadas. - - loki-replicas-configuration - -
- -
- -### ¿Cómo captura y almacena logs Loki? - -Loki recolecta logs de cada nodo del clúster y, por lo tanto, de cada contenedor que se ejecuta en él. Para lograr esto, SleakOps utiliza Promtail, que es el colector de logs predeterminado para Loki. Por esta razón, cada nodo del clúster tendrá una instancia de Promtail desplegada, encargada de recopilar y enviar los logs a la instancia de escritura de Loki, que después de un cierto período los transfiere a S3 para almacenamiento a largo plazo. -
- -
- -### ¿Cómo es el proceso de recolección de logs? - -El colector de logs, Promtail, recopila y transmite a Loki todos los logs generados a través de 'stdout' o 'stderr' de cada contenedor en ejecución en el clúster. -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/otel.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/otel.mdx deleted file mode 100644 index 103ddb813..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/otel.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -sidebar_label: Open Telemetry -pagination_back: cluster/addons/grafana -pagination_next: cluster/addons/kubecost ---- -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Open Telemetry - -In Sleakops [Opentelemetry ](https://opentelemetry.io/) is an addon that enables you to understand the internal state of a system by examining its telemetry data, which includes traces and metrics. Opentelemetry is installed alongside [Prometheus ](https://prometheus.io/docs/introduction/overview/) to store valuable metrics about the system and [Grafana ](https://grafana.com/docs/) to visualize the data. - -All OpenTelemetry data is accesible through Grafana. Check [our Grafana documentation](/docs/cluster/addons/grafana) to learn more about our implementation. - - -## FAQs -
- - ### **How it works** - -In order to use OpenTelemetry, you need to have a project instrumented with OpenTelemetry. Sleakops will deploy the necessary resources to collect and store the data. -Instrumentation is the process of adding code to your application to collect telemetry data. OpenTelemetry provides libraries to instrument your application in a variety of languages. -Also Sleakops offers Autoinstrumentation for some languages, learn more about it in the section Autoinstrumentation. -
- -
- - ### **Traces and Metrics** - -Telemetry data consist of three main components: traces, metrics and logs. For logs Sleakops offers [Loki](/docs/cluster/addons/loki). Traces are the path of a request through the system, while metrics are the values of the system at a given time. - -The OpenTelemetry addon collects traces from the pods running your project and sends them to the OpenTelemetry collector. The collector stores the traces throw [Tempo ](https://grafana.com/oss/tempo/). Traces could be visualized in Grafana. -Also the collector generates metrics via the [SpanMetrics Connector ](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/connector/spanmetricsconnector/README.md) and stores them in Prometheus. - -A dashboard is available in Grafana for every project that gets instrumented. -
- - -
- - ### Using the Addon - -Let's dive in with a view of the OpenTelemetry dashboard. First three metrics are Request rates, Error rates and Durations, or RED metrics. These metrics are the most important to monitor the health of your application. -Then we see a table that list Top operations (endpoints) and their error rate as well. - - otel-dashboard - - - otel-dashboard-p2 - -Tipically the dashboard gives a quick look to problematic endpoints, application performance bottlenecks, as well as the overall health of the application. -
- -
- - ### Autoinstrumentation - -Sleakops offers autoinstrumentation for some languages. This means that Sleakops will automatically instrument your project with OpenTelemetry. This is done by deploying an init container alongside your project. The sidecar container will collect the telemetry data and send it to the OpenTelemetry collector. -
- -
- - ### Manual instrumentation - -Manual instrumentation resolves the implementation through code of OpenTelemetry in your project. This is done by adding the OpenTelemetry libraries to your project and adding the necessary code to collect the telemetry data. Sleakops presents the endpoint where the telemetry data should be sent. -
- -
- - ### What does Sleakops install when installing OpenTelemetry - -The stack deployed when the addon is installed is the following: -- [OpenTelemetry Operator ](https://opentelemetry.io/docs/kubernetes/operator/) -- [OpenTelemetry Collector ](https://opentelemetry.io/docs/collector/) Custom resource (CRD) -- [OpenTelemetry Instrumentation ](https://opentelemetry.io/docs/kubernetes/operator/automatic/) Custom resource (CRD) for every autoinstrumentated project -- [Tempo ](https://grafana.com/oss/tempo/) with a frontend, and caching enabled -- S3 Bucket as Tempo Backend - -
- - - ## Start using OpenTelemetry - -To start using OpenTelemetry, you need to install the addon. Then go to the Project list page, activate the project Instrumentation using the small white icon at the left of the name of the project. - - instrumentation-options - -These are the options you can choose from: -| Option | Description | -| ------ | ----------- | -| Enabled | Enable or disable instrumentation on this proyect. | -| Autoinstrumentation | Opt for autoinstrumentation. Read more on Autoinstrumentation and Manual Instrumentation | -| Language | If autoinstrumentation is enabled, this option marks the language of the project. Currently GO, Java, NodeJS, Python and DotNet are available. | -| Sample Rate | If autoinstrumentation is enabled, this option marks the sampling rate, where 0 is none and 1 is all the traces. | - - - -Projects that are instrumented are visible in the Project list page. Marked with a green icon, as in the image: - - project-list-with-instrumented-app - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/prometheus.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/prometheus.mdx deleted file mode 100644 index 19cca90d7..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/addons/prometheus.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -sidebar_label: Prometheus -pagination_back: cluster/addons -pagination_next: cluster/addons/grafana ---- - -import Zoom from "react-medium-image-zoom"; -import { FiExternalLink } from "react-icons/fi"; - -# Prometheus: Sistema de Monitoreo - -[Prometheus ](https://prometheus.io/) es un sistema de monitoreo utilizado para recopilar métricas de todas las cargas de trabajo computacionales de Kubernetes. Está enfocado en métricas de utilización de recursos y rendimiento de aplicaciones. -Prometheus funciona como un Addon intermediario, ya que sus componentes son ampliamente utilizados por otros Addons como Grafana, Kubecost, OpenTelemetry, entre otros. - -Utiliza el controlador **EBS CSI Driver** para gestionar un volumen EBS, evitando la pérdida de métricas cuando el clúster reorganiza sus cargas de trabajo. Este Addon es una dependencia de Prometheus y se instala automáticamente junto con él. - -## Preguntas Frecuentes - -
- -### ¿Prometheus almacena métricas? - -Prometheus tiene dos unidades de almacenamiento relacionadas: -- Depende del Addon [EBS CSI Driver ](/docs/cluster/addons/ebs) para el almacenamiento a corto plazo. -- Utiliza S3 para almacenamiento a largo plazo. Este S3 se crea en tu cuenta en paralelo con Prometheus. -
- -
- -### ¿Cómo almacena SleakOps las métricas de Prometheus? - -Prometheus no se encarga directamente de enviar métricas a S3; esto lo realiza una entidad relacionada llamada **Thanos**. -
- -
- -### ¿Puedo usar Prometheus de forma independiente? - -Su propósito principal es recopilar métricas, pero también incluye un frontend que se puede consumir mediante el reenvío de puertos (port-forwarding) desde su Pod para realizar consultas específicas a sus datos o visualizar algunas métricas. Sin embargo, es mucho más fácil y cómodo verlas con Grafana. -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx deleted file mode 100644 index d82651ca8..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx +++ /dev/null @@ -1,185 +0,0 @@ ---- -sidebar_position: 7 -title: Cluster -pagination_next: environment/index ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Clúster - -En SleakOps, los clústeres de Kubernetes son esenciales para implementar y ejecutar tus aplicaciones de manera efectiva. - -Un clúster es un grupo de computadoras o instancias interconectadas que trabajan juntas como una sola unidad para realizar tareas específicas o ejecutar aplicaciones. - -En el contexto de [AWS Elastic Kubernetes Service](https://docs.aws.amazon.com/eks/) (EKS), un clúster está compuesto por una o más instancias EC2 (Nodos) que forman la base para ejecutar aplicaciones en contenedores utilizando la orquestación de Kubernetes. - -Para obtener más información sobre los clústeres de Kubernetes, consulta [la documentación de Kubernetes](https://kubernetes.io/docs/concepts/overview/components/). - -## Preguntas Frecuentes - -
- - -### ¿Cuáles son los beneficios de tener un clúster? - - -Los clústeres te permiten implementar múltiples instancias de la misma aplicación sin esfuerzo, asegurando que si una instancia falla, otras puedan asumir el control de inmediato. Además, los clústeres ofrecen capacidades de escalado automático, ajustando automáticamente el número de nodos según fluctúe el tráfico, lo que garantiza alta disponibilidad y un rendimiento óptimo. - -También proporcionan una excelente manera de aislar tu entorno de producción de tu entorno de pruebas. -
- -
- - -### ¿Cómo maneja SleakOps los clústeres? - - -SleakOps te ofrece la flexibilidad y el control necesarios para crear un clúster EKS que se alinee exactamente con tus requisitos. - -Para definir cómo crear tu infraestructura, consulta: [Diseñando tu Infraestructura: Esquema Simple vs. Esquema Múltiple](/docs/provider/schemas). -
- -
- - -### ¿Qué sucede cuando se crea un Clúster en SleakOps? - - -SleakOps crea un grupo de Node Pools que te permitirá ejecutar tus aplicaciones utilizando la orquestación de Kubernetes según tus necesidades. Consulta [Node Pools](/docs/cluster/nodepools). -
- -
- - -### ¿Qué es Karpenter? - - -En el proceso de creación de tu clúster EKS, la provisión de nodos se gestiona de manera eficiente con la tecnología avanzada de Karpenter. Karpenter provisiona automáticamente los nodos con los recursos necesarios y escala el clúster según las demandas de la aplicación, eliminando preocupaciones sobre la desprovisión. A medida que cambian las cargas de trabajo, Karpenter ajusta dinámicamente los nodos y recursos, optimizando el rendimiento y los costos. Consulta [Karpenter Web](https://karpenter.sh/). -
- -
- - -### ¿Cómo elegir los tipos de instancias correctos para mi clúster? - - -Elegir los tipos de instancias correctos depende de los requisitos de tu aplicación, los objetivos de optimización de costos y las necesidades de disponibilidad. SleakOps proporciona diferentes node pools (Spot, On-Demand, Reserved) para ayudarte a optimizar costos mientras mantienes el rendimiento. Para obtener orientación detallada sobre tipos de instancias y dimensionamiento de clústeres, consulta [Tipos de Instancias y Manejo de Nodos](/docs/cluster/nodepools/instance-types). -
- -
- - -### ¿Cómo maneja SleakOps las actualizaciones de clúster? - - - -1. Notificamos a los usuarios sobre una nueva versión aproximadamente con 1 mes de anticipación. -2. Actualizamos los clústeres de un grupo de clientes seleccionados. -3. Actualizamos todos los clústeres que no están marcados como de producción. -4. Actualizamos todos los clústeres. -
- -
- - -### ¿Cómo controlo los gastos del clúster? - - -SleakOps te permite ver todos los gastos de tus clústeres en un solo lugar, clasificados por cuenta, recursos y fechas. - -Accede a _Clusters_, selecciona uno y haz clic en el botón: $ -
- -
- - -### ¿Cómo monitoreo mi clúster? - - -Puedes monitorear la actividad de tu clúster accediendo a _Clusters_ y haciendo clic en el botón correspondiente: - - - monitoreo-cluster - -
- -
- - -### ¿Puedo conectar un servicio de Staging con uno de Producción si están en diferente clúster? - - -Bajo un esquema de **multi-cuenta**, los entornos se encuentran en clústeres y cuentas de AWS separadas (Prod y Dev). En esta configuración, están totalmente aislados y no existe peering entre sus VPCs. Por el contrario, en caso de utilizar una **cuenta única**, ambos entornos conviven dentro del mismo clúster. - -La **buena práctica** es que permanezcan desconectados para garantizar el aislamiento total de los datos. El uso de un mismo clúster o de un esquema único (_single schema_) conlleva riesgos críticos de seguridad y estabilidad: - -- **Corrupción de Datos:** Un error en el código de Staging podría ejecutar comandos accidentales (como `DROP TABLE` o `DELETE`) que impacten directamente en la base de datos de Producción. -- **Compromiso de Credenciales:** Si un atacante compromete el entorno de Staging (que suele tener políticas de acceso más flexibles), podría escalar privilegios y acceder a los secretos o llaves maestras de Producción. - -
- -## Creemos tu primer Clúster en SleakOps - -:::warning Crear un clúster te va a generar costos en AWS: - -Tarifa fija del servicio EKS: USD 0.10 por hora - -- Costos variables por los recursos que uses (EC2, almacenamiento, etc.) -- Costos adicionales por servicios relacionados (balanceadores de carga, snapshots, etc.) -::: - -### 1. Selecciona la cuenta donde se creará el clúster - -Para más información sobre las cuentas, consulta [Cuentas](/docs/provider/accounts). - -
- seleccion-cuenta-provider -
-

En el panel izquierdo, verás un selector con los nombres de las cuentas. Selecciona la que utilizarás según cómo decidas gestionar tus clústeres y [entornos](/docs/environment).

-

Sugerimos seguir una configuración de Esquema Múltiple, que se alinea con las mejores prácticas. Para seguir este esquema, selecciona la cuenta de desarrollo para crear el clúster para tus entornos de pruebas y la cuenta de producción para el clúster de producción.

-

Consulta [Diseñando tu Infraestructura: Esquema Simple vs. Esquema Múltiple](/docs/provider/schemas) para más información.

-
-
- -### 2. Navega a la sección Crear Clúster - -En el _Panel Izquierdo_, accede a la opción _Clusters_ y luego, en la esquina superior derecha, haz clic en el botón _Crear_. - - - dashboard-cluster - - -### 3. Configura tu Clúster - -Con tu _Cuenta_ seleccionada, accederás al siguiente formulario: - - - crear-cluster - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu clúster. | -| Descripción | Espacio opcional para describir lo que incluye este clúster. | -| **Tipo de Arquitectura** | Selecciona el tipo de arquitectura a utilizar durante la creación de tus instancias: (64-Bit) ARM o (64-Bit) X86, según tus necesidades de rendimiento y compatibilidad. Luego podrás crear nuevas instancias usando una arquitectura diferente. | -| Producción | **Configuración de Alta Disponibilidad (HA)**: Cuando está habilitada, esta configuración transforma tu clúster en un entorno listo para producción distribuyendo el clúster EKS en múltiples Zonas de Disponibilidad (AZs). Esto proporciona redundancia y tolerancia a fallos, asegurando operaciones ininterrumpidas incluso si una AZ experimenta problemas. Los clústeres de producción también se benefician de monitoreo mejorado, respaldos automatizados y asignación optimizada de recursos para cargas de trabajo críticas. | -| **Memoria Máxima** | Define la memoria máxima que el clúster puede usar a medida que los servicios escalan. El autoscaler provisiona instancias según la demanda, pero esto no significa que el clúster siempre usará la memoria máxima; simplemente define el límite superior para el autoscaler. | -| **CPU Máxima** | Define la CPU máxima que el clúster puede usar a medida que los servicios escalan. El autoscaler provisiona instancias según la demanda, pero esto no significa que el clúster siempre usará la CPU máxima; simplemente define el límite superior para el autoscaler. | - -Una vez que completes el formulario, haz clic en _Enviar_ para iniciar la creación del clúster en la cuenta seleccionada de AWS. - -Este proceso creará un Clúster con cinco Node Pools por defecto. Consulta [Node Pools](/docs/cluster/nodepools). diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/creating-nodepool.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/creating-nodepool.mdx deleted file mode 100644 index 61903e5c9..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/creating-nodepool.mdx +++ /dev/null @@ -1,45 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Creando un Node Pool - -### 1. Accede a la configuración de tu clúster para acceder a la sección de Node Pools - -Desde la lista de clústeres, selecciona uno y accede a la opción de Configuración. Luego, haz clic en la caja de Node Pools. - - - seccion-configuracion-cluster - - -### 2. Haz clic en Crear - -En la sección de Node Pools, si tienes permisos, encontrarás la opción *Crear* en la esquina superior derecha. Haz clic en ella. - -Ten en cuenta que la cantidad de Node Pools por clúster puede estar limitada según tu plan. - - - seccion-nodepool-cluster - - -### 3. Configura tu Node Pool - -En el modal de creación de Node Pool, completa los siguientes campos: - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Ingresa el nombre de tu elección para tu Node Pool. No puede repetirse dentro de un clúster. | -| **Tipo de Instancia** | Selecciona uno o más tipos de instancias (ej. t3.medium, m5.large, c5.xlarge) basado en tus requisitos de cómputo. Puedes elegir múltiples tipos de instancias para proporcionar flexibilidad al autoscaler para provisionar la instancia disponible más rentable. | -| **Tipo de Nodo** | Selecciona uno o más modelos de facturación para tus instancias. Puedes elegir múltiples opciones, y el sistema las priorizará en el siguiente orden: **Reserved** (mejor precio con compromiso) → **Spot** (mejor precio sin compromiso) → **On Demand** (precio más alto pero más flexible). Consulta [**¿Cuáles son los diferentes tipos de Node Pools?**](/docs/cluster/nodepools). | -| **Tipo de Arquitectura** | Selecciona el tipo de arquitectura a utilizar durante la creación de tus instancias: (64-Bit) ARM o (64-Bit) X86, según tus necesidades de rendimiento y compatibilidad. Luego podrás crear nuevas instancias usando una arquitectura diferente. | -| **Límite de Memoria** | Esto establece la memoria máxima que el clúster puede usar a medida que los servicios escalan. El autoscaler provisiona instancias basado en la demanda, pero esto no significa que el clúster siempre use la memoria máxima; simplemente define el límite superior para el autoscaler. | -| **Límite de CPU** | Esto establece la CPU máxima que el clúster puede usar a medida que los servicios escalan. El autoscaler provisiona instancias basado en la demanda, pero esto no significa que el clúster siempre use la CPU máxima; simplemente define el límite superior para el autoscaler. | -| **Almacenamiento** | Configurado por defecto en 20GB, puedes modificarlo según tus necesidades. | -| **(Por Nodo) Memoria Mínima** | Define la cantidad mínima de memoria que debe estar disponible en cada nodo antes de que el autoscaler considere el nodo como "utilizado". Esta configuración ayuda a prevenir el sobre-aprovisionamiento asegurando que los nodos mantengan un buffer mínimo de memoria para procesos del sistema y picos inesperados de carga de trabajo. | -| **(Por Nodo) CPU Mínima** | Define la cantidad mínima de CPU que debe estar disponible en cada nodo antes de que el autoscaler considere el nodo como "utilizado". Esta configuración ayuda a prevenir el sobre-aprovisionamiento asegurando que los nodos mantengan un buffer mínimo de CPU para procesos del sistema y picos inesperados de carga de trabajo. | - -Una vez que hayas completado el formulario, haz clic en *Crear* para iniciar la creación del Node Pool en el clúster seleccionado. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/index.mdx deleted file mode 100644 index 865e1f24d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/index.mdx +++ /dev/null @@ -1,92 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Node Pools - -Un Node Pool es esencialmente una colección de nodos dentro de un clúster de Kubernetes que tienen configuraciones similares, como el mismo tipo de máquina, sistema operativo y tamaño de instancia. - -Todos los nodos en un Node Pool están configurados de manera idéntica, lo que facilita la gestión y el mantenimiento de la consistencia en todo tu clúster. Esto es especialmente útil al escalar el clúster, ya que los nodos adicionales añadidos al pool tendrán las mismas especificaciones. - -Cuando se crea un clúster en SleakOps, se genera un conjunto de Node Pools basado en el tipo de arquitectura que seleccionaste durante la configuración del clúster. - -- **sleakops-build-arm64 & sleakops-build-amd64:** Node Pools predeterminados para ejecutar correctamente tus builds. No se pueden editar ni eliminar. -- **sleakops-core:** Garantiza la escalabilidad de los componentes críticos y los complementos del clúster. -- **ondemand-arm/amd:** Listos para que los uses. -- **spot-arm/amd:** Listos para que los uses. - -:::warning -No elimines manualmente los siguientes Node Pools: sleakops-build-arm64, sleakops-build-amd64, sleakops-core. -::: - - - esquema-ejemplo-nodepool - - -## Preguntas Frecuentes - -
- -### ¿Cuáles son los diferentes tipos de Node Pools? - -- **Reserved:** Son instancias a las que te comprometes a usar por un período específico (1 o 3 años) a cambio de ahorros significativos en costos (hasta 75% menos que el precio On-Demand). Proporcionan el mejor precio con compromiso y son ideales para: - - **Cargas de Trabajo Predecibles:** Aplicaciones con patrones de uso estables y predecibles que pueden beneficiarse de un compromiso a largo plazo. - - **Entornos de Producción:** Aplicaciones críticas que requieren capacidad garantizada y optimización de costos. - - **Optimización de Costos:** Cargas de trabajo donde puedes comprometerte al uso por períodos extendidos para maximizar los ahorros. - -- **Spot:** Son instancias que aprovechan la capacidad sobrante en los centros de datos del proveedor de la nube. Están disponibles con un descuento significativo en comparación con las instancias On-Demand, pero conllevan el riesgo de ser terminadas si el proveedor necesita la capacidad de nuevo. Son ideales para: - - **Aplicaciones Sin Estado:** Adecuadas para cargas de trabajo que pueden tolerar interrupciones, como trabajos de procesamiento por lotes, entornos de prueba y computación distribuida. - - **Cargas de Trabajo Sensibles al Costo:** Ideales para tareas donde los ahorros en costos son más importantes que la disponibilidad. - -- **On-Demand:** Son instancias en un clúster de Kubernetes que operan con un modelo de precios fijo, proporcionando acceso confiable a recursos de cómputo sin riesgo de interrupciones. Se pueden usar para: - - **Tareas Críticas:** Aplicaciones que requieren tiempo de actividad constante, como bases de datos, sistemas financieros u otros servicios críticos. - - **Tareas de Larga Duración:** Tareas que no pueden interrumpirse sin consecuencias significativas. - -**Orden de Prioridad:** Cuando seleccionas múltiples tipos de nodos, el sistema los priorizará automáticamente en el siguiente orden para optimizar costos: **Reserved** (mejor precio con compromiso) → **Spot** (mejor precio sin compromiso) → **On-Demand** (precio más alto pero más flexible). - -Para obtener orientación detallada sobre cómo elegir los tipos de instancias correctos y evaluar la compatibilidad de aplicaciones, consulta [Tipos de Instancias y Manejo de Nodos](/docs/cluster/nodepools/instance-types). -
- -
- -### ¿Cuántos Node Pools puedo tener? - -El plan base de SleakOps te permite tener tres Node Pools adicionales, además de los Node Pools de build. Si necesitas más, contáctanos. -
- -
- -### ¿Puedo convertir un Node Pool Spot en uno On-Demand y viceversa? - -No puedes convertir directamente un Node Pool Spot en uno On-Demand o viceversa, pero puedes lograr el resultado deseado siguiendo una serie de pasos en SleakOps. Así es como puedes hacer la transición entre tipos de Node Pools: - -1. Crea un Node Pool del nuevo tipo deseado. -2. Actualiza tus Workloads y proyectos para que se ejecuten en el nuevo Node Pool. -3. Elimina el Node Pool anterior si ya no es necesario. -
- -
- -### ¿Puedo convertir un Node Pool ARM en uno X86 y viceversa? - -No puedes cambiar el tipo de arquitectura de un Node Pool, pero puedes lograr el resultado deseado siguiendo una serie de pasos en SleakOps. Así es como puedes hacer la transición entre arquitecturas de Node Pools: - -1. Crea un Node Pool de la nueva arquitectura deseada. -2. Actualiza tus Workloads y proyectos para que se ejecuten en el nuevo Node Pool. -3. Elimina el Node Pool anterior si ya no es necesario. -
- -
- -### ¿Cómo creo un Node Pool? - -Sigue la guía [Creando un Node Pool](/docs/cluster/nodepools/creating-nodepool). -
- -
- -### ¿Cómo gestiono un Node Pool? - -Sigue la guía [Gestionando un Node Pool](/docs/cluster/nodepools/managing-nodepool). -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/instance-types.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/instance-types.mdx deleted file mode 100644 index 659e75f02..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/instance-types.mdx +++ /dev/null @@ -1,84 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Tipos de Instancias y Manejo de Nodos - -En SleakOps, el manejo eficiente de tipos de instancias es crucial para optimizar costos y rendimiento de tus clusters. Esta guía te ayudará a entender los diferentes tipos de instancias disponibles y cómo tomar decisiones informadas sobre su uso. - -## Tipos de Instancias Disponibles - -### 1. Instancias Spot - -Las instancias Spot aprovechan la capacidad no utilizada en los centros de datos de AWS, ofreciendo descuentos significativos (hasta 90% menos que On-Demand) pero con el riesgo de interrupción. - -**Características:** -- **Costo:** Hasta 90% de descuento vs On-Demand -- **Disponibilidad:** Variable, puede ser interrumpida con 2 minutos de aviso -- **Uso ideal:** Aplicaciones tolerantes a fallos, procesamiento por lotes, entornos de desarrollo - -### 2. Instancias On-Demand - -Las instancias On-Demand proporcionan acceso inmediato y confiable a recursos de computación con precios fijos por hora o segundo. - -**Características:** -- **Costo:** Precio fijo, más alto que Spot -- **Disponibilidad:** Garantizada, sin riesgo de interrupción -- **Uso ideal:** Aplicaciones críticas, bases de datos, servicios de producción - -### 3. Instancias Reserved - -Las instancias Reserved ofrecen descuentos significativos (hasta 75%) a cambio de un compromiso de uso por 1 o 3 años. - -**Características:** -- **Costo:** Hasta 75% de descuento con compromiso -- **Disponibilidad:** Garantizada para el período comprometido -- **Uso ideal:** Cargas de trabajo predecibles, entornos de producción estables - -## FAQs - -
- -### ¿Cómo evaluar si mi aplicación funciona en instancias Spot? - - -Para determinar si tu aplicación es compatible con instancias Spot, evalúa los siguientes aspectos: - -**✅ Aplicaciones IDEALES para Spot:** -- **Stateless:** No mantienen estado local crítico -- **Fault-tolerant:** Pueden recuperarse de interrupciones -- **Batch processing:** Tareas que se pueden reiniciar -- **Development/Testing:** Entornos no críticos -- **Microservicios:** Con circuit breakers y retry logic -- **Tested with FIS:** Aplicaciones validadas con [AWS Fault Injection Simulator](https://aws.amazon.com/fis) para probar interrupciones de nodos - -**❌ Aplicaciones NO recomendadas para Spot:** -- **Aplicaciones de tiempo real:** Que requieren latencia constante -- **Procesos largos:** Que no pueden reiniciarse fácilmente -- **Sistemas de pago:** Que requieren alta disponibilidad -
- -
- -### ¿Cuándo debo usar instancias On-Demand? - - -Usa instancias On-Demand en los siguientes escenarios: - -**Aplicaciones Críticas:** -- Sistemas de pago y transacciones financieras -- APIs de alta disponibilidad (99.9%+ SLA) -- Servicios de autenticación y autorización - -**Cargas de Trabajo Específicas:** -- Procesos que no pueden interrumpirse -- Aplicaciones con requisitos de latencia estrictos -- Sistemas legacy que no son fault-tolerant -- Entornos de producción sin redundancia - -**Consideraciones de Costo:** -- Cuando el costo de downtime supera el ahorro de Spot -- Para workloads con patrones de uso impredecibles -- En casos donde la capacidad garantizada es crítica - -
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/managing-nodepool.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/managing-nodepool.mdx deleted file mode 100644 index ca14cc53c..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/nodepools/managing-nodepool.mdx +++ /dev/null @@ -1,50 +0,0 @@ -import Zoom from "react-medium-image-zoom"; - -# Gestionando un Node Pool - -Aquí encontrarás: - -- Cómo actualizar la configuración de un Node Pool. -- Cómo eliminar un Node Pool. - -:::info -Recuerda que los Node Pools de build no pueden ser editados ni eliminados. -::: - -### 1. Accede a la configuración de tu clúster para ingresar a la sección de Node Pools - -Desde la *Lista de Clústeres*, selecciona un Node Pool y accede a la opción de *Configuración*. Luego, haz clic en la caja de *Node Pools*. - -### 2. Selecciona el Node Pool - -
- cluster-nodepool-nodecard -
-

Una vez que hayas seleccionado tu Node Pool, encontrarás las opciones para actualizar y eliminarlo.

-

*Cada Node Pool se muestra con barras de CPU y Memoria que indican cuánta capacidad queda disponible. La barra completa representa la capacidad total del Node Pool, mientras que la porción coloreada indica la capacidad combinada utilizada por todos los proyectos/workloads asociados.*

-
-
- -## Cambiar la configuración de un Node Pool - -### 1. Haz clic en el botón de configuración en la parte superior derecha de la tarjeta del Node Pool - -Actualiza los parámetros en el modal y haz clic en *Guardar*. - - - cluster-nodepool-modifying - - -## Eliminar un Node Pool - -### 1. Haz clic en el botón de papelera en la parte superior derecha de la tarjeta del Node Pool - -
- cluster-nodepool-deletion -
-

Haz clic en Eliminar para confirmar y activar la acción en SleakOps.

-
-
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/cluster/shutdown-cluster.mdx b/i18n/es/docusaurus-plugin-content-docs/current/cluster/shutdown-cluster.mdx deleted file mode 100644 index a39a5e176..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/shutdown-cluster.mdx +++ /dev/null @@ -1,62 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Apagado del Cluster - -Es la capacidad de apagar todos los recursos de tu cluster en un horario programado para evitar incurrir en costos durante ese período de tiempo. -Cuando esta función está activada, podrás encender o apagar tu cluster en cualquier momento, incluso fuera del horario programado que hayas configurado. - -:::warning -Cuando tu cluster está APAGADO, no podrás ejecutar Builds, Deploys u otras acciones que requieran recursos del cluster para ejecutarse. -::: - -### ¿Cómo puedo activar esta funcionalidad? -El Apagado del Cluster debe activarse manualmente en la configuración del cluster, a través de la tarjeta "Apagado Programado". - -shutdown - - -shutdown-config - - -Cuando configures el Apagado del Cluster, estarás creando dos cronjobs: uno para ENCENDER el cluster en el horario programado y otro para APAGARLO. -Los campos de configuración son los siguientes: - -| **Attribute** | **Description** | -| --- | --- | -| **Days** | Los días en los que se ejecutarán los cronjobs de apagado. | -| **Auto Downtime (Local Time)** | La hora a la que se ejecuta la acción de APAGADO. Se muestra en tu hora local. | -| **Auto Uptime (Local Time)** | La hora a la que se ejecuta la acción de ENCENDIDO. Se muestra en tu hora local. | - -Debajo verás un cuadro que muestra las 'Generated Cron Expressions (UTC)', que despliega las expresiones cron de APAGADO y ENCENDIDO para estas dos acciones en horario UTC. - -## ¿Cómo puedo apagar mi cluster en cualquier momento? - -Para apagar un cluster, simplemente haz clic en el botón *Stop* y confirma la acción. - -Esta acción solo puede realizarse en clusters con estado *Activo*. - -:::warning -El apagado requiere que no se estén actualizando Dependencies y que no haya procesos de build o ejecución activos. -::: - -cluster-shutdown-active - -### Encender el cluster - -Para encender un cluster, haz clic en el botón *Play* y confirma la acción. - -Esta acción está disponible para clusters con estado *Apagado Programado* o *Apagado*. - -cluster-shutdown-inactive - -:::info -Las acciones cron que encienden o apagan el cluster según el horario programado seguirán ejecutándose, incluso si lo has encendido o apagado manualmente. -::: \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx b/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx deleted file mode 100644 index 2445740c4..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/connect_to_git.mdx +++ /dev/null @@ -1,235 +0,0 @@ ---- -sidebar_label: Conectar a Git -sidebar_position: 9 ---- - - - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Conectar tu Cuenta Git - -Para aprovechar todo el potencial de SleakOps, necesitarás conectar tu cuenta Git a nuestra plataforma. Esta conexión permite a SleakOps acceder a tus repositorios, habilitando una integración perfecta, despliegues automatizados y una gestión eficiente de tus bases de código. - -SleakOps soporta integración con los siguientes proveedores Git: -- Github -- GitLab (incluidas instancias autohospedadas) -- Bitbucket - -## Preguntas Frecuentes - -
- -### ¿Puedo conectar más de una Cuenta Git?** - -Aún no está permitido. -
- -
- -### ¿Cómo conecto mi cuenta? - -Accede a la sección *Configuración >> Autorizaciones* en SleakOps. Selecciona tu proveedor y concede acceso a SleakOps. Consulta los pasos a continuación. -
- -
- -### ¿Puedo cambiar mi Cuenta Git? - -Sí, puedes hacerlo eliminando la existente y conectando la nueva. Asegúrate de que la nueva cuenta tenga acceso a los proyectos que usas en SleakOps. -
- - -
- -### ¿Cómo desconecto una cuenta? - -Haciendo clic en el botón X junto al proveedor Git. Ten en cuenta que los proyectos actuales continuarán funcionando, pero no podrán recibir actualizaciones una vez que se elimine esta integración. - -Si estás usando GitHub, también necesitarás eliminar la aplicación Sleakops de tu cuenta de GitHub para completar el proceso de eliminación. -
- -## Integraciones - -
- -### Github - - -configurar-github - -
- -
- -### Gitlab - - -configurar-gitlab - -
- -
- -### Bitbucket - - -configurar-bitbucket - -
- -
- -### GitLab Autohospedado - - -Conectar una instancia de GitLab autohospedada requiere crear una aplicación OAuth en tu instalación de GitLab, ya que cada instancia autohospedada tiene una URL y sistema de autenticación únicos. - -#### Requisitos Previos - -- Acceso de administrador a tu instancia de GitLab autohospedada -- Tu instancia de GitLab debe ser accesible desde internet (SleakOps necesita comunicarse con ella) -- Se recomienda encarecidamente usar HTTPS por seguridad - -#### Paso 1: Crear una Aplicación OAuth en Tu Instancia de GitLab - -1. **Acceder a la página de Aplicaciones** - - Navega a tu instancia de GitLab: `https://tugitlab.com/-/profile/applications` - - O ve a: Configuración de Usuario → Aplicaciones - -2. **Crear una nueva aplicación** - - Haz clic en "Agregar nueva aplicación" o "Nueva aplicación" - - Completa la siguiente información: - -| **Campo** | **Valor** | -|-----------|----------| -| **Nombre** | SleakOps (o cualquier nombre descriptivo) | -| **URI de Redirección** | https://api.sleakops.com/api/integrations/self-gitlab/callback/ | -| **Ámbitos** | Selecciona `api` y `offline_access` (requeridos para acceso persistente y renovación automática de tokens) | - -:::warning -La URI de Redirección debe ser **exactamente** como se muestra a continuación (incluyendo la barra final): -``` -https://api.sleakops.com/api/integrations/self-gitlab/callback/ -``` -No modifiques esta URL. -::: - -3. **Guardar la aplicación** - - Haz clic en "Guardar aplicación" o "Enviar" - - Se te mostrarán dos valores importantes: - - **ID de Aplicación** (Client ID) - - **Secreto** (Client Secret) - -:::caution -Copia inmediatamente el ID de Aplicación y el Secreto. El Secreto solo se mostrará una vez y no podrá recuperarse después. -::: - -:::tip -Guarda estas credenciales de forma segura. Si pierdes el Secreto, necesitarás regenerar la aplicación OAuth. -::: - -#### Paso 2: Conectar Tu GitLab Autohospedado a SleakOps - -1. **Navegar a Autorizaciones de SleakOps** - - Inicia sesión en tu [cuenta de SleakOps](https://console.sleakops.com/settings/authorizations/) - - Ve a Configuración → Autorizaciones - -2. **Seleccionar GitLab Autohospedado** - - Haz clic en la opción de integración "GitLab Autohospedado" - -3. **Ingresar los detalles de tu aplicación OAuth** - - **URL de Instancia GitLab**: Ingresa la URL de tu instancia de GitLab (ej., `https://gitlab.tuempresa.com`) - - No incluyas una barra final - - Debe comenzar con `http://` o `https://` - - **ID de Aplicación**: Pega el ID de Aplicación del Paso 1 - - **Secreto de Aplicación**: Pega el Secreto del Paso 1 - -4. **Autorizar SleakOps** - - Haz clic en "Conectar" o "Autorizar" - - Serás redirigido a tu instancia de GitLab - - Revisa los permisos y haz clic en "Autorizar" - - Serás redirigido de vuelta a SleakOps - -5. **Verificar la conexión** - - Una vez redirigido, deberías ver tu cuenta de GitLab autohospedada listada como conectada - - Ahora puedes seleccionar repositorios de tu instancia de GitLab autohospedada al crear proyectos - -#### ¿Qué permisos necesita SleakOps? - -SleakOps requiere dos ámbitos: - -**Ámbito `api`** otorga los siguientes permisos: -- Leer información del repositorio y contenido de archivos -- Crear y administrar ramas -- Crear y actualizar archivos (para despliegues automatizados) -- Crear merge requests -- Acceder a información de commits - -**Ámbito `offline_access`** permite a SleakOps: -- Obtener un refresh token para acceso a largo plazo -- Renovar automáticamente tokens de acceso expirados -- Mantener conexión persistente sin requerir re-autorización - -:::warning -Sin `offline_access`, el token de acceso expirará después de ~2 horas y la integración se romperá hasta ser re-autorizada manualmente. -::: - -Estos permisos son necesarios para que SleakOps pueda clonar tus repositorios, construir imágenes de contenedores, desplegar aplicaciones y administrar infraestructura como código. - -#### Solución de Problemas - -##### La conexión falla con error "URL Inválida" -- Asegúrate de que la URL de tu instancia de GitLab no termine con una barra final -- Verifica que la URL comience con `http://` o `https://` -- Ejemplo: ✅ `https://gitlab.empresa.com` ❌ `https://gitlab.empresa.com/` - -##### La autorización redirige pero la conexión falla -- Verifica que la URI de Redirección en tu aplicación OAuth de GitLab coincida exactamente: `https://api.sleakops.com/api/integrations/self-gitlab/callback/` -- Verifica que el ID de Aplicación y el Secreto sean correctos -- Asegúrate de que ambos ámbitos `api` y `offline_access` fueron seleccionados al crear la aplicación OAuth - -##### Problemas de Red/Firewall -- Asegúrate de que tu instancia de GitLab autohospedada sea accesible desde los servidores de SleakOps -- Si tu GitLab está detrás de un firewall, podrías necesitar agregar las direcciones IP de SleakOps a la lista blanca -- Contacta al soporte de SleakOps para información sobre las IP de la lista blanca - -##### Errores de SSL/Certificado -- Los certificados autofirmados pueden causar problemas de conexión -- Usa un certificado SSL válido de una autoridad certificadora confiable -- Asegúrate de que tu instancia de GitLab tenga una configuración HTTPS adecuada - -
- -## Configurar tu Cuenta Git -### 1. Navega a la sección de autorización de Git -En el Panel Izquierdo, accede a la opción _Configuración_ y luego haz clic en _Autorizaciones_. - - -lista-autorizaciones-git - - -### 2. Selecciona tu Proveedor Git y concede acceso a SleakOps -Haz clic en tu proveedor y sigue los pasos requeridos para cada uno para conceder acceso. - - -lista-autorizaciones-git-raw - - diff --git a/i18n/es/docusaurus-plugin-content-docs/current/domain/delegation.mdx b/i18n/es/docusaurus-plugin-content-docs/current/domain/delegation.mdx deleted file mode 100644 index c71ccd55c..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/domain/delegation.mdx +++ /dev/null @@ -1,467 +0,0 @@ ---- -sidebar_label: Guía de Delegación de Dominios ---- - -# Guía de Delegación de Dominios - -Aprende cómo delegar DNS correctamente para cada nivel de dominio en Sleakops. - ---- - -## Descripción General - -Cuando Sleakops crea una zona alojada, necesitas delegar el dominio actualizando los registros DNS en tu proveedor de dominios (registrador). Esta guía explica el proceso para cada nivel de dominio. - ---- - -## Delegación de Dominio del Proveedor - -### Qué estás delegando -Tu dominio raíz (por ejemplo, `sleakops.com`) a AWS Route 53 a través de Sleakops. - -```mermaid -sequenceDiagram - participant U as Tú - participant S as Sleakops - participant R as Registrador de Dominio - participant AWS as AWS Route 53 - - U->>S: Crear Dominio del Proveedor - S->>AWS: Crear Zona Alojada - AWS-->>S: Devolver 4 Servidores de Nombres - S-->>U: Mostrar Servidores de Nombres - U->>R: Actualizar Servidores de Nombres - R->>AWS: Delegar Autoridad DNS - U->>S: Hacer clic en "Verificar Delegación" - S->>AWS: Verificar Delegación - AWS-->>S: Confirmación - S-->>U: ✅ Delegación Completa -``` - -### Pasos - -1. **Crear el dominio del Proveedor en Sleakops** - - Sleakops crea una zona alojada en AWS Route 53 - - Verás una tabla con 4 registros de servidor de nombres (NS) - -2. **Localizar los servidores de nombres** - -``` -ns-123.awsdns-12.com -ns-456.awsdns-45.net -ns-789.awsdns-78.org -ns-012.awsdns-01.co.uk -``` - - -3. **Actualizar tu registrador de dominio** - - Inicia sesión en tu registrador de dominio (GoDaddy, Namecheap, Google Domains, etc.) - - Busca la configuración DNS o de Servidores de nombres - - Reemplaza los servidores de nombres existentes con los 4 servidores de nombres de AWS de Sleakops - - Guardar cambios - -4. **Verificar delegación** - - Hacer clic en el botón **"Verificar Delegación"** en Sleakops - - Esperar la propagación DNS (puede tomar hasta 48 horas, usualmente más rápido) - - La marca verde indica delegación exitosa - -### Registradores Comunes - -
-GoDaddy - -1. Ve a [Administrador de Dominios](https://account.godaddy.com/products) -2. Haz clic en tu dominio -3. Desplázate hasta "Servidores de nombres" → Haz clic en "Cambiar" -4. Selecciona "Ingresar mis propios servidores de nombres (avanzado)" -5. Agrega los 4 servidores de nombres de AWS -6. Guardar - -
- -
-Namecheap - -1. Ve a [Lista de Dominios](https://ap.www.namecheap.com/domains/list/) -2. Haz clic en "Administrar" junto a tu dominio -3. Selecciona "DNS Personalizado" bajo Servidores de nombres -4. Agrega los 4 servidores de nombres de AWS -5. Haz clic en la marca verde - -
- -
-Cloudflare - -**Nota:** Si usas Cloudflare, debes deshabilitar el proxy de Cloudflare para una delegación adecuada. - -1. Remover el dominio de Cloudflare, O -2. Actualizar servidores de nombres a AWS (elimina la gestión DNS de Cloudflare) - -
- ---- - -## Delegación de Dominio del Entorno - -### Qué estás delegando -Un subdominio (por ejemplo, `qa.sleakops.com`) a su propia zona alojada. - -```mermaid -sequenceDiagram - participant U as Tú - participant S as Sleakops - participant R as Registrador de Dominio - participant AWS as AWS Route 53 - - U->>S: Crear Dominio del Proveedor - S->>AWS: Crear Zona Alojada - AWS-->>S: Devolver 4 Servidores de Nombres - S-->>U: Mostrar Servidores de Nombres - U->>R: Actualizar Servidores de Nombres - R->>AWS: Delegar Autoridad DNS - U->>S: Hacer clic en "Verificar Delegación" - S->>AWS: Verificar Delegación - AWS-->>S: Confirmación - S-->>U: ✅ Delegación Completa -``` - -### Dos Escenarios - -#### Escenario A: El dominio padre ES administrado por Sleakops - -```mermaid -graph LR - A[sleakops.com
en Sleakops] --> B[qa.sleakops.com
en Sleakops] - B --> C[✅ Delegación
Automática] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#1a202c,stroke:#2e7d32,stroke-width:2px -``` - -**¡Buenas noticias!** Sleakops crea automáticamente los registros NS en la zona alojada padre. - -✅ **No se requiere acción** - la delegación es automática - ---- - -#### Escenario B: El dominio padre NO es administrado por Sleakops - -```mermaid -graph LR - A[sleakops.com
DNS Externo] -.-> B[qa.sleakops.com
en Sleakops] - B --> C[⚠️ Registros NS
Manuales Requeridos] - - style A fill:#594440,stroke:#c62828,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#1f2020,stroke:#e65100,stroke-width:2px -``` - -Si `sleakops.com` se administra fuera de Sleakops, pero quieres `qa.sleakops.com` en Sleakops: - -1. **Crear el dominio del Entorno en Sleakops** - - Sleakops crea una zona alojada - - Verás 4 registros de servidor de nombres - -2. **Agregar registros NS al dominio padre** - - Ve a donde se administra el DNS de `sleakops.com` (registrador, Cloudflare, etc.) - - Crear 4 registros NS para el subdominio: - -``` -Tipo de Registro: NS -Nombre: qa -Valor: ns-123.awsdns-12.com -Tipo de Registro: NS -Nombre: qa -Valor: ns-456.awsdns-45.net -(repetir para los 4 servidores de nombres) -``` - -3. **Verificar delegación** - - Hacer clic en **"Verificar Delegación"** en Sleakops - - Esperar la propagación DNS (usualmente 5-30 minutos) - ---- - -## Configuración de Dominio del Webservice - -### Qué sucede -Los dominios de webservice (por ejemplo, `api.qa.sleakops.com`) se **configuran automáticamente**. - -```mermaid -graph LR - A[Desplegar Webservice] --> B[Sleakops Crea
Registro CNAME] - B --> C[Apunta al ALB] - C --> D[✅ Listo para Usar] - - style A fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style B fill:#1a202c,stroke:#2e7d32,stroke-width:2px - style C fill:#1a202c,stroke:#2e7d32,stroke-width:2px - style D fill:#1a202c,stroke:#90cdf4,stroke-width:3px -``` - - -✅ **No se necesita delegación** - Sleakops automáticamente: -- Crea registro CNAME en la zona alojada del entorno -- Apunta al Application Load Balancer (ALB) -- Configura certificado SSL - -**¡No necesitas hacer nada!** - ---- - -## Configuración de Dominio Alias - -Los dominios alias requieren configuración DNS manual en tu proveedor de dominio. - -### Escenario A: El alias coincide con una zona alojada existente - -**Ejemplo:** Tu alias es `api.external.com` y ya tienes `external.com` como Proveedor o Entorno en Sleakops. - -```mermaid -sequenceDiagram - participant U as Tú - participant S as Sleakops - participant DNS as Tu DNS (external.com) - participant ALB as AWS ALB - - U->>S: Crear Alias: api.external.com - S-->>U: Proporcionar Registros de Validación de Certificado - U->>DNS: Agregar Registros CNAME de Validación - DNS-->>S: Certificado Validado ✅ - S-->>U: Proporcionar Endpoint ALB - U->>DNS: Agregar CNAME al ALB - DNS->>ALB: Tráfico Enrutado - ALB-->>U: Servicio Accesible -``` - -#### Para Validación de Certificado SSL - -1. **Sleakops proporciona registros de validación** - - Verás registros CNAME para validación de certificado - - Ejemplo: - -``` -_acme-challenge.api.external.com → _validation123.acme.aws.com -``` - -2. **Agregar registros de validación a tu DNS** - - Ve a la zona alojada de `external.com` (en Sleakops o donde sea que se administre) - - Agrega los registros CNAME exactamente como se muestra - - Esperar validación del certificado (usualmente 5-15 minutos) - -#### Para Enrutamiento de Tráfico - -3. **Sleakops proporciona endpoint ALB** - - Verás el nombre DNS del ALB: - -``` -ALB: my-alb-123456.us-east-1.elb.amazonaws.com -``` - -4. **Crear registro CNAME** - - Ve a tu administración DNS para `external.com` - - Crear un registro CNAME: - -``` -Tipo de Registro: CNAME -Nombre: api -Valor: my-alb-123456.us-east-1.elb.amazonaws.com -TTL: 300 -``` - -5. **Verificar** - - Probar el dominio: `curl https://api.external.com` - - Debería devolver la respuesta de tu servicio - ---- - -### Escenario B: El alias no coincide con ninguna zona alojada - -**Ejemplo:** Tu alias es `anything.com` y este dominio no se administra en Sleakops. - -```mermaid -sequenceDiagram - participant U as Tú - participant S as Sleakops - participant R as Registrador (anything.com) - participant ALB as AWS ALB - - U->>S: Crear Alias: anything.com - S->>S: Crear Certificado SSL - S-->>U: Proporcionar Registros de Validación - U->>R: Agregar Registros CNAME de Validación - R-->>S: Certificado Validado ✅ - S-->>U: Proporcionar Endpoint ALB - U->>R: Agregar Registro CNAME/A al ALB - R->>ALB: Tráfico Enrutado - ALB-->>U: Servicio Accesible -``` - - -#### Para Certificado SSL - -1. **Sleakops crea certificado SSL** - - Se proporcionan registros de validación de certificado - - Ejemplo: - -``` -_acme-challenge.anything.com → _validation456.acme.aws.com -``` - -2. **Agregar registros de validación** - - Inicia sesión en tu proveedor de dominio para `anything.com` - - Agregar los registros CNAME para validación de certificado - - Esperar validación (5-15 minutos) - -#### Para Enrutamiento de Tráfico - -3. **Sleakops proporciona endpoint ALB** - -``` -ALB: my-alb-789012.us-east-1.elb.amazonaws.com -``` - -4. **Configurar DNS en tu proveedor** - - **Opción 1: CNAME (para subdominios)** - -``` -Tipo de Registro: CNAME -Nombre: www (o subdominio) -Valor: my-alb-789012.us-east-1.elb.amazonaws.com -``` - - **Opción 2: Registro A con ALIAS (para dominio raíz)** - - Algunos proveedores soportan registros ALIAS (Route 53, Cloudflare) - -``` -Tipo de Registro: A (ALIAS) -Nombre: @ (raíz) -Valor: my-alb-789012.us-east-1.elb.amazonaws.com -``` - - **Opción 3: Registro A con IP (no recomendado)** - - Buscar IPs del ALB y crear registros A - - ⚠️ Las IPs pueden cambiar - usa CNAME cuando sea posible - -5. **Verificar** - - Probar: `curl https://anything.com` - - Asegurar que el certificado SSL sea válido - ---- - -## Lista de Verificación - -### Dominio Proveedor/Entorno -- [ ] Servidores de nombres actualizados en el registrador -- [ ] "Verificar Delegación" botón muestra éxito -- [ ] La búsqueda DNS devuelve servidores de nombres correctos: `dig NS tudominio.com` - -### Dominio Webservice -- [ ] Webservice desplegado y funcionando -- [ ] Dominio resuelve: `curl https://api.qa.sleakops.com` -- [ ] Certificado SSL válido (sin advertencias del navegador) -- [ ] La búsqueda DNS devuelve CNAME correcto: `dig CNAME api.qa.sleakops.com` - -### Dominio Alias -- [ ] Registros de validación de certificado agregados -- [ ] Certificado muestra como validado en Sleakops -- [ ] Registro CNAME/A apunta al ALB -- [ ] Dominio resuelve: `curl https://tu-alias.com` -- [ ] La búsqueda DNS devuelve CNAME correcto: `dig CNAME tu-alias.com` -- [ ] Certificado SSL válido - ---- - -## Resolución de Problemas - -### "Verificar Delegación" falla - -```mermaid -graph TD - A[Verificación de Delegación Falla] --> B{¿Todos los 4 Servidores de Nombres Agregados?} - B -->|No| C[Agregar Servidores de Nombres Faltantes] - B -->|Sí| D{¿Algún Error Tipográfico?} - D -->|Sí| E[Corregir Errores Tipográficos] - D -->|No| F{¿Guardado en el Registrador?} - F -->|No| G[Guardar Cambios] - F -->|Sí| H[Esperar Propagación
hasta 48 horas] - - C --> I[Intentar de Nuevo] - E --> I - G --> I - H --> I - - style A fill:#594440,stroke:#c62828,stroke-width:2px - style I fill:#1a202c,stroke:#f2f2f2,stroke-width:2px -``` - -**Problema:** Servidores de nombres no delegados correctamente - -**Soluciones:** -1. Verificar que agregaste TODOS los 4 servidores de nombres -2. Revisar errores tipográficos en los valores de los servidores de nombres -3. Esperar más tiempo (la propagación DNS puede tomar hasta 48 horas) -4. Limpiar caché DNS: `dig @8.8.8.8 tudominio.com` -5. Verificar en el registrador que los cambios fueron guardados - ---- - -### Validación de certificado atascada - -**Problema:** Certificado SSL no se valida - -**Soluciones:** -1. Verificar que los registros CNAME se agregaron correctamente (sin puntos extra, valores correctos) -2. Revisar que el TTL no haya expirado -3. Remover cualquier registro DNS en conflicto -4. Esperar 15-30 minutos para propagación DNS -5. Revisar DNS: `dig _acme-challenge.tudominio.com` - ---- - -### Dominio no resuelve - -**Problema:** El dominio no carga tu servicio - -**Soluciones:** -1. Verificar que el registro CNAME/A apunte al endpoint ALB correcto -2. Revisar que el ALB esté saludable y recibiendo tráfico -3. Verificar que el webservice esté desplegado y funcionando -4. Probar con `curl -v https://tudominio.com` para errores detallados -5. Revisar que los grupos de seguridad permitan tráfico en el puerto 443 - ---- - -### Errores de certificado SSL en el navegador - -**Problema:** El navegador muestra "No Seguro" o advertencias de certificado - -**Soluciones:** -1. Verificar que el certificado esté validado en Sleakops -2. Revisar que el certificado incluya tu nombre de dominio -3. Limpiar caché del navegador -4. Verificar que el certificado correcto esté adjunto al listener del ALB -5. Revisar que el certificado no haya expirado - ---- - -## Tiempo de Propagación DNS - -| Tipo de Cambio | Tiempo Típico | Tiempo Máximo | -|-----------------|---------------|---------------| -| Actualización de servidor de nombres | 15-30 minutos | 48 horas | -| Registro CNAME | 5-15 minutos | 24 horas | -| Registro A | 5-15 minutos | 24 horas | -| Validación de certificado | 5-15 minutos | 30 minutos | - -💡 **Consejo:** Usa `https://dnschecker.org` para verificar la propagación DNS globalmente - ---- - -## ¿Necesitas Ayuda? - -- Revisa [Niveles de Dominio y Estrategias](/docs/domain/) -- Contacta al soporte de Sleakops con los detalles de configuración de tu dominio \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx deleted file mode 100644 index af0cfba55..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx +++ /dev/null @@ -1,423 +0,0 @@ ---- -sidebar_label: Dominio -sidebar_position: 5 ---- - -# Niveles de Dominio y Estrategias - -Sleakops proporciona una arquitectura de dominios flexible con tres niveles jerárquicos, además de alias personalizados para casos de uso avanzados. - -## Descripción General - -```mermaid -graph TD - A[Dominio del Proveedor
miempresa.com] --> B[Dominio del Entorno
qa.miempresa.com] - A --> C[Dominio del Entorno
prod.miempresa.com] - B --> D[Webservice
api.qa.miempresa.com] - B --> E[Webservice
web.qa.miempresa.com] - C --> F[Webservice
api.prod.miempresa.com] - D -.-> G[Alias
api.miempresa.org] - D -.-> H[Alias
dominio.personalizado.com] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#340f09,stroke:#594440,stroke-width:2px - style D fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style E fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style F fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style G fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 - style H fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 -``` - ---- - -## 1. Dominio del Proveedor (Nivel Raíz) - -**Qué es:** El dominio raíz de tu organización. - -**Ejemplo:** `sleakops.com` - -**Lo que Sleakops crea:** -- ✅ Zona Alojada de AWS -- ✅ Certificado SSL - -**Caso de uso:** -Establece la infraestructura principal de tu dominio. Todos los entornos y servicios se organizarán bajo este dominio. - -**Cuándo usarlo:** -- Configurando Sleakops por primera vez -- Gestionando el dominio principal de tu organización - ---- - -## 2. Dominio del Entorno (Nivel de Subdominio) - -**Qué es:** Subdominios que representan diferentes entornos. - -**Ejemplos:** -- `qa.sleakops.com` -- `staging.sleakops.com` -- `prod.sleakops.com` - -**Lo que Sleakops crea:** -- ✅ Zona Alojada de AWS -- ✅ Certificado SSL - -**Caso de uso:** -Aislar y organizar tus entornos de despliegue. Cada entorno obtiene su propio subdominio con gestión DNS independiente. - -**Cuándo usarlo:** -- Crear entornos separados (desarrollo, staging, producción) -- Aislar equipos o proyectos -- Gestionar múltiples etapas de despliegue - ---- - -## 3. Dominio del Webservice (Auto-generado) - -**Qué es:** Asignación automática de dominio para cada webservice. - -**Patrón:** `[nombre-webservice].[dominio-entorno]` - -**Ejemplo:** -- Nombre del webservice: `api` -- Entorno: `qa.sleakops.com` -- **Resultado:** `api.qa.sleakops.com` - -**Lo que Sleakops crea:** -- ✅ Registro CNAME (agregado automáticamente a la zona alojada del entorno) -- ✅ Apunta al Application Load Balancer (ALB) - -**Caso de uso:** -Configuración de dominio sin configuración. Cada servicio obtiene automáticamente un dominio jerárquico y predecible. - -**Cuándo usarlo:** -- Escenario predeterminado para todos los webservices -- Cuando quieres URLs consistentes y predecibles -- Despliegues rápidos sin configuración de dominio personalizada - ---- - -## 4. Dominios Alias (Nivel Personalizado) - -**Qué es:** Dominios personalizados fuera de tu jerarquía estándar. - -**Ejemplos:** -- `api.dominio-externo.com` -- `www.miempresa.io` -- `cualquiera.com` - -**Lo que hace Sleakops:** - -### Escenario A: El dominio coincide con una zona alojada existente -Si `dominio-externo.com` ya es un Proveedor o Entorno en Sleakops: -- ✅ Proporciona registros DNS para validación de certificado SSL -- ✅ Proporciona nombre ALB para configuración DNS -- ⚠️ Tú configuras los registros DNS por tu cuenta - -### Escenario B: El dominio no coincide con ninguna zona alojada -Si `cualquiera.com` es completamente externo: -- ✅ Crea certificado SSL -- ✅ Proporciona registros de validación para el certificado -- ✅ Proporciona nombre ALB para configuración DNS -- ⚠️ Tú gestionas el DNS en tu proveedor de dominios - -**Caso de uso:** -- Dominios de marca personalizados -- Dominios externos apuntando a tus servicios -- URLs de marketing o vanidad -- Servicios multi-dominio - -**Cuándo usarlo:** -- El dominio predeterminado del webservice no se ajusta a tus necesidades -- Necesitas múltiples dominios para el mismo servicio -- Conectar dominios externos a tus servicios de Sleakops - ---- - -## Estrategias de Delegación - -Sleakops ofrece tres enfoques de delegación, dándote flexibilidad basada en tus necesidades de infraestructura y políticas organizacionales. - -### Estrategia A: Delegación Completa (Recomendada) - -Delegar el Proveedor (dominio raíz) y dejar que Sleakops gestione todo - -```mermaid -graph TD - A[sleakops.com
🔑 Delegado a Sleakops] --> B[prod.sleakops.com
✅ Auto-gestionado] - A --> C[qa.sleakops.com
✅ Auto-gestionado] - B --> D[api.prod.sleakops.com
✅ Auto-gestionado] - B --> E[web.prod.sleakops.com
✅ Auto-gestionado] - C --> F[api.qa.sleakops.com
✅ Auto-gestionado] - - style A fill:#1a202c,stroke:#2e7d32,stroke-width:3px - style B fill:#1a202c,stroke:#388e3c,stroke-width:2px - style C fill:#1a202c,stroke:#388e3c,stroke-width:2px - style D fill:#1a202c,stroke:#43a047,stroke-width:2px - style E fill:#1a202c,stroke:#43a047,stroke-width:2px - style F fill:#1a202c,stroke:#43a047,stroke-width:2px -``` - - -#### Lo que delegas: - -Servidores de nombres del dominio del Proveedor a AWS Route 53 - -**Lo que Sleakops gestiona automáticamente:** - -- ✅ Todos los dominios del entorno (zonas alojadas + certificados SSL) -- ✅ Todos los dominios de webservice (registros CNAME + enrutamiento) -- ✅ Propagación DNS y validación -- ✅ Ciclo de vida completo del certificado SSL - -**Beneficios:** - -- 🚀 Configuración DNS cero después de la delegación inicial -- 🔒 Gestión automatizada de certificados SSL -- 🎯 Infraestructura completamente gestionada -- ⚡ Experiencia de despliegue más rápida - -**Mejor para:** - -- Nuevos proyectos empezando desde cero -- Equipos que quieren mínima sobrecarga DNS -- Organizaciones que adoptan soluciones completamente gestionadas -- Startups y equipos que se mueven rápido - -**Configuración:** - -Delegar tu dominio raíz (ej., sleakops.com) a Sleakops -Todo lo demás es automático - ---- - -### Estrategia B: Delegación Por Entorno - -Delegar dominios de entorno individuales mientras mantienes el control del dominio raíz - -```mermaid -graph TD - A[sleakops.com
👤 Tú Controlas] -.-> B[prod.sleakops.com
🔑 Delegado a Sleakops] - A -.-> C[qa.sleakops.com
🔑 Delegado a Sleakops] - B --> D[api.prod.sleakops.com
✅ Auto-gestionado] - B --> E[web.prod.sleakops.com
✅ Auto-gestionado] - C --> F[api.qa.sleakops.com
✅ Auto-gestionado] - - style A fill:#1a202c,stroke:#e65100,stroke-width:3px - style B fill:#1a202c,stroke:#2e7d32,stroke-width:3px - style C fill:#1a202c,stroke:#2e7d32,stroke-width:3px - style D fill:#1a202c,stroke:#43a047,stroke-width:2px - style E fill:#1a202c,stroke:#43a047,stroke-width:2px - style F fill:#1a202c,stroke:#43a047,stroke-width:2px -``` - -#### Lo que delegas: - -Servidores de nombres de dominios de entorno individuales (ej., qa.sleakops.com, prod.sleakops.com) - -**Lo que Sleakops gestiona automáticamente:** - -- ✅ Todos los dominios de webservice dentro de entornos delegados -- ✅ Certificados SSL para entornos delegados -- ✅ Registros DNS dentro de zonas delegadas - -**Lo que tú gestionas:** - -- ⚙️ DNS del dominio raíz -- ⚙️ Registros NS apuntando a cada entorno - -**Beneficios:** - -- 🎛️ Control del dominio raíz para otros propósitos (email, sitios de marketing, etc.) -- 🔒 Gestión aislada de entornos -- ✅ DNS automático de webservice dentro de cada entorno -- 🏢 Cumplimiento con políticas DNS organizacionales - -**Mejor para:** - -- Organizaciones con infraestructura de dominio raíz existente -- Equipos que necesitan dominio raíz para servicios no-Sleakops -- Migración gradual a Sleakops -- Organizaciones multi-equipo con aislamiento a nivel de entorno - -**Configuración:** - -Mantener tu dominio raíz (ej., sleakops.com) gestionado externamente -Delegar cada entorno (ej., qa.sleakops.com) a Sleakops -Agregar registros NS en tu DNS de dominio raíz para cada entorno - ---- - -### Estrategia C: Control Completo (Gestión Manual) -Retener control DNS completo y configurar manualmente todos los registros - -```mermaid -graph TD - A[sleakops.com
👤 Tú Controlas] -.-> B[prod.sleakops.com
👤 Tú Controlas] - A -.-> C[qa.sleakops.com
👤 Tú Controlas] - B -.-> D[api.prod.sleakops.com
⚙️ CNAME Manual] - B -.-> E[web.prod.sleakops.com
⚙️ CNAME Manual] - C -.-> F[api.qa.sleakops.com
⚙️ CNAME Manual] - - style A fill:#1a202c,stroke:#c62828,stroke-width:3px - style B fill:#1a202c,stroke:#d84315,stroke-width:2px - style C fill:#1a202c,stroke:#d84315,stroke-width:2px - style D fill:#1a202c,stroke:#e64a19,stroke-width:2px - style E fill:#1a202c,stroke:#e64a19,stroke-width:2px - style F fill:#1a202c,stroke:#e64a19,stroke-width:2px -``` - -#### Lo que delegas: - -Nada - tú gestionas todo el DNS - -**Lo que Sleakops proporciona:** - -- 📋 Registros DNS para validación de certificado SSL -- 📋 Endpoints ALB para enrutamiento de tráfico - -**Lo que tú gestionas:** - -- ⚙️ Todas las zonas DNS y registros -- ⚙️ Registros de validación de certificados -- ⚙️ Registros CNAME apuntando al ALB -- ⚙️ Todas las actualizaciones y cambios DNS - -**Beneficios:** - -- 🎛️ Control completo de infraestructura DNS -- 🔐 Mantener DNS dentro de límites de seguridad existentes -- 📊 Integración con monitoreo DNS existente -- 🏢 Cumplir requisitos estrictos de cumplimiento - -**Mejor para:** - -- Organizaciones con gobernanza DNS estricta -- Infraestructura DNS compleja existente -- Políticas de seguridad que requieren aislamiento DNS -- Empresas con equipos DNS dedicados - -**Configuración:** - -Crear dominios en Sleakops (sin delegación) -Sleakops proporciona registros de validación y endpoints ALB -Agregar manualmente todos los registros DNS requeridos en tu proveedor DNS - ---- - -### Comparación de Estrategias de Delegación - -| Aspecto | Delegación Completa | Por Entorno | Control Completo | -|---------|-------------------|-------------|------------------| -| Complejidad de Configuración | ⭐ Más Fácil | ⭐⭐ Moderada | ⭐⭐⭐ Compleja | -| Mantenimiento Continuo | ⭐ Ninguno | ⭐⭐ Mínimo | ⭐⭐⭐ Alto | -| Flexibilidad | ⭐⭐ Limitada | ⭐⭐⭐ Equilibrada | ⭐⭐⭐⭐ Máxima | -| Tiempo de Despliegue | ⚡ Instantáneo | ⚡⚡ Minutos | ⚡⚡⚡ Manual | -| Control DNS | Sleakops | Compartido | Tú | -| Mejor para Equipos | Pequeño-Mediano | Mediano-Grande | Empresarial | - ---- - -## Patrones de Organización de Dominios - -### Patrón 1: Jerarquía Estándar (Funciona con cualquier estrategia de delegación) - -```mermaid -graph TD - A[sleakops.com
Proveedor] --> B[prod.sleakops.com
Entorno] - A --> C[staging.sleakops.com
Entorno] - B --> D[api.prod.sleakops.com
Webservice] - B --> E[web.prod.sleakops.com
Webservice] - C --> F[api.staging.sleakops.com
Webservice] - C --> G[web.staging.sleakops.com
Webservice] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#340f09,stroke:#594440,stroke-width:2px - style D fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style E fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style F fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style G fill:#1a202c,stroke:#f2f2f2,stroke-width:2px -``` - -**Beneficios:** -- Separación clara de entornos -- Fácil de entender y gestionar -- SSL y DNS automáticos - ---- - -### Patrón 2: Jerarquía Mixta con Dominios Personalizados - -```mermaid -graph TD - A[sleakops.com
Proveedor] --> B[prod.sleakops.com
Entorno] - B --> C[api.prod.sleakops.com
Webservice] - C -.-> D[api.miempresa.com
Alias] - C -.-> E[api.dominio-cliente.com
Alias] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style D fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 - style E fill:#1f2020,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 -``` - -**Beneficios:** -- Dominios profesionales cara al cliente -- Mantiene estructura interna -- Flexibilidad para etiquetado blanco -- Requiere DNS manual para alias (todas las estrategias) - ---- - -### Patrón 3: Entorno por Equipo/Proyecto - -```mermaid -graph TD - A[sleakops.com
Proveedor] --> B[equipo-frontend.sleakops.com
Entorno] - A --> C[equipo-backend.sleakops.com
Entorno] - A --> D[equipo-datos.sleakops.com
Entorno] - B --> E[app.equipo-frontend.sleakops.com
Webservice] - C --> F[api.equipo-backend.sleakops.com
Webservice] - D --> G[analytics.equipo-datos.sleakops.com
Webservice] - - style A fill:#201f1f,stroke:#90cdf4,stroke-width:2px - style B fill:#340f09,stroke:#594440,stroke-width:2px - style C fill:#340f09,stroke:#594440,stroke-width:2px - style D fill:#340f09,stroke:#594440,stroke-width:2px - style E fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style F fill:#1a202c,stroke:#f2f2f2,stroke-width:2px - style G fill:#1a202c,stroke:#f2f2f2,stroke-width:2px -``` - -**Beneficios:** -- Propiedad clara del equipo -- Gestión DNS independiente por equipo -- Escalable para organizaciones grandes - ---- - -## Guía de Decisión Rápida - -| Necesidad | Estrategia Recomendada | -|-----------|------------------------| -| Configuración más rápida | Delegación Completa | -| Mantener raíz para email/otros servicios | Delegación Por Entorno | -| Máximo control DNS | Control Completo | -| Migración gradual | Delegación Por Entorno | -| Cumplimiento estricto | Control Completo | -| Proyecto nuevo | Delegación Completa | -| Empresa con equipo DNS | Control Completo o Por Entorno | - -| Tarea | Herramienta | -|-------|-------------| -| Configuración inicial | Dominio del Proveedor | -| Crear nuevo entorno | Dominio del Entorno | -| Desplegar un servicio | Webservice (automático) | -| URL de marca personalizada | Dominio Alias | -| Integración de dominio externo | Dominio Alias | -| Solución de etiqueta blanca | Dominio Alias | - - diff --git a/i18n/es/docusaurus-plugin-content-docs/current/domain/setup.mdx b/i18n/es/docusaurus-plugin-content-docs/current/domain/setup.mdx deleted file mode 100644 index e1a08aeac..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/domain/setup.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -sidebar_label: Configura tus dominios -sidebar_position: 5 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Resumen - -Un aspecto crítico al trabajar con SleakOps es garantizar una delegación adecuada de dominios. La delegación de dominios es esencial para una integración y funcionalidad sin problemas, ya que determina cómo se gestionan tus dominios y subdominios y cómo interactúan con tu entorno en AWS. Dependiendo de tus necesidades específicas, hay varios escenarios de delegación de dominios con SleakOps: - -#### 1. Delegar el dominio principal - -Esta es la opción más sencilla, donde el registro NS del dominio principal se apunta a tu Hosted Zone de AWS. Todos los subdominios se gestionarán automáticamente, asegurando una administración sin esfuerzo. - -#### 2. Delegar solo subdominios - -Si prefieres que tu dominio principal sea gestionado por tu proveedor DNS actual (por ejemplo, porque aloja servicios principales como el correo electrónico), esta opción te permite delegar solo los subdominios necesarios. Deberás configurar los registros NS para cada subdominio que desees delegar. - -#### 3. Sin delegación del dominio principal ni de los subdominios - -En este caso, mantienes el control total sobre tu dominio y subdominios sin delegarlos a AWS. Para garantizar el funcionamiento correcto de SleakOps, debes: - -- Agregar un registro CNAME para validar el certificado SSL. -- Agregar un registro CNAME adicional para cada servicio web que gestiones. - -#### 4. Usar un dominio diferente o múltiples dominios para el mismo servicio - -Si deseas usar un dominio diferente al principal o tener múltiples dominios apuntando al mismo servicio, necesitarás crear un ALIAS: - -- Si el ALIAS pertenece a un dominio gestionado por SleakOps, se gestionará automáticamente. -- Si no, deberás crear manualmente: - - Un registro CNAME para validar el certificado SSL. - - Un registro adicional para cada ALIAS. - -Al comprender y aplicar la estrategia de delegación de dominios adecuada para tu Environment, puedes garantizar que SleakOps se integre sin problemas con tu infraestructura de AWS, proporcionando un rendimiento y seguridad óptimos. - -## Configura tus dominios - -### 1. Accede a la información del dominio o subdominio -SleakOps proporciona información detallada sobre dominios, subdominios y alias. Se ve así: - - -domain-drawer-ns - - -Para acceder a ella, hay diferentes maneras según lo que necesites hacer: - -#### Si deseas delegar tu dominio principal - a. Accede al Dashboard y busca el widget del dominio. - b. Haz clic en el dominio deseado para mostrar el detalle. - - -domain-info-dashboard - - -#### Para delegar el subdominio de un Environment - a. Accede a la lista de Environments y selecciona un Environment. - b. Haz clic en el ícono de la nube para mostrar el detalle del dominio. - -#### Crear un Alias para la ejecución de un servicio web y delegarlo - a. Accede a la lista de Workloads y luego a la sección Web Services. - b. Selecciona una ejecución y haz clic en el botón de tres puntos. - c. Elige la opción Detalle. - d. Crea el Alias si no existe haciendo clic en Asociar Nuevo Dominio y completa el formulario. - e. Haz clic en el dominio del Alias para mostrar el detalle. - - -domain-info-workload-list - - - -domain-info-workload-drawer - - -### 2. Actualiza los Name Servers con el registrador del dominio -- Inicia sesión en la cuenta donde está registrado tu dominio (por ejemplo, GoDaddy, Namecheap, etc.). -- Localiza las configuraciones DNS de tu dominio. -- Reemplaza los registros existentes con los proporcionados. - -### 3. Verifica la delegación -- Los cambios de DNS pueden tardar algún tiempo en propagarse globalmente (usualmente dentro de unas horas). -- SleakOps verifica periódicamente, pero si deseas hacerlo manualmente, puedes hacer clic en el botón amarillo _Check Delegation_ para activar el proceso. - - -domain-info-check-delegation-and-certificate - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx deleted file mode 100644 index 413a17b7d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -sidebar_label: Entorno -sidebar_position: 8 -pagination_next: project/index ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Entorno - -Un **entorno** es un espacio aislado donde recursos, [proyectos](/docs/project) y [dependencias](/docs/project/dependency) específicos pueden operar de manera independiente. Este aislamiento mejora la organización, la seguridad y la gestión de recursos en sistemas o plataformas de mayor escala. - -Cuando creas un entorno, SleakOps genera automáticamente un subdominio basado en el nombre de ese entorno. Por ejemplo, si el nombre que eliges es qa, el subdominio será `qa.{tudominio.com}`. Todas las cargas de trabajo y dependencias de los proyectos se implementarán utilizando este dominio específico del entorno. - -## Preguntas Frecuentes - -
- -### ¿Cómo puedo diseñar mis Entornos? - -Los Entornos pueden adaptarse en función del ciclo de vida de una aplicación o las necesidades de diferentes equipos. Por ejemplo, crear Environments para desarrollo (dev), aseguramiento de calidad (QA), pruebas (stg) y producción (prod) permite que cada uno tenga configuraciones personalizadas adecuadas a sus roles específicos. - -Antes de crear un Entorno, lee [Diseñando tu Infraestructura: Esquema Simple vs. Esquema Múltiple](/docs/provider/schemas). -
- -
- -### ¿Puedo editar un Entorno? - -No. Debes eliminarlo y crear uno nuevo. -
- -
- -### ¿Cómo elimino un Entorno? - -Accede a la Lista de Entornos, en la columna de Acciones, haz clic en el ícono de papelera. Luego confirma la acción. -
- -
- -### ¿Cómo puedo delegar un dominio? - -Sigue: [Delegar Dominios](/docs/domain/setup). -
- -:::warning Configuración DNS Requerida - -Antes de continuar, debes delegar manualmente tu servicio DNS al Route53 Principal de SleakOps. Sin este paso, ¡tu Environment no funcionará correctamente! - -1. Sigue la [guía oficial de AWS ](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) -2. Verifica la delegación antes de crear tu Environment -::: - -## Configura tu Entorno - -#### 1. Navega a la sección de Entornos -En el Panel Izquierdo, accede a la opción *Entornos* y luego, en la esquina superior derecha, haz clic en el botón *Crear*. - - -environment-list - - -#### 2. Configura tu Entorno -Con tu [Account](/docs/provider/accounts) seleccionada, accederás al siguiente formulario: - - -environment-create - - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Define un nombre para tu Entorno utilizando letras en minúscula y guiones medios. | -| **Cluster** | Selecciona uno de los clústeres disponibles para alojar el nuevo Entorno. | -| **Dominio** | Especifica el dominio para tu Entorno. | - -Una vez que hayas completado el formulario, haz clic en *Crear* para iniciar la creación del Entorno en el clúster seleccionado. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/gettingstarted.mdx b/i18n/es/docusaurus-plugin-content-docs/current/gettingstarted.mdx deleted file mode 100644 index 8506e610d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/gettingstarted.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -sidebar_label: Empezando -sidebar_position: 3 ---- - -import Zoom from 'react-medium-image-zoom'; -import 'react-medium-image-zoom/dist/styles.css'; -import { FiExternalLink } from "react-icons/fi"; - - -# Empezando - -## Inicia sesión con tu correo electrónico - -Inicia sesión en nuestra [aplicación web](https://console.sleakops.com/login/). - - - inicio-sesion - - -:::info -En caso de que no tengas una cuenta con nosotros, necesitas suscribirte a través de AWS. Sigue la guía en [Cómo suscribirse a SleakOps usando AWS ](https://aws.amazon.com/marketplace/pp/prodview-c6e4g3knpgtgs). -::: - -### Requisitos para Unirse - -- Necesitas tener un usuario root en AWS. Este es el usuario inicial creado con permisos completos para gestionar todos los recursos y servicios, y sirve como cuenta principal para AWS Organizations. [Ir a AWS Organizations ](https://console.aws.amazon.com/organizations/v2/home/accounts). -- Necesitas acceso a tus repositorios de código (GitLab, Bitbucket o GitHub). -- Necesitas tener tus servicios en archivos Docker. -- Necesitas poder gestionar tus dominios. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/index.mdx deleted file mode 100644 index 98162190f..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/index.mdx +++ /dev/null @@ -1,125 +0,0 @@ ---- -sidebar_label: Introducción a SleakOps -sidebar_position: 1 -pagination_next: basicconcepts ---- - -import { FiCloud, FiServer, FiCopy, FiGrid, FiBox } from "react-icons/fi" -import { FiExternalLink } from "react-icons/fi"; -import { MdMiscellaneousServices } from 'react-icons/md' -import { FaDocker } from 'react-icons/fa' -import { VscRocket, VscJson } from 'react-icons/vsc' - -# ¡Bienvenido a SleakOps! - -Bienvenido a SleakOps, tu solución ideal para gestionar aplicaciones escalables en Kubernetes sin esfuerzo. SleakOps automatiza tareas tediosas, optimiza la administración de recursos en AWS y Kubernetes, y ofrece una interfaz web intuitiva para gestionar tu infraestructura de forma fluida. - -Nuestra plataforma crea y mantiene entornos de desarrollo modernos basados en Kubernetes con un esfuerzo mínimo de tu parte. Implementamos las mejores prácticas y herramientas de alta calidad, garantizando una experiencia sin complicaciones. ¿Nuestro objetivo? Hacer que Kubernetes sea tan fácil de usar como cualquier otra plataforma PaaS, brindándote la flexibilidad de Kubernetes sin ataduras a proveedores. Con SleakOps, gestionar tu infraestructura en la nube es sencillo y eficiente. - -Tanto si eres un desarrollador experimentado como si eres nuevo en Kubernetes, SleakOps te da las herramientas necesarias para tener éxito en la gestión de infraestructura. - -## Principios Fundamentales - -- Respetar las bases [Well-Architected ](https://aws.amazon.com/es/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc&wa-guidance-whitepapers.sort-by=item.additionalFields.sortDate&wa-guidance-whitepapers.sort-order=desc) de AWS. -- Mantener siempre el control de los costos. -- Tú tienes el control completo: es tu repositorio y tu nube. - -## Funcionalidades Principales - -- Integración con GitHub, Bitbucket y GitLab. -- Basado en tu repositorio y Dockerfiles. -- Gestiona múltiples entornos utilizando nuestra estructura propuesta (desarrollo, pruebas y producción) o personaliza la tuya. -- Configura tu pipeline de CI/CD. -- Stack completo de observabilidad para logging, monitoreo y rastreo. -- Gestión de secretos y variables de entorno. -- Conexiones seguras mediante TLS. -- Configuración automatizada de tus servicios detrás de un balanceador de carga e ingreso seguro. -- Agrega complementos a tu clúster fácilmente. -- Gran cantidad de dependencias listas para usar (RDS, S3, Redis, SQL, Rabbit, etc.). -- Gestión de acceso de usuarios a servicios. -- VPN automatizadas. - -
- -
-
- -

Proveedores

-
-

Cuenta de proveedor de nube.

- Comienza aquí -
- -
-
- -

Clusters

-
-

Un conjunto de máquinas de trabajo, llamadas nodos, que ejecutan aplicaciones en contenedores.

- Comienza aquí -
- -
-
- -

Entornos

-
-

Una abstracción que nos permite aislar los diferentes recursos.

- Comienza aquí -
- -
-
- -

Proyectos

-
-

Representa una base de código y es gestionado por un repositorio git.

- Comienza aquí -
- -
-
- -

Dependencias

-
-

Infraestructura subyacente que tus aplicaciones necesitan para funcionar en la nube, como bases de datos, servicios de almacenamiento o caches.

- Comienza aquí -
- -
-
- -

Servicios

-
-

Una manera abstracta de exponer una aplicación en ejecución en un conjunto de Pods como un servicio de red.

- Comienza aquí -
- -
-
- -

Despliegues

-
-

...

- Comienza aquí -
- -
-
- -

Build

-
-

Representa un estado desplegable de todos los servicios.

- Comienza aquí -
- -
-
- -

Grupo de Variables

-
-

Un diccionario que proporciona configuración para los servicios.

- Comienza aquí -
- -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx deleted file mode 100644 index 53b0836d5..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/network/index.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -id: networking-y-recursos-de-red -title: Networking y Recursos de Red -sidebar_label: Networking y Recursos de Red -sidebar_position: 6 ---- -import Zoom from "react-medium-image-zoom"; - -# Networking y Recursos de Red - -Esta documentación tiene como objetivo brindar una visión clara y sencilla de la arquitectura de red que SleakOps despliega en los entornos de los clientes. Aquí encontrarás cómo se organiza la red, cómo se protegen los recursos y cómo se facilita la comunicación tanto interna como externa. - -> ❓ **Nota**: La red está diseñada para garantizar seguridad, escalabilidad y alta disponibilidad. Permite separar ambientes, proteger datos sensibles y exponer servicios de manera controlada y segura. - -## 1. Descripción general de la arquitectura - -La infraestructura de red en SleakOps se basa en los siguientes componentes principales: - -- **VPC (Virtual Private Cloud):** Segmenta la red por entorno (Management, Production, Development). -- **Subredes:** - - *Públicas:* expuestas a Internet. - - *Privadas:* acceso restringido, acceden a Internet a través de un NAT Gateway. - - *Persistencia:* bases de datos, almacenamiento. -- **Internet Gateway:** Permite la comunicación entre la VPC y el exterior (Internet). -- **Route Tables:** Definen las rutas de tráfico entre subredes y hacia/desde Internet. -- **Security Groups:** Firewalls virtuales que controlan el tráfico de entrada y salida de los recursos. -- **DNS Interno:** Permite que los recursos se comuniquen usando nombres en vez de IPs. -- **External-DNS:** Servicio que corre dentro de cada clúster Kubernetes (EKS), encargado de gestionar automáticamente los registros DNS públicos en Route53 para los servicios expuestos desde el clúster. - -## 2. Flujo típico de comunicación - -El siguiente es un ejemplo de cómo viaja el tráfico en la red de SleakOps: - -1. **Acceso desde Internet:** - Un usuario accede a un servicio expuesto (por ejemplo, una API). El tráfico llega al Internet Gateway y es dirigido a la subred pública. - -2. **Control de acceso:** - El Security Group asociado al recurso valida si la conexión está permitida. - -3. **Comunicación interna:** - Los servicios internos (en subredes privadas o de persistencia) pueden comunicarse entre sí usando el DNS interno, siempre bajo las reglas de los Security Groups. - -4. **Exposición de servicios:** - Si un servicio dentro del clúster Kubernetes debe ser accesible desde Internet (por ejemplo, una API), se expone a través de un Application Load Balancer y External-DNS se encarga de registrar automáticamente el nombre en Route53. - -> Esta segmentación y control aseguran que solo los servicios necesarios sean expuestos y que los datos sensibles permanezcan protegidos. - - - reference-architecture - - -## 3. External-DNS y Route53 - -Se utiliza una solución automatizada para gestionar los registros DNS públicos de los servicios desplegados, integrando la infraestructura con servicios de DNS externos como Route53. - -- External-DNS **no expone servicios directamente**, sino que automatiza la gestión de registros DNS públicos para recursos ya expuestos (por ejemplo, mediante un Application Load Balancer). -- Esto permite que los servicios sean accesibles de forma segura y sencilla desde Internet. - -## 4. Conectividad entre entornos mediante VPC Peering - -Para permitir la comunicación controlada entre entornos (por ejemplo, entre Management y Production), SleakOps configura **conexiones VPC Peering** de manera explícita entre las VPCs de los distintos entornos. - -- Un **VPC Peering** permite que dos VPCs puedan intercambiar tráfico interno como si estuvieran en la misma red. -- **No requiere** pasar por Internet, NAT Gateway ni VPN. -- Es una conexión directa entre dos redes. - -> 💡 Además del acceso mediante Internet Gateway, SleakOps contempla otros mecanismos de conectividad como **Pritunl VPN**, **NAT Gateway** y **Transit Gateway**, dependiendo del caso de uso y el nivel de aislamiento requerido. - diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/project/_category_.json deleted file mode 100644 index ca58af561..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Projecto", - "position": 6 -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/access_config.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/access_config.mdx deleted file mode 100644 index 41046e16c..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/access_config.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -sidebar_label: Configuración de Acceso a Dependencias -sidebar_position: 7 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Configuración de Acceso - -La Configuración de Acceso te permite extender los permisos de tu proyecto otorgando acceso a dependencias externas de otros proyectos y adjuntando políticas IAM adicionales. Esta característica permite el intercambio de recursos entre proyectos y configuraciones de seguridad mejoradas. - -## Pasos de Configuración - -1. Navega a **Proyecto** → **Configuración** -2. Selecciona **Configuración de Acceso** del menú de configuración -3. Configura las dependencias externas y políticas adicionales según sea necesario -4. Haz clic en **Aplicar cambios** para guardar tu configuración - - -access config - - -## Dependencias Externas - -### Dependencias Ya Asignadas - -Esta sección muestra las dependencias que ya han sido vinculadas a tu proyecto actual. Estas dependencias están disponibles para que las usen tus cargas de trabajo y están marcadas con una casilla azul para indicar que están activas. - -**Características:** -- Ver todas las dependencias externas asignadas actualmente -- Ver información del tipo de dependencia y del proyecto -- Las dependencias se configuran automáticamente con los permisos apropiados - -### Dependencias Externas Disponibles - -Esta sección muestra las dependencias de otros proyectos a las que puedes otorgar acceso a tu proyecto actual. Esto permite el intercambio de recursos entre proyectos y la colaboración. - -**Cómo funciona:** -- Selecciona dependencias de otros proyectos a las que deseas otorgar acceso a este proyecto -- Solo se mostrarán las dependencias de proyectos a los que tienes acceso -- Una vez seleccionada, la dependencia estará disponible en la sección "Dependencias Ya Asignadas" - -## Políticas Adicionales - -La sección de Políticas Adicionales te permite adjuntar políticas IAM adicionales a tu proyecto, proporcionando permisos mejorados más allá del acceso predeterminado del proyecto. - -### Agregar Políticas Adicionales - -1. Haz clic en el botón **"Adjuntar más políticas"** -2. Selecciona de las políticas IAM disponibles en tu cuenta de AWS -3. Revisa los permisos de la política antes de adjuntarla -4. Las políticas se aplicarán para otorgar permisos adicionales al proyecto - -### Gestión de Políticas - -- **Políticas Personalizadas**: Adjunta políticas que has creado en tu consola IAM de AWS -- **Políticas Gestionadas por AWS**: Usa políticas preconfiguradas de AWS para casos de uso comunes -- **Revisión de Políticas**: Todas las políticas adjuntas se listan y pueden ser revisadas -- **Eliminación**: Las políticas pueden ser desvinculadas si ya no son necesarias - -:::tip Acceso Entre Proyectos -Las dependencias externas permiten a los equipos compartir recursos entre diferentes proyectos, mejorando la colaboración y la utilización de recursos. -::: - -:::warning Consideraciones de Seguridad -- Revisa todas las políticas adjuntas para asegurar que sigan el principio de menor privilegio -- Audita regularmente las dependencias externas para asegurar que aún sean necesarias -- Monitorea los patrones de acceso para identificar cualquier actividad inusual -::: \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/build/build.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/build/build.mdx deleted file mode 100644 index a8bd3e89f..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/build/build.mdx +++ /dev/null @@ -1,51 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - - -# Build - -We have repeteadly talked about Build in both [Project documentation ](/docs/project) and [Initial Build documentation](/docs/project). A build is basically a template of an OS, libraries and other dependencies of the project you deploy. - -### Build creation - -To create a Build you only need four parameters, only the Project field is required as the other three are, if not set, wait until this access is automatically enabled are chosen by default: -- Project: Refers to what we call ProjectEnv, here you choose which ProjectEnv you want to build. -- Branch: Lets you choose any branch of the repository that you've chosen as Project. Defaults to Environment name. -- Commit hash: You can also choose the commit has to build a specific commit and not the last one as we do by default. Defaults to last commit. -- Tag: Just a tag to differentiate builds. Defaults to 'latest'. - -## Why do we need to Build a Docker image? - -As we use [Helm charts ](https://helm.sh/docs/) we need the image because is what they use to deploy a Kubernetes Release. - -:::info - -Remember that you need a Build to update the code that the Deployment runs inside the Kubernetes Cluster. - -::: -:::tip CI/CD integration with SleakOps - -SleakOps has its own CLI Tool that you can use to automate Builds and Deployments in your CI/CD. More info [here](/docs/cli). - -::: - -## FAQs - -
- -### ¿Por qué mi build está fallando o siendo terminado? - - -:::info Revisa los Logs Primero -Antes de asumir que es un problema de recursos, revisa tus logs de build para identificar la causa real del fallo. Busca mensajes de error específicos que indiquen restricciones de recursos como `OOMKilled` o errores de límites de recursos. -::: - -Si tu proceso de build está fallando inesperadamente o siendo terminado, a menudo se debe a recursos insuficientes (CPU o memoria) asignados para el proceso de build. El Pod que ejecuta el build puede ser eliminado por Kubernetes cuando excede los límites de recursos configurados. - -**Síntomas comunes:** -- El build falla con errores OOMKilled (Out of Memory / Sin Memoria) -- El proceso de build se detiene a mitad de ejecución sin mensajes de error claros -- El build es extremadamente lento o parece congelado - -**Solución:** -Aumenta los recursos de build en **Proyecto** → **Configuración** → **Deploy Build Resources**. Consulta la documentación de [Recursos de Deploy Build](/docs/project/build_resources) para instrucciones detalladas sobre cómo ajustar las asignaciones de CPU y memoria. -
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/build/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/build/index.mdx deleted file mode 100644 index c77f6e931..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/build/index.mdx +++ /dev/null @@ -1,88 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - - -# Build - -Hemos hablado repetidamente sobre el Build tanto en la [Documentación de Proyectos](/docs/project) como en la [Documentación del Build Inicial](/docs/project). Un build es básicamente una plantilla de un sistema operativo, bibliotecas y otras dependencias del proyecto que despliegas. - -### Creación del Build - -Para crear un Build solo necesitas cuatro parámetros; solo el campo **Proyecto** es obligatorio, ya que los otros tres, si no se configuran, esperan hasta que este acceso se habilite automáticamente y se eligen por defecto: -- **Proyecto**: Se refiere a lo que llamamos ProjectEnv. Aquí eliges el ProjectEnv que deseas construir. -- **Branch**: Te permite elegir cualquier rama del repositorio que hayas elegido como Proyecto. Por defecto, se utiliza el nombre del Entorno. -- **Commit hash**: También puedes elegir el hash del commit para construir un commit específico y no el último, como lo hacemos por defecto. Por defecto, se utiliza el último commit. -- **Tag**: Un tag para diferenciar los builds. Por defecto, es 'latest'. - -## ¿Por qué necesitamos crear una imagen Docker? - -Dado que utilizamos [Helm charts ](https://helm.sh/docs/), necesitamos la imagen porque es lo que utilizan para desplegar un Kubernetes Release. - -:::info - -Recuerda que necesitas un Build para actualizar el código que se ejecuta dentro del Kubernetes Cluster en el Deployment. - -::: -:::tip Integración CI/CD con SleakOps - -SleakOps tiene su propia herramienta de línea de comandos (CLI) que puedes usar para automatizar Builds y Deployments en tu CI/CD. Más información [aquí](/docs/cli). - -::: - -## Recursos de Build y Deploy - -Los recursos de build y deploy son los componentes de infraestructura que SleakOps crea y gestiona para soportar los procesos de construcción y despliegue de tu aplicación. Estos recursos se aprovisionan automáticamente en tu cuenta de AWS y son esenciales para el pipeline de CI/CD. - -### Recursos de Build - -Cuando creas un build, SleakOps aprovisiona los siguientes recursos: - -#### AWS ECR (Elastic Container Registry) -- **Propósito**: Almacena tus imágenes Docker y Helm charts -- **Ubicación**: Creado automáticamente en la cuenta de AWS de tu proyecto -- **Nomenclatura**: Las imágenes se nombran según tu ProjectEnv (entorno + nombre del proyecto) -- **Acceso**: Gestionado a través de cuentas de servicio de SleakOps y roles IAM - -#### Entorno de Construcción Kaniko -- **Propósito**: Ejecuta construcciones Docker en un entorno seguro y containerizado -- **Características**: - - No requiere daemon de Docker - - Proceso de construcción seguro - - Optimizado para entornos de Kubernetes -- **Configuración**: Configurado automáticamente basado en tu Dockerfile y argumentos de construcción - -### Recursos de Deploy - -Durante el despliegue, SleakOps gestiona estos recursos: - -#### Almacenamiento de Helm Chart -- **Ubicación**: Almacenado en el mismo repositorio ECR que tus imágenes -- **Versionado**: Cada despliegue crea una nueva versión del Helm chart -- **Plantillas**: Generadas basadas en las configuraciones de tus cargas de trabajo - -#### Recursos de Kubernetes -- **Namespace**: Namespace dedicado para tu ProjectEnv -- **Service Account**: Gestiona permisos para tus cargas de trabajo -- **Secrets**: Creados automáticamente para variables de entorno y datos sensibles -- **ConfigMaps**: Almacenan datos de configuración no sensibles - -### Gestión de Recursos - -#### Limpieza Automática -- **Imágenes Antiguas**: SleakOps gestiona automáticamente las políticas de retención de imágenes -- **Builds Fallidos**: Los recursos de builds fallidos se limpian automáticamente -- **Recursos Huérfanos**: Los procesos de limpieza regulares eliminan recursos no utilizados - -#### Monitoreo de Recursos -- **Estado del Build**: Rastrea el progreso del build e identifica fallos -- **Uso de Recursos**: Monitorea el almacenamiento ECR y el consumo de recursos de construcción -- **Seguimiento de Costos**: Ve los costos asociados con los recursos de build y deploy - -:::info Propiedad de Recursos -Todos los recursos de build y deploy se crean en tu propia cuenta de AWS. SleakOps no almacena ningún dato exclusivamente - todo permanece bajo tu control y propiedad. -::: - -:::tip Optimización de Recursos -- Usa tags de imagen apropiados para gestionar versiones de imagen -- Revisa y limpia regularmente imágenes no utilizadas -- Monitorea los costos de almacenamiento ECR y configura políticas de ciclo de vida si es necesario -::: \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/build_resources.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/build_resources.mdx deleted file mode 100644 index e1ffd9f37..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/build_resources.mdx +++ /dev/null @@ -1,111 +0,0 @@ ---- -sidebar_label: Recursos de Deploy Build -sidebar_position: 6 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Recursos de Deploy Build - -La configuración de Recursos de Deploy Build te permite especificar las solicitudes de recursos de CPU y memoria para los procesos de construcción y despliegue. Esto ayuda a asegurar que tus builds y deployments tengan recursos suficientes para completarse exitosamente mientras optimizas los costos. - -## Configuración de Recursos - - -dockerfile settings page - - -Accede a la configuración de Recursos de Deploy Build: - -1. Navega a **Proyecto** → **Configuración** -2. Selecciona **Deploy Build Resources** del menú de configuración -3. Configura los valores de recursos según los requisitos de tu proyecto -4. Haz clic en **Save** para aplicar los cambios - -### Recursos de Solicitud de Build - -Configura los recursos asignados durante el proceso de construcción: - -- **Build Request CPU**: Especifica la asignación de CPU para procesos de construcción (medido en millicores) -- **Build Request Memory**: Especifica la asignación de memoria para procesos de construcción (medido en GiB) - -### Recursos de Solicitud de Deploy - -Configura los recursos asignados durante el proceso de despliegue: - -- **Deploy Request CPU**: Especifica la asignación de CPU para procesos de despliegue (medido en millicores) -- **Deploy Request Memory**: Especifica la asignación de memoria para procesos de despliegue (medido en GiB) - -:::tip Optimización de Recursos -- Comienza con valores por defecto y ajusta basándote en el rendimiento del build -- Monitorea los tiempos de build y uso de recursos para optimizar las asignaciones -- Asignaciones de recursos más altas pueden reducir los tiempos de build pero aumentar los costos -::: - -:::warning Límites de Recursos -- Asegúrate de que tu clúster tenga recursos suficientes para acomodar las asignaciones solicitadas -::: - -## FAQs - -
- -### ¿Qué sucede si mi build o deployment excede los recursos configurados? - - -:::info Revisa los Logs Primero -Antes de ajustar recursos, siempre revisa tus logs de build y deployment para confirmar que las restricciones de recursos son la causa real del fallo. Busca mensajes de error específicos como `OOMKilled` o indicadores de límites de recursos. -::: - -Cuando un proceso de build o deployment consume más CPU o memoria que los valores de solicitud configurados, el Pod que ejecuta el proceso puede ser terminado por Kubernetes antes de completarse. Esto resulta en: - -- **Builds fallidos**: El proceso de build se detiene a mitad de ejecución y no logra producir una imagen Docker -- **Deployments fallidos**: El proceso de deployment se interrumpe y no se completa exitosamente -- **Mensajes de error**: Verás errores indicando que el Pod fue terminado debido a restricciones de recursos (OOMKilled para memoria o throttling de CPU) - -Este es un problema común cuando se trabaja con: -- Bases de código grandes que requieren memoria significativa durante la compilación -- Procesos de build complejos con múltiples dependencias -- Proyectos con pasos extensos de testing o bundling -
- -
- -### ¿Cómo aumento los recursos de build y deployment? - -Si estás experimentando fallos en builds o deployments debido a restricciones de recursos, puedes aumentar los recursos asignados: - -1. Navega a **Proyecto** → **Configuración** en la interfaz de SleakOps -2. Selecciona **Deploy Build Resources** del menú de configuración -3. Aumenta los valores para el recurso que está causando problemas: - - **Build Request CPU**: Aumenta si los builds son lentos o sufren throttling de CPU - - **Build Request Memory**: Aumenta si los builds fallan con errores OOMKilled - - **Deploy Request CPU**: Aumenta si los deployments son lentos - - **Deploy Request Memory**: Aumenta si los deployments fallan durante el proceso -4. Haz clic en **Save** para aplicar los cambios -5. Dispara un nuevo build o deployment para usar las asignaciones de recursos actualizadas - -:::tip Encontrando los Valores Correctos -- Comienza duplicando los valores actuales si estás experimentando fallos -- Monitorea el uso real de recursos durante builds/deployments -- Ajusta de forma incremental hasta que los builds se completen exitosamente -- Recuerda que valores más altos pueden impactar los costos y la capacidad del clúster -::: -
- -
- -### ¿Cómo sé qué valores configurar? - -Comienza con los valores por defecto y ajusta basándote en el comportamiento observado: - -- Si los builds fallan con errores **OOMKilled**, aumenta **Build Request Memory** (prueba con 2Gi, 4Gi, o más) -- Si los builds son **muy lentos**, aumenta **Build Request CPU** (prueba con 1000m, 2000m, o más) -- Si los deployments fallan o expiran, aumenta los valores correspondientes de **Deploy Request** - -Monitorea tus logs de build y deployment para identificar problemas relacionados con recursos y ajusta en consecuencia. -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/chart/chart_dependencies.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/chart/chart_dependencies.mdx deleted file mode 100644 index a6022a5cd..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/chart/chart_dependencies.mdx +++ /dev/null @@ -1,118 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Dependencias de Chart - -Las Dependencias de Chart te permiten agregar charts externos a tu proyecto, siguiendo el mismo patrón que las [Dependencias de Helm Chart ](https://helm.sh/docs/helm/helm_dependency/). Esta funcionalidad te permite integrar servicios y componentes de terceros de manera fluida en tu despliegue de SleakOps. - -:::warning Configuración de NodePool Requerida -Dado que SleakOps utiliza NodePools para determinar la ubicación de recursos, debes configurar el parámetro `tolerations` para apuntar a un NodePool existente para todos los recursos de dependencias. -::: - -## Repositorios de Chart Soportados - -Actualmente, SleakOps soporta **Charts de Bitnami** exclusivamente. Puedes explorar los charts disponibles en [ArtifactHub ](https://artifacthub.io/packages/search?org=bitnami) para encontrar dependencias adecuadas para tu proyecto. - -## Agregando Dependencias de Chart - -Para agregar una nueva Dependencia de Chart, haz clic en el botón **Crear** en la sección de Configuración de Chart: - - -Botón de crear dependencias de chart - - -### Pasos de Configuración - -1. **Buscar y Seleccionar**: Usa los primeros dos campos para buscar el nombre del chart y seleccionar la versión deseada -2. **Configurar Valores**: Modifica la sección de valores abajo para personalizar el despliegue -3. **Establecer Tolerations**: **Crítico** - Actualiza todos los campos `tolerations` en los valores del chart para apuntar a tu NodePool - - -Formulario de configuración de dependencias de chart - - -:::tip Importante -Asegúrate de que cada campo `tolerations` en los valores del chart esté configurado correctamente para usar un NodePool. Sin esta configuración, Kubernetes no puede determinar dónde programar los pods, lo que lleva a fallas en el despliegue. -::: - -## Preguntas Frecuentes - -
- -### Mi despliegue fue exitoso pero los pods no funcionan. ¿Qué está mal? - -La causa más común es una configuración incorrecta de NodePool. Verifica que: -- Todos los campos `tolerations` estén configurados correctamente para apuntar a NodePools existentes -- El NodePool tenga recursos suficientes -- El NodePool esté en un estado saludable -
- -
- -### No puedo encontrar el chart que necesito. ¿Cuáles son mis opciones? - -Actualmente, solo se soportan charts del repositorio de Bitnami. Si necesitas un chart que no esté disponible en el repositorio de Bitnami, por favor contacta a nuestro equipo de soporte para discutir alternativas o solicitar soporte adicional de repositorios. -
- -
- -### ¿Cómo soluciono problemas de despliegue de dependencias? - -Pasos comunes de solución de problemas: -1. Verifica que las tolerations de NodePool estén configuradas correctamente -2. Comprueba que la versión del chart sea compatible -3. Asegúrate de que los valores requeridos estén configurados correctamente -4. Revisa los logs de pods para mensajes de error específicos -
- -
- -### Mis recursos no montan los volúmenes EBS correctamente. ¿Qué debería verificar? - -1. Asegúrate de que el EBS CSI Driver esté instalado y funcionando en tu clúster. Puedes consultar la [documentación de Addon](/docs/cluster/addons/ebs) para obtener orientación sobre cómo configurar EBS. -2. Asegúrate de haber completado los valores con el storageClass apropiado que se crea con el addon de EBS. Por ejemplo, un valor de persistencia para un chart podría verse así: -```yaml -persistence: - enabled: true - storageClass: "ebs-csi-default-sc" - accessModes: - - ReadWriteOnce - size: 5Gi -``` -3. En caso de que necesites otro storageClass, puedes definirlo como un [extra template](/docs/project/chart/extra_templates) y usarlo. Recuerda configurar el provisioner como `ebs.csi.aws.com`. -4. En caso de que los pods no estén iniciando, revisa los logs del EBS CSI Controller para verificar errores -
- -
- -### Mis recursos no montan los volúmenes EFS correctamente. ¿Qué debería verificar? - -1. Asegúrate de que el EFS CSI Driver esté instalado y funcionando en tu clúster. Sleakops instala este addon cuando creas un [volumen](/docs/project/volumes) para un proyecto. Puedes crear y luego eliminar un volumen para completar la instalación. -2. Asegúrate de haber completado los valores con el storageClass apropiado que prefieras para estos datos. Sleakops crea dos StorageClasses al instalar el addon de EFS: `efs-sc-retain` y `efs-sc-delete`. Por ejemplo, un valor de persistencia para un chart podría verse así: -```yaml -persistence: - enabled: true - storageClass: "efs-sc-retain" - accessModes: - - ReadWriteMany - size: 5Gi -``` -3. En caso de que necesites otro storageClass, puedes definirlo como un [extra template](/docs/project/chart/extra_templates) y usarlo. Recuerda configurar el provisioner como `efs.csi.aws.com`. -4. En caso de que los pods no estén iniciando, revisa los logs del EFS CSI Controller para verificar errores -
- -
- -### Los Pods no inician debido a errores de image pull. ¿Qué debería verificar? - -1. Verifica que el nombre de la imagen y el tag especificados en los valores del chart sean correctos. -2. Verifica que el repositorio sea bitnamilegacy en lugar de bitnami. -3. Verifica si existe un valor `allowInsecureImages: false` y cámbialo a `allowInsecureImages: true`. -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/chart/extra_templates.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/chart/extra_templates.mdx deleted file mode 100644 index 3e18abd9d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/chart/extra_templates.mdx +++ /dev/null @@ -1,122 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Extra Templates - -Los Extra Templates te permiten desplegar recursos personalizados de Kubernetes más allá de los componentes integrados de SleakOps. Esta poderosa funcionalidad te permite extender tu proyecto con recursos especializados como Ingresses personalizados, pods de prueba, u otros objetos de Kubernetes adaptados a tus requisitos específicos. - -## Casos de Uso -- Configuraciones de Ingress personalizadas para enrutamiento especializado -- Pods de prueba para depuración y desarrollo -- ConfigMaps o Secrets adicionales -- Políticas de red personalizadas -- Componentes especializados de monitoreo o logging - -:::warning Configuración de NodePool Requerida -Dado que SleakOps utiliza NodePools para la ubicación de recursos, todos los recursos personalizados deben incluir la configuración adecuada de `tolerations` apuntando a un NodePool existente. -::: - -## Desplegando un Ingress Personalizado - -Para desplegar un Ingress personalizado, agrega tu configuración YAML de Kubernetes en la sección **Templates**. Aquí tienes un ejemplo completo que puedes usar como punto de partida: - -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: coreexampledjangocelerysleakopscom - namespace: example-django-celery-myenv - labels: - app.kubernetes.io/name: example-django-celery - annotations: - alb.ingress.kubernetes.io/certificate-arn: >- - arn:aws:acm:REGION:ACCOUNT_ID:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - alb.ingress.kubernetes.io/group.name: example-django-celery-public - alb.ingress.kubernetes.io/healthcheck-path: /health - alb.ingress.kubernetes.io/healthcheck-port: '8000' - alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' - alb.ingress.kubernetes.io/ssl-redirect: '443' - alb.ingress.kubernetes.io/success-codes: '200' - alb.ingress.kubernetes.io/target-type: ip - meta.helm.sh/release-name: example-django-celery-myenv - meta.helm.sh/release-namespace: example-django-celery-myenv -spec: - ingressClassName: alb-ingressclass-public - tls: - - hosts: - - core.example-django-celery.sleakops.com - rules: - - host: core.example-django-celery.sleakops.com - http: - paths: - - path: /api/public/ - pathType: Prefix - backend: - service: - name: example-django-celery-myenv-api-public-svc - port: - number: 8000 -``` - -Una vez que hayas definido tu plantilla de Ingress, puedes desplegarla usando la interfaz: - - -Interfaz de despliegue de plantillas - - -## Preguntas Frecuentes - -
- -### ¿Cómo uso valores personalizados en mis plantillas? - - -Puedes definir valores personalizados en la sección **Values** en el lado derecho de la interfaz. Estos valores pueden ser referenciados en tus plantillas usando la sintaxis de plantillas de Helm. - - -Ejemplo de configuración de valores personalizados - - -El ejemplo anterior muestra cómo crear una plantilla de Pod que usa valores personalizados y cómo referenciarlos en tu configuración YAML. -
- -
- -### ¿Qué tipos de recursos de Kubernetes puedo desplegar? - - -SleakOps soporta **solo recursos con alcance de namespace** debido a requisitos de seguridad y aislamiento. Cada proyecto opera dentro de su propio namespace con permisos con alcance de namespace. - -**Recursos soportados incluyen:** -- Pods, Deployments, Services -- Ingresses, NetworkPolicies -- ConfigMaps, Secrets -- PersistentVolumeClaims -- Jobs, CronJobs - -**No soportados:** -- ClusterRoles, ClusterRoleBindings -- CustomResourceDefinitions -- PersistentVolumes -- Cualquier recurso con alcance de cluster -
- -
- -### ¿Cómo soluciono problemas de despliegue de plantillas? - - -Pasos comunes de solución de problemas: -1. **Validar sintaxis YAML** - Asegúrate de que tu plantilla sea YAML válido de Kubernetes -2. **Verificar tolerations de NodePool** - Verifica que las tolerations apunten a NodePools existentes -3. **Revisar cuotas de recursos** - Asegúrate de que haya recursos suficientes disponibles -4. **Validar referencias** - Verifica que los servicios, secrets o configmaps referenciados existan -5. **Revisar logs** - Revisa los logs de despliegue para mensajes de error específicos -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/chart/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/chart/index.mdx deleted file mode 100644 index 9b49676c9..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/chart/index.mdx +++ /dev/null @@ -1,98 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Chart - -Un **Chart** es un componente fundamental de un Proyecto que define lo que SleakOps despliega durante la ejecución de un despliegue. Los Charts en SleakOps son análogos a los [Helm Charts ](https://helm.sh/docs/topics/charts/) pero están específicamente adaptados para la funcionalidad de SleakOps. - -## Accediendo a la Configuración del Chart - -Puedes encontrar la sección de Chart navegando a **Proyecto → Configuración**: - - - Ubicación de configuración del Chart - - -:::warning Requisitos de NodePool -SleakOps utiliza NodePools para determinar dónde se despliegan los recursos. Debes configurar el parámetro `tolerations` para apuntar a un NodePool existente para todos los recursos desplegados. -::: - - - Interfaz de configuración del Chart - - -## Valores por Defecto - -SleakOps aplica automáticamente valores por defecto a sus Charts. Puedes ver estos valores haciendo clic en el área designada: - - - Punto de acceso a valores por defecto - - -Esto abre un panel lateral en el lado derecho que muestra los valores por defecto para todas las cargas de trabajo del Proyecto. - -### Valores Específicos de Carga de Trabajo - -Por ejemplo, aquí están los valores por defecto para un WebService 'api': - - - Valores por defecto del WebService API - - -### Valores Globales - -Valores que se aplican a todo el Proyecto: - - - Valores globales por defecto - - -## Preguntas Frecuentes - -
- ### ¿Dónde puedo encontrar el Chart de mi Proyecto? - Actualmente, los Charts no son visibles directamente en la plataforma. Sin - embargo, puedes descargar el Chart desde el repositorio ECR creado para tu - Proyecto en la Cuenta AWS correspondiente. -
- -
- ### ¿Puedo modificar el Chart desplegado por un Proyecto? - Sí, con algunas limitaciones. Puedes: - Agregar plantillas personalizadas - usando [**Extra Templates**](/docs/project/chart/extra_templates) - Agregar dependencias de - chart usando [**Chart Dependencies**](/docs/project/chart/chart_dependencies), similar a - [Helm Chart Dependencies - ](https://helm.sh/docs/helm/helm_dependency/) -
- -
- ### ¿Puedo agregar un Ingress personalizado a mi Proyecto? - Sí, este es uno de los casos de uso principales de la funcionalidad **Extra - Templates**. Consulta la [documentación de Extra - Templates](/docs/project/chart/extra_templates) para instrucciones detalladas. -
- -
- - ### ¿Puedo modificar las plantillas existentes de Kubernetes Service? - - No, la modificación de plantillas integradas de SleakOps no está soportada - actualmente. Estamos trabajando en habilitar modificaciones a las plantillas - integradas en futuras versiones. -
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/configure_your_dockerfile.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/configure_your_dockerfile.mdx deleted file mode 100644 index 60874b79d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/configure_your_dockerfile.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -sidebar_label: Configura tu Dockerfile -sidebar_position: 5 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - - -# Configura tu Dockerfile - -Configurar tu Dockerfile es crucial porque define cómo se construye y empaqueta tu aplicación en un contenedor. Un Dockerfile configurado correctamente garantiza que tu imagen Docker contenga todas las dependencias y configuraciones necesarias, permitiendo que tu aplicación se ejecute sin problemas en tu Environment. - - -## Preguntas Frecuentes - -
- -### ¿Qué debo especificar al configurar el Dockerfile en SleakOps? - -Al configurar tu Dockerfile en SleakOps, necesitas: - 1. **Establecer la Ruta del Dockerfile**: Proporciona la ruta relativa del Dockerfile dentro de tu repositorio. - 2. **Proporcionar Argumentos del Dockerfile**: Si tu Dockerfile requiere argumentos específicos para la construcción (por ejemplo, variables de entorno, configuraciones), debes proporcionar estos valores durante el proceso de construcción de la imagen Docker. -
- -
- -### ¿Cómo agrego los argumentos del Dockerfile? - -Una vez que especifiques la ruta del Dockerfile, SleakOps lo analizará para identificar cualquier argumento de construcción necesario. Si es necesario, SleakOps te pedirá que proporciones los valores para estos argumentos. Puedes actualizar estos argumentos en cualquier momento a través de la interfaz de SleakOps. - -:::tip DockerArgs desde CLI -También puedes definir DockerArgs cuando uses la CLI de SleakOps para builds. Usa el parámetro `--docker-args` para pasar argumentos de construcción directamente desde la línea de comandos: - -```bash -sleakops build -p myproject -b main --docker-args "ARG1=value1,ARG2=value2" -``` - -Esto es particularmente útil para pipelines de CI/CD donde quieres pasar diferentes argumentos basados en el entorno o contexto de construcción. -::: -
- -
- -### ¿Qué son los argumentos de construcción Docker? - -Los argumentos de construcción Docker son variables que se pasan durante el proceso de construcción del Docker para personalizar la construcción según diferentes entornos o configuraciones. Se definen en el Dockerfile utilizando la palabra clave `ARG`. SleakOps identificará estos argumentos y te pedirá que proporciones los valores necesarios. También puedes actualizar estos argumentos más adelante si es necesario. -
- -
- -### ¿Cómo actualizo la ruta del Dockerfile y los argumentos? - -Puedes añadirlos siguiendo los pasos descritos a continuación. -
- -## Configura tu Dockerfile -### 1. Accede a la configuración de tu project - 1. **Completa la Ruta del Dockerfile:** Para habilitar que SleakOps busque los argumentos necesarios, especifica la Ruta del Dockerfile y guarda los cambios. SleakOps analizará tu Dockerfile y mostrará los argumentos de construcción requeridos para que los proporciones. - -| **Ruta del Dockerfile** | El Dockerfile es un componente crítico utilizado para construir tu project en un contenedor. El campo de Ruta del Dockerfile requiere la ruta relativa al Dockerfile dentro del repositorio (por ejemplo, /Dockerfile, /src/Dockerfile o /app/Dockerfile). Este archivo contiene las instrucciones necesarias para crear la imagen del contenedor, que SleakOps construirá y usará posteriormente para los despliegues. | -| --- | --- | - - 2. **Agrega Argumentos Antes de Guardar:** Si ya conoces los argumentos requeridos, puedes ingresarlos antes de guardar. Esto te permite proporcionar los valores necesarios desde el principio en lugar de esperar a que SleakOps analice el Dockerfile. - - :::tip - Si eliges agregar los argumentos utilizando la opción de texto: Cada argumento debe añadirse en una nueva línea, separado por un signo igual (`=`), sin espacios adicionales. - - ARGUMENT_NAME = VALUE - ARGUMENT_TWO = VALUE - ARGUMENT_ONE = VALUE - ::: \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/_category_.json deleted file mode 100644 index 2dda8e0fd..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "label": "Dependencias", - "position": 5, - "link": { "type": "doc", "id": "index" } -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-mysql-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-mysql-aws.mdx deleted file mode 100644 index 1a5f70c4e..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-mysql-aws.mdx +++ /dev/null @@ -1,158 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Aurora MySQL - -SleakOps proporciona una integración perfecta con Amazon Aurora MySQL, un servicio de base de datos relacional completamente administrado y compatible con MySQL. Aurora MySQL combina el rendimiento y la disponibilidad de bases de datos comerciales de alta gama con la simplicidad y rentabilidad de las bases de datos de código abierto. Al aprovechar SleakOps para esta integración, puedes gestionar eficientemente clústeres Aurora MySQL dentro de tu entorno EKS, asegurando alto rendimiento, escalabilidad y confiabilidad para tus aplicaciones. - -## Preguntas Frecuentes - -
- -### ¿Cómo gestiona SleakOps las credenciales de Aurora MySQL? - -Cuando creas una dependencia Aurora MySQL en SleakOps, se genera automáticamente un Vargroup para tu clúster de base de datos. Este Grupo de Variables almacena de forma segura las credenciales de Aurora MySQL y otros detalles importantes de configuración, como el endpoint del clúster y la información de acceso del usuario. Podrás gestionarlos desde la sección de [Vargroups](/docs/project/vargroup). -
- -
- -### ¿Puedo cambiar la versión de Aurora MySQL después de desplegar el clúster? - -Sí, Aurora MySQL soporta actualizaciones de versión del motor. Sin embargo, el proceso de actualización requiere planificación cuidadosa y puede involucrar tiempo de inactividad. Se recomienda probar el proceso de actualización en un entorno no productivo primero. -
- -
- -### ¿Qué pasa si necesito más almacenamiento para mi clúster Aurora MySQL? - -Aurora MySQL escala automáticamente el almacenamiento de 10 GB hasta 128 TB sin requerir que provisiones almacenamiento por adelantado. El almacenamiento se escala automáticamente a medida que tus datos crecen, y solo pagas por el almacenamiento que uses. -
- -
- -### ¿Cómo creo un dump de mi base de datos Aurora MySQL? - -Para crear un dump de tu base de datos Aurora MySQL: -1. **Ejecuta el comando `mysqldump`**: -``` -mysqldump -h AURORA_MYSQL_ADDRESS -u AURORA_MYSQL_USERNAME -p --all-databases > dump.sql -``` -Reemplaza `AURORA_MYSQL_ADDRESS`, `AURORA_MYSQL_USERNAME`, y `dump.sql` con los valores apropiados. - -2. **Consulta la Documentación**: Para más información sobre cómo crear un dump, consulta la [documentación oficial de MySQL ](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html). -
- -
- -### ¿Cómo importo un dump existente usando docker? - -Para importar un dump de base de datos a tu clúster Aurora MySQL: -1. **Conecta a la VPN**: Asegúrate de estar conectado a la VPN de la cuenta AWS donde se encuentra el clúster Aurora. -2. **Prepara el archivo dump**: Coloca tu archivo dump de base de datos (ej., `dump.sql`) en el directorio `./initial_data/` en tu máquina local. -3. **Ejecuta Contenedor Docker** (Recomendado): - - Instala Docker en tu máquina local si no está instalado. - - Dejar tu dump en una carpeta "initial_data". - - Ejecuta un contenedor MySQL Docker con el siguiente comando: - ``` - docker run -it --name aurora-mysql-container -v ./initial_data/:/tmp/data/ -e MYSQL_ROOT_PASSWORD=AURORA_MYSQL_PASSWORD -d mysql bash - ``` - - Conecta a la terminal del contenedor: - ``` - docker exec -t -i aurora-mysql-container bash - ``` - - Importa el archivo dump: - ``` - mysql -h AURORA_MYSQL_ADDRESS -u AURORA_MYSQL_USERNAME -p < /tmp/data/dump.sql - ``` - Reemplaza `AURORA_MYSQL_ADDRESS`, `AURORA_MYSQL_USERNAME`, y `dump.sql` con tus detalles específicos. -
- -
- -### ¿Cómo importo un dump existente a mi máquina local? - -Alternativamente, puedes usar un cliente MySQL instalado en tu máquina local para importar el dump: -``` -mysql -h AURORA_MYSQL_ADDRESS -u AURORA_MYSQL_USERNAME -p < dump.sql -``` -
- -
- -### ¿Qué debo hacer si encuentro problemas de conexión con mi clúster Aurora MySQL? - -Verifica lo siguiente: -- Asegúrate de que el endpoint del clúster, nombre de usuario y contraseña sean correctos. -- Verifica que tus grupos de seguridad y reglas de firewall permitan el acceso. -- Asegúrate de que el clúster esté ejecutándose y tenga suficientes recursos (CPU, memoria). -- Verifica si el clúster está en estado disponible. -De lo contrario, contáctanos. -
- -
- -### ¿Cuáles son los beneficios de Aurora MySQL sobre MySQL estándar en RDS? - -Aurora MySQL ofrece varias ventajas: -- **Rendimiento**: Hasta 5x más rápido que MySQL estándar en RDS -- **Escalabilidad**: Escalado automático de almacenamiento hasta 128 TB -- **Disponibilidad**: Respaldo continuo a S3 con recuperación punto en el tiempo -- **Durabilidad**: Replicación de 6 vías a través de 3 Zonas de Disponibilidad -- **Compatibilidad**: Compatible con MySQL con cambios mínimos de código -- **Rentable**: Paga solo por el almacenamiento que uses -
- -:::info -Documentación de AWS: [Documentación de Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraMySQL.html) -::: - -## Configura tu Aurora MySQL -### 1. Agrega Aurora MySQL como Dependencia -Para integrar Aurora MySQL con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencies" -2. Elige "Aurora MySQL" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Configura tu Aurora MySQL. -Accederás al siguiente formulario: - - -Formulario de creación de Aurora MySQL - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre de la Base de Datos** | Nombre para la base de datos Aurora MySQL. Debe seguir el patrón: letras minúsculas y números, no puede ser "db" o "database". | -| **Versión del Motor de la Base de Datos** | Selecciona la versión específica del motor de la base de datos Aurora MySQL. La versión 3 es compatible con MySQL 8, la versión 2 con MySQL 5. | -| **Modo del Motor de la Base de Datos** | Elige entre **Serverless** (auto-escalado, pago por uso para cargas de trabajo impredecibles) o **Provisioned** (capacidad fija, mejor para cargas de trabajo consistentes). | -| **Nombre de Usuario Maestro de la Base de Datos** | Nombre de usuario maestro para el clúster Aurora MySQL. No puede ser "admin", "user", "database", o "name". | -| **Auto-generar Contraseña** | Si está habilitado, el backend generará una contraseña segura automáticamente. | -| **Contraseña Maestra de la Base de Datos** | Contraseña para el usuario maestro. Requerida si auto-generar está deshabilitado. No puede contener caracteres @, ', ", o /. | -| **Clase de Instancia de la Base de Datos** | **Modo Serverless**: Fijo a `db.serverless`
**Modo Provisioned**: Elige entre db.t3.medium, db.t4g.medium, db.t3.large, db.t4g.large, db.r8g.large, db.r8g.xlarge, db.r7i.large, db.r7i.xlarge.t3.medium. | -| **Capacidad Mínima de Aurora** | *(Solo Serverless)* Unidades de Capacidad Mínima de Aurora (0.5-256). Cada unidad ≈ 2GB RAM. | -| **Capacidad Máxima de Aurora** | *(Solo Serverless)* Unidades de Capacidad Máxima de Aurora (1-256). Cada unidad ≈ 2GB RAM. | -| **Crear un RDS desde un snapshot** | Marca esto si restauras desde un snapshot de base de datos. | -| **Identificador del Snapshot** | *(Requerido si restauras desde snapshot)* Identificador del snapshot RDS desde el cual restaurar. | -| **Período de Retención de Respaldo** | Número de días (1-35) para los cuales se mantienen los respaldos automáticos. | -| **Ventana de Respaldo** | Período para respaldos automatizados en formato HH:MM-HH:MM (UTC). | -| **Réplicas de Lectura** | Configuración para réplicas de lectura de la base de datos. Cada réplica requiere un nombre y configuración de acceso público. | - -### 3. Personaliza el nombre de tus variables para tu clúster Aurora MySQL. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios. -En este paso puedes cambiar el nombre de los atributos en caso de que sea necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia es creada. - - -Salidas de creación de Aurora MySQL - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-postgresql-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-postgresql-aws.mdx deleted file mode 100644 index 65474c566..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/aurora-postgresql-aws.mdx +++ /dev/null @@ -1,152 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Aurora PostgreSQL - -SleakOps proporciona una integración perfecta con Amazon Aurora PostgreSQL, un servicio de base de datos relacional completamente administrado y compatible con PostgreSQL. Aurora PostgreSQL combina el rendimiento y la disponibilidad de bases de datos comerciales de alta gama con la simplicidad y rentabilidad de las bases de datos de código abierto. Al aprovechar SleakOps para esta integración, puedes gestionar eficientemente clústeres Aurora PostgreSQL dentro de tu entorno EKS, asegurando alto rendimiento, escalabilidad y confiabilidad para tus aplicaciones. - -## Preguntas Frecuentes - -
- -### ¿Cómo gestiona SleakOps las credenciales de Aurora PostgreSQL? - -Cuando creas una dependencia Aurora PostgreSQL en SleakOps, se genera automáticamente un Vargroup para tu clúster de base de datos. Este Grupo de Variables almacena de forma segura las credenciales de Aurora PostgreSQL y otros detalles importantes de configuración, como el endpoint del clúster y la información de acceso del usuario. Podrás gestionarlos desde la sección de [Vargroups](/docs/project/vargroup). -
- -
- -### ¿Puedo cambiar la versión de Aurora PostgreSQL después de desplegar el clúster? - -Sí, Aurora PostgreSQL soporta actualizaciones de versión del motor. Sin embargo, el proceso de actualización requiere planificación cuidadosa y puede involucrar tiempo de inactividad. Se recomienda probar el proceso de actualización en un entorno no productivo primero. -
- -
- -### ¿Qué pasa si necesito más almacenamiento para mi clúster Aurora PostgreSQL? - -Aurora PostgreSQL escala automáticamente el almacenamiento de 10 GB hasta 128 TB sin requerir que provisiones almacenamiento por adelantado. El almacenamiento se escala automáticamente a medida que tus datos crecen, y solo pagas por el almacenamiento que uses. -
- -
- -### ¿Cómo creo un dump de mi base de datos Aurora PostgreSQL? - -Para crear un dump de tu base de datos Aurora PostgreSQL: -1. **Ejecuta el comando `pg_dump`**: -``` -pg_dump -h AURORA_POSTGRESQL_ADDRESS -U AURORA_POSTGRESQL_USERNAME -W > dump.sql -``` -Reemplaza `AURORA_POSTGRESQL_ADDRESS`, `AURORA_POSTGRESQL_USERNAME`, y `dump.sql` con los valores apropiados. - -2. **Consulta la Documentación**: Para más información sobre cómo crear un dump, consulta la [documentación oficial de PostgreSQL ](https://www.postgresql.org/docs/current/app-pgdump.html). -
- -
- -### ¿Cómo importo un dump existente usando docker? - -Para importar un dump de base de datos a tu clúster Aurora PostgreSQL: -1. **Conecta a la VPN**: Asegúrate de estar conectado a la VPN de la cuenta AWS donde se encuentra el clúster Aurora. -2. **Ejecuta Contenedor Docker** (Recomendado): - - Instala Docker en tu máquina local si no está instalado. - - Ejecuta un contenedor PostgreSQL Docker con el siguiente comando: - ``` - docker run -it --name aurora-postgresql-container -v ./initial_data/:/tmp/data/ -e POSTGRESQL_ROOT_PASSWORD=AURORA_POSTGRESQL_PASSWORD -d postgres bash - ``` - - Conecta a la terminal del contenedor: - ``` - docker exec -t -i aurora-postgresql-container bash - ``` - - Importa el archivo dump: - ``` - psql -h AURORA_POSTGRESQL_ADDRESS -U AURORA_POSTGRESQL_USERNAME -W -f /tmp/data/dump.sql - ``` - Reemplaza `AURORA_POSTGRESQL_ADDRESS`, `AURORA_POSTGRESQL_USERNAME`, y `dump.sql` con tus detalles específicos. -
- -
- -### ¿Cómo importo un dump existente a mi máquina local? - -Alternativamente, puedes usar un cliente PostgreSQL instalado en tu máquina local para importar el dump: -``` -psql -h AURORA_POSTGRESQL_ADDRESS -U AURORA_POSTGRESQL_USERNAME -W -f /tmp/data/dump.sql -``` -
- -
- -### ¿Qué debo hacer si encuentro problemas de conexión con mi clúster Aurora PostgreSQL? - -Verifica lo siguiente: -- Asegúrate de que el endpoint del clúster, nombre de usuario y contraseña sean correctos. -- Verifica que tus grupos de seguridad y reglas de firewall permitan el acceso. -- Asegúrate de que el clúster esté ejecutándose y tenga suficientes recursos (CPU, memoria). -- Verifica si el clúster está en estado disponible. -De lo contrario, contáctanos. -
- -
- -### ¿Cuáles son los beneficios de Aurora PostgreSQL sobre PostgreSQL estándar en RDS? - -Aurora PostgreSQL ofrece varias ventajas: -- **Rendimiento**: Hasta 3x más rápido que PostgreSQL estándar en RDS -- **Escalabilidad**: Escalado automático de almacenamiento hasta 128 TB -- **Disponibilidad**: Respaldo continuo a S3 con recuperación punto en el tiempo -- **Durabilidad**: Replicación de 6 vías a través de 3 Zonas de Disponibilidad -- **Compatibilidad**: Compatible con PostgreSQL con cambios mínimos de código -
- -:::info -Documentación de AWS: [Documentación de Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraPostgreSQL.html) -::: - -## Configura tu Aurora PostgreSQL -### 1. Agrega Aurora PostgreSQL como Dependencia -Para integrar Aurora PostgreSQL con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencies" -2. Elige "Aurora PostgreSQL" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Configura tu Aurora PostgreSQL. -Accederás al siguiente formulario: - - -Formulario de creación de Aurora PostgreSQL - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre de la Base de Datos** | Nombre para la base de datos Aurora PostgreSQL. Debe seguir el patrón: letras minúsculas y números, no puede ser "db" o "database". | -| **Versión del Motor de la Base de Datos** | Selecciona la versión específica del motor de la base de datos Aurora PostgreSQL. Elige entre las versiones soportadas. Cada versión incluye características específicas de PostgreSQL y actualizaciones de seguridad. | -| **Modo del Motor de la Base de Datos** | Aurora PostgreSQL está disponible solo en modo **Serverless**, que proporciona escalado automático basado en las necesidades de tu aplicación. Este modo escala la capacidad de cómputo hacia arriba y hacia abajo automáticamente, haciéndolo rentable para cargas de trabajo variables. | -| **Nombre de Usuario Maestro de la Base de Datos** | Nombre de usuario maestro para el clúster Aurora PostgreSQL. Este es el usuario principal con privilegios administrativos. No puede ser "admin", "user", "database", o "name". Debe comenzar con una letra y contener solo caracteres alfanuméricos. | -| **Auto-generar Contraseña** | Si está habilitado, el backend generará una contraseña segura automáticamente para mayor seguridad. Esto se recomienda para entornos de producción. | -| **Contraseña Maestra de la Base de Datos** | Contraseña para el usuario maestro. Requerida si auto-generar está deshabilitado. Debe tener al menos 8 caracteres y no puede contener caracteres @, ', ", o /. | -| **Capacidad Mínima de Aurora** | Unidades de Capacidad Mínima de Aurora (0.5-256) para el clúster serverless. Cada unidad es aproximadamente igual a 2GB de RAM. Esto establece el nivel de rendimiento base y asegura que los recursos mínimos estén siempre disponibles. | -| **Capacidad Máxima de Aurora** | Unidades de Capacidad Máxima de Aurora (1-256) para el clúster serverless. Cada unidad es aproximadamente igual a 2GB de RAM. Esto previene que el clúster escale más allá de los límites de tu presupuesto mientras permite la optimización del rendimiento. | -| **Período de Retención de Respaldo** | Número de días (1-35) para los cuales se mantienen los respaldos automáticos. Aurora PostgreSQL respalda automáticamente tu base de datos y almacena los respaldos en Amazon S3. Períodos de retención más largos proporcionan más opciones de recuperación pero aumentan los costos de almacenamiento. | -| **Ventana de Respaldo** | Período de tiempo para respaldos automatizados en formato HH:MM-HH:MM (UTC). Elige un momento cuando la actividad de tu base de datos típicamente sea baja para minimizar el impacto en el rendimiento. Aurora realiza respaldos durante esta ventana sin afectar tu aplicación. | -| **Réplicas de Lectura** | Configuración para réplicas de lectura de la base de datos para mejorar el rendimiento de lectura y proporcionar disponibilidad adicional. Cada réplica requiere un nombre único y puede configurarse como públicamente accesible o privada. Las réplicas de lectura ayudan a distribuir el tráfico de lectura y proporcionan capacidades de conmutación por error. | - -### 3. Personaliza el nombre de tus variables para tu clúster Aurora PostgreSQL. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios. -En este paso puedes cambiar el nombre de los atributos en caso de que sea necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia es creada. - - -Salidas de creación de Aurora PostgreSQL - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/index.mdx deleted file mode 100644 index 8220c565a..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/index.mdx +++ /dev/null @@ -1,173 +0,0 @@ ---- -sidebar_label: Dependencias -sidebar_position: 7 -pagination_next: project/workload/webservice ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Dependencias: Integración de Bases de Datos, Caché y Servicios de Mensajería - -Una dependencia en el contexto de SleakOps se refiere a cualquier infraestructura o servicio externo del cual tu aplicación depende para funcionar de manera efectiva. Estas dependencias incluyen una variedad de servicios y recursos de AWS que tu aplicación integra para mejorar sus capacidades y rendimiento. - -## Preguntas Frecuentes - -
- -### ¿Qué tipos de dependencias están incluidas en SleakOps? - -Aquí está la lista actualizada de dependencias incluidas en SleakOps: - 1. **Bases de Datos** - - **Amazon RDS**: Bases de datos relacionales gestionadas como MySQL, PostgreSQL, y otras. - 2. **Servicios de Caché** - - **Amazon ElastiCache para Redis**: Almacén de datos en memoria para cachear datos frecuentemente accedidos. - - **Amazon ElastiCache para Memcached**: Servicio de caché en memoria para mejorar el rendimiento y reducir la carga de la base de datos. - 3. **Almacenamiento de Objetos** - - **Amazon S3**: Almacenamiento de objetos escalable y seguro para almacenar y recuperar cualquier cantidad de datos. - 4. **Búsqueda y Análisis** - - **Amazon OpenSearch**: Un potente motor de búsqueda y análisis para explorar y visualizar datos, permitiendo insights y decisiones en tiempo real. - 5. **Colas de Mensajes** - - **Amazon SQS**: Servicio de colas de mensajes completamente gestionado que permite desacoplar componentes y mejorar la escalabilidad y confiabilidad de las aplicaciones. - - **RabbitMQ**: Un broker de mensajes de código abierto ampliamente utilizado que facilita la mensajería confiable y la integración entre componentes de aplicaciones. - -Estas dependencias se integran perfectamente con SleakOps, proporcionando un conjunto completo de servicios de AWS y de código abierto para mejorar la funcionalidad, el rendimiento y la escalabilidad de tu aplicación. -
- -
- -### ¿Puedo modificar la configuración de una dependencia después de la configuración inicial? - -Sí, puedes actualizar la configuración de las dependencias en cualquier momento. Asegúrate de guardar los cambios en la interfaz de SleakOps para aplicarlos. -
- -
- -### ¿Puede utilizarse la misma dependencia en varios proyectos? - -Por el momento, esto no es posible; necesitas una dependencia para cada proyecto. -
- -
- -### ¿Cómo elimino una dependencia? - -Accede a la sección *Dependency Listing* y haz clic en la opción de eliminar. -
- -
- -### ¿Qué sucede cuando elimino una dependencia? - -Al eliminar una dependencia, SleakOps eliminará toda la información relacionada con ella, y todo lo que dependa de esta dejará de funcionar. Para resolver esto, SleakOps crea un Deployment con el estado PENDING_APPROVAL, que debe ejecutarse manualmente lo antes posible para evitar tiempos de inactividad. -En caso de eliminar una base de datos, SleakOps generará una instantánea final antes de su eliminación. -
- -## Agregar una dependencia a tu proyecto -### 1. Navega a la sección Crear Dependencia -En el _Panel Izquierdo_, accede a la opción _Dependencies_ y luego, en la esquina superior derecha, haz clic en el botón _Crear_. - - -dependency-list - - -### 2. Selecciona el tipo de dependencia que deseas crear - -dependency-type-list - - -### 3. Completa los atributos iniciales -En SleakOps, todas las dependencias comienzan con los mismos pasos. Completa los siguientes atributos y haz clic en _Next_ para continuar. - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu proyecto. | -| **Proyecto** | Selecciona entre los proyectos existentes. | - - -dependency-create - - -### 4. Sigue las guías específicas de cada dependencia -Para continuar, elige entre las siguientes guías: - -[S3 Bucket](/docs/project/dependency/s3bucket-aws). -[MySQL](/docs/project/dependency/mysql-aws). -[PostgreSQL](/docs/project/dependency/postgresql-aws). -[Redis](/docs/project/dependency/redis-aws). -[Memcached](/docs/project/dependency/memcached-aws). -[OpenSearch](/docs/project/dependency/opensearch-aws). -[SQS](/docs/project/dependency/sqs-aws). - -## Acceso a Dependencias - -El acceso a dependencias se refiere a los mecanismos de seguridad y conectividad que permiten que las cargas de trabajo de tu aplicación interactúen de forma segura con dependencias externas. SleakOps gestiona automáticamente estos patrones de acceso para asegurar una comunicación segura entre tus servicios y sus dependencias. - -### Gestión de Acceso - -#### Configuración Automática de Service Account -Cuando creas una dependencia, SleakOps automáticamente: -- **Crea roles IAM** con permisos apropiados para el tipo específico de dependencia -- **Configura service accounts** en tu namespace de Kubernetes -- **Establece conexiones seguras** entre tus cargas de trabajo y la dependencia -- **Gestiona credenciales** a través de secrets de Kubernetes y roles IAM - -#### Seguridad de Red -- **Integración VPC**: Las dependencias se crean dentro de la VPC de tu proyecto para acceso seguro de red -- **Security Groups**: Configurados automáticamente para permitir el tráfico necesario entre servicios -- **Endpoints Privados**: Las dependencias usan endpoints privados cuando están disponibles para minimizar la exposición - -### Patrones de Acceso - -#### Acceso a Base de Datos -Para dependencias de base de datos (MySQL, PostgreSQL, etc.): -- **Cadenas de Conexión**: Generadas automáticamente y almacenadas como secrets de Kubernetes -- **Autenticación**: Gestionada a través de roles IAM y credenciales específicas de la base de datos -- **SSL/TLS**: Las conexiones encriptadas se configuran por defecto -- **Connection Pooling**: Gestión optimizada de conexiones para mejor rendimiento - -#### Acceso a Cache -Para servicios de caché (Redis, Memcached): -- **Configuración de Endpoint**: Configurada automáticamente en el entorno de tu aplicación -- **Autenticación**: Acceso seguro a través de roles IAM y credenciales específicas del servicio -- **Políticas de Red**: Acceso restringido solo a cargas de trabajo autorizadas - -#### Acceso a Almacenamiento -Para servicios de almacenamiento (S3, etc.): -- **Políticas de Bucket**: Configuradas automáticamente con acceso de menor privilegio -- **Permisos IAM**: Las service accounts reciben solo los permisos necesarios -- **Access Keys**: Gestionadas a través de roles IAM de AWS para mayor seguridad - -### Mejores Prácticas de Seguridad - -#### Principio de Menor Privilegio -- **Permisos Mínimos**: Las dependencias reciben solo los permisos mínimos requeridos -- **Acceso Específico de Recursos**: El acceso se limita a recursos específicos cuando es posible -- **Auditorías Regulares**: SleakOps proporciona herramientas para revisar y auditar el acceso a dependencias - -#### Gestión de Credenciales -- **Rotación Automática**: Las credenciales se rotan automáticamente cuando es posible -- **Almacenamiento Seguro**: Todas las credenciales se almacenan como secrets de Kubernetes -- **Sin Secrets Hardcodeados**: Las aplicaciones acceden a dependencias a través de variables de entorno - -:::info Monitoreo de Acceso -SleakOps proporciona capacidades de monitoreo y logging para rastrear patrones de acceso a dependencias, ayudándote a identificar posibles problemas de seguridad y optimizar el rendimiento. -::: - -:::tip Resolución de Problemas de Acceso -Si encuentras problemas de acceso con dependencias: -1. Verifica el estado de la dependencia en la consola de SleakOps -2. Confirma que tu carga de trabajo tiene la service account correcta -3. Revisa los permisos del rol IAM para la dependencia -4. Verifica la conectividad de red y configuraciones de security groups -::: \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mariadb-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mariadb-aws.mdx deleted file mode 100644 index 2c8a305dc..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mariadb-aws.mdx +++ /dev/null @@ -1,152 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS MariaDB - -SleakOps facilita la integración de bases de datos MariaDB a través de Amazon RDS (Relational Database Service). Amazon RDS para MariaDB es un servicio completamente administrado que simplifica la configuración, operación y escalado de bases de datos. MariaDB es un fork desarrollado por la comunidad y soportado comercialmente del sistema de gestión de bases de datos relacionales MySQL, que ofrece características mejoradas y mejoras de rendimiento. Al aprovechar SleakOps para esta integración, puedes gestionar eficientemente bases de datos MariaDB dentro de tu entorno EKS, asegurando soluciones de almacenamiento de datos robustas, escalables y confiables para tus aplicaciones. - -## Preguntas Frecuentes - -
- -### ¿Cómo gestiona SleakOps las credenciales de MariaDB? - -Cuando creas una dependencia MariaDB en SleakOps, se genera automáticamente un Vargroup para tu base de datos. Este Grupo de Variables almacena de forma segura las credenciales de MariaDB y otros detalles importantes de configuración, como el endpoint de la base de datos y la información de acceso del usuario. Podrás gestionarlos desde la sección de [Vargroups](/docs/project/vargroup). -
- -
- -### ¿Qué es el despliegue Multi-AZ y debería habilitarlo? - -El despliegue Multi-AZ (Zona de Disponibilidad) garantiza alta disponibilidad y soporte para conmutación por error al replicar tu base de datos en otra zona de disponibilidad. Se recomienda para entornos de producción para evitar tiempos de inactividad. Ten en cuenta que aumenta los costos. -
- -
- -### ¿Puedo cambiar la versión de MariaDB después de desplegar la base de datos? - -Sí, MariaDB soporta actualizaciones de versión del motor. Sin embargo, el proceso de actualización requiere planificación cuidadosa y puede involucrar tiempo de inactividad. Se recomienda probar el proceso de actualización en un entorno no productivo primero. -
- -
- -### ¿Qué pasa si necesito más almacenamiento para mi base de datos MariaDB? - -Puedes ajustar el tamaño de almacenamiento al configurar tu base de datos. Si necesitas más almacenamiento después del despliegue, SleakOps te permite escalar el tamaño de almacenamiento sin tiempo de inactividad. -
- -
- -### ¿Cómo creo un dump de mi base de datos MariaDB? - -Para crear un dump de tu base de datos MariaDB: -1. **Ejecuta el comando `mysqldump`**: -``` -mysqldump -h MARIADB_ADDRESS -u MARIADB_USERNAME -p --all-databases > dump.sql -``` -Reemplaza `MARIADB_ADDRESS`, `MARIADB_USERNAME`, y `dump.sql` con los valores apropiados. - -2. **Consulta la Documentación**: Para más información sobre cómo crear un dump, consulta la [documentación oficial de MariaDB ](https://mariadb.com/kb/en/mysqldump/). -
- -
- -### ¿Cómo importo un dump existente usando docker? - -Para importar un dump de base de datos a tu instancia MariaDB RDS: -1. **Conecta a la VPN**: Asegúrate de estar conectado a la VPN de la cuenta AWS donde se encuentra la instancia RDS. -2. **Ejecuta Contenedor Docker** (Recomendado): - - Instala Docker en tu máquina local si no está instalado. - - Ejecuta un contenedor MariaDB Docker con el siguiente comando: - ``` - docker run -it --name mariadb-container -v ./initial_data/:/tmp/data/ -e MARIADB_ROOT_PASSWORD=MARIADB_PASSWORD -d mariadb bash - ``` - - Conecta a la terminal del contenedor: - ``` - docker exec -t -i mariadb-container bash - ``` - - Importa el archivo dump: - ``` - mysql -h MARIADB_ADDRESS -u MARIADB_USERNAME -p < /tmp/data/dump.sql - ``` - Reemplaza `MARIADB_ADDRESS`, `MARIADB_USERNAME`, y `dump.sql` con tus detalles específicos. -
- -
- -### ¿Cómo importo un dump existente a mi máquina local? - -Alternativamente, puedes usar un cliente MariaDB instalado en tu máquina local para importar el dump: -``` -mysql -h MARIADB_ADDRESS -u MARIADB_USERNAME -p < dump.sql -``` -
- -
- -### ¿Qué debo hacer si encuentro problemas de conexión con mi base de datos MariaDB? - -Verifica lo siguiente: -- Asegúrate de que el endpoint de la base de datos, nombre de usuario y contraseña sean correctos. -- Verifica que tus grupos de seguridad y reglas de firewall permitan el acceso. -- Asegúrate de que la base de datos esté ejecutándose y tenga suficientes recursos (CPU, memoria). -De lo contrario, contáctanos. -
- -:::info -Documentación de AWS: [Documentación de Amazon RDS MariaDB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html) -::: - -## Configura tu MariaDB -### 1. Agrega MariaDB como Dependencia -Para integrar MariaDB con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencies" -2. Elige "MariaDB" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Configura tu MariaDB. -Accederás al siguiente formulario: - - -Formulario de creación de MariaDB - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre de la Base de Datos** | Nombre para la base de datos MariaDB. Debe seguir el patrón: letras minúsculas y números, no puede ser "db" o "database". Esto identifica tu base de datos específica dentro de la instancia MariaDB. | -| **Versión del Motor de la Base de Datos** | Selecciona la versión específica del motor de la base de datos MariaDB. Elige entre las versiones soportadas. Cada versión incluye características específicas de MariaDB, mejoras de rendimiento y actualizaciones de seguridad. | -| **Nombre de Usuario Maestro de la Base de Datos** | Nombre de usuario maestro para la instancia de base de datos MariaDB. Este es el usuario principal con privilegios administrativos. No puede ser "admin", "user", "database", o "name". Debe comenzar con una letra y contener solo caracteres alfanuméricos. | -| **Auto-generar Contraseña** | Si está habilitado, el backend generará una contraseña segura automáticamente para mayor seguridad. Esto se recomienda para entornos de producción para asegurar la complejidad de la contraseña. | -| **Contraseña Maestra de la Base de Datos** | Contraseña para el usuario maestro. Requerida si auto-generar está deshabilitado. Debe tener al menos 8 caracteres y no puede contener caracteres @, ', ", o /. | -| **Crear un RDS desde un snapshot** | Marca esto si restauras desde un snapshot de base de datos. Cuando está habilitado, necesitarás proporcionar el identificador del snapshot y algunos campos se vuelven de solo lectura. | -| **Identificador del Snapshot** | *(Requerido si restauras desde snapshot)* Identificador del snapshot RDS desde el cual restaurar. Esto te permite restaurar tu base de datos desde un punto de respaldo anterior. | -| **Clase de Instancia de la Base de Datos** | Define la clase de instancia que especifica la configuración de hardware para tu base de datos MariaDB. Elige entre tipos de instancia t4g/t3 (rendimiento burstable) o m7i/m8g (optimizado para memoria). Esto controla el rendimiento de CPU, memoria y red. | -| **Almacenamiento de la Base de Datos** | Especifica la cantidad de almacenamiento asignado para la base de datos en GiB (20-6144 GB). MariaDB usa almacenamiento SSD de propósito general por defecto. Esta es la asignación de almacenamiento inicial para tu base de datos. | -| **Auto-escalado de Almacenamiento Habilitado** | Habilita el escalado automático de almacenamiento para la instancia RDS. Cuando está habilitado, AWS aumentará automáticamente el almacenamiento cuando sea necesario, hasta el límite máximo de almacenamiento asignado. | -| **Almacenamiento Máximo Asignado** | *(Requerido si el auto-escalado de almacenamiento está habilitado)* Tamaño máximo de almacenamiento en GiB (20-65536 GB) cuando el auto-escalado de almacenamiento está habilitado. Esto previene costos inesperados estableciendo un límite superior para el escalado automático. | -| **Multi-AZ de la Base de Datos** | Habilita el despliegue Multi-Zona de Disponibilidad para alta disponibilidad. Esto crea una réplica en espera en una AZ diferente y proporciona capacidad de conmutación por error automática. Recomendado para entornos de producción. | -| **Respaldo Automatizado** | Habilita respaldos automáticos para la instancia RDS. Cuando está habilitado, MariaDB realizará snapshots diarios y respaldos de logs de transacciones, proporcionando capacidades de recuperación punto en el tiempo. | -| **Período de Retención de Respaldo** | *(Requerido si el respaldo automatizado está habilitado)* Número de días (1-35) para los cuales se mantienen los respaldos automáticos. Períodos de retención más largos proporcionan más opciones de recuperación pero aumentan los costos de almacenamiento. | -| **Ventana de Respaldo** | *(Requerido si el respaldo automatizado está habilitado)* Período de tiempo para respaldos automatizados en formato HH:MM-HH:MM (UTC). Elige un momento cuando la actividad de tu base de datos típicamente sea baja para minimizar el impacto en el rendimiento. | -| **Réplicas de Lectura** | *(Requerido si el respaldo automatizado está habilitado)* Configuración para réplicas de lectura de la base de datos para mejorar el rendimiento de lectura y proporcionar disponibilidad adicional. Cada réplica requiere un nombre, clase de instancia y configuración de acceso público. | - -### 3. Personaliza el nombre de tus variables para tu base de datos MariaDB. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios. -En este paso puedes cambiar el nombre de los atributos en caso de que sea necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia es creada. - - -Salidas de creación de MariaDB - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/memcached-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/memcached-aws.mdx deleted file mode 100644 index 2c00dba19..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/memcached-aws.mdx +++ /dev/null @@ -1,105 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Memcached - -SleakOps integra Amazon ElastiCache con Memcached, un servicio de caché en memoria completamente gestionado. Esta integración permite cachear datos frecuentemente accedidos, mejorando el rendimiento de las aplicaciones al reducir la carga en tus bases de datos. Con SleakOps, gestionar y desplegar clusters de Memcached se vuelve sencillo, proporcionando escalabilidad sin interrupciones y un rendimiento optimizado para tus aplicaciones. - -**Características clave de Memcached:** -- **Simplicidad**: Opera como un almacén de clave-valor sin soporte para estructuras de datos avanzadas. -- **Caché en memoria**: Todos los datos se almacenan en memoria para un acceso ultrarrápido. -- **Sin persistencia de datos**: Los datos son volátiles y se perderán si el nodo falla o se reinicia. -- **Escalabilidad horizontal**: Escala fácilmente agregando más nodos a tu cluster de Memcached. -- **Rentable frente a Redis**: Más asequible que Redis debido a la falta de funciones como la persistencia y la replicación. -- **Rendimiento**: Excelente para caché distribuido y de alta velocidad en aplicaciones con muchas lecturas. - -:::info -Para más información sobre Memcached y sus capacidades, puedes consultar la [documentación oficial de AWS Redis. ](https://aws.amazon.com/elasticache/memcached/). -::: - -## Preguntas Frecuentes - -
- -### ¿Cuáles son los casos de uso clave para Memcached? - -Memcached es ideal para cachear consultas de bases de datos frecuentemente accedidas, almacenar datos temporales de sesiones de usuario y cachear respuestas de API para reducir la carga en la base de datos. -
- -
- -### ¿Cuándo debería usar Memcached? - -Memcached es ideal para: -- **Necesidades de caché simples**: Si necesitas un caché básico y de alta velocidad para datos frecuentemente accedidos. -- **Datos no persistentes**: Cuando no necesitas que los datos sean persistentes y puedes tolerar la pérdida de datos en caso de fallo o reinicio del nodo. -- **Escalabilidad horizontal**: Para aplicaciones que se beneficien de agregar múltiples nodos de caché para distribuir la carga de manera eficiente. -- **Aplicaciones sensibles al costo**: Memcached es más rentable que Redis porque carece de funciones avanzadas como persistencia y replicación. -
- -
- -### ¿Por qué debería elegir Memcached sobre Redis? - -Memcached es una solución de caché más simple y rentable si no necesitas persistencia de datos, replicación o tipos de datos avanzados. Es adecuado para aplicaciones que priorizan el caché distribuido rápido. -
- -
- -### ¿Cómo escala Memcached en SleakOps? - -Memcached escala horizontalmente agregando más nodos a tu cluster, lo que permite distribuir la carga de caché entre múltiples nodos. -
- -
- -### ¿Memcached ofrece persistencia de datos? - -No, Memcached no soporta persistencia de datos. Todos los datos cacheados se almacenan en memoria y se perderán si el nodo se reinicia o falla. -
- -
- -### ¿Qué sucede con los datos cacheados si un nodo falla? - -Los datos cacheados en Memcached son volátiles, lo que significa que se perderán si un nodo falla o se reinicia. Para aplicaciones críticas, Redis (que soporta persistencia de datos) podría ser una mejor opción. -
- -## Configura tu AWS Memcached -### 1. Agrega AWS Memcached como una dependencia -Para integrar Memcached con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencies". -2. Elige "AWS Redis" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Configura tu base de datos Memcached - -Al agregar Memcached como una dependencia en SleakOps, necesitas configurar varios atributos clave: - - -memcached-create-p1 - - -| **Atributo** | **Descripción** | -| --- | --- | -| **Node Type** | Clase de instancia que determina el rendimiento y la capacidad de memoria de la instancia de Redis. Ejemplos: `cache.t3.micro`, `cache.m5.large`, `cache.r6g.large`. | -| **Nodes Quantity** | Define la cantidad de nodos Memcached para la escalabilidad horizontal. Agregar más nodos aumenta la escalabilidad. Ejemplo: 1 o más. | -| **Port** | El puerto de comunicación utilizado por Redis para interactuar con tu aplicación. Predeterminado: `11121` (puede personalizarse). | - -### 3. Personaliza los nombres de tus variables para Memcached - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios. -En este paso, puedes cambiar el nombre de los atributos si es necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia estará creada. - - -memcached-create-outputs - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/msk-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/msk-aws.mdx deleted file mode 100644 index bc5aba97a..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/msk-aws.mdx +++ /dev/null @@ -1,147 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS MSK (Managed Streaming for Apache Kafka) - -SleakOps proporciona una integración perfecta con Amazon MSK (Managed Streaming for Apache Kafka), un servicio completamente administrado que facilita la construcción y ejecución de aplicaciones que usan Apache Kafka para procesar datos de streaming. Amazon MSK elimina la sobrecarga operacional de gestionar la infraestructura de Kafka, permitiéndote enfocarte en construir tus aplicaciones. Al aprovechar SleakOps para esta integración, puedes gestionar eficientemente clústeres MSK dentro de tu entorno EKS, asegurando alto rendimiento, escalabilidad y confiabilidad para tus aplicaciones de datos de streaming. - -## Preguntas Frecuentes - -
- -### ¿Cómo gestiona SleakOps las credenciales de MSK? - -Cuando creas una dependencia MSK en SleakOps, se genera automáticamente un Vargroup para tu clúster Kafka. Este Grupo de Variables almacena de forma segura las credenciales de MSK y otros detalles importantes de configuración, como los endpoints del clúster y la información de autenticación. Podrás gestionarlos desde la sección de [Vargroups](/docs/project/vargroup). -
- -
- -### ¿Puedo cambiar la versión de Kafka después de desplegar el clúster? - -Sí, Amazon MSK soporta actualizaciones de versión de Kafka. Puedes actualizar entre las versiones soportadas. Sin embargo, el proceso de actualización requiere planificación cuidadosa y puede involucrar tiempo de inactividad. Se recomienda probar el proceso de actualización en un entorno no productivo primero. -
- -
- -### ¿Qué pasa si necesito más almacenamiento para mi clúster MSK? - -**Para modo Provisioned**: Configuras el tamaño de almacenamiento por nodo broker (1-16384 GB) durante la creación del clúster. Este almacenamiento se provisiona y gestiona automáticamente por AWS. Si necesitas más almacenamiento, tendrás que modificar la configuración del clúster, lo que puede requerir tiempo de inactividad. - -**Para modo Serverless**: El almacenamiento se gestiona y escala automáticamente por AWS basado en tus patrones de uso. No necesitas configurar el tamaño de almacenamiento ya que se escala automáticamente. -
- -
- -### ¿Cómo me conecto a mi clúster MSK? - -Para conectarte a tu clúster MSK: -1. **Obtén los Bootstrap Servers**: Usa los endpoints de bootstrap server proporcionados por SleakOps en el vargroup. -2. **Configura la Autenticación**: MSK soporta varios métodos de autenticación incluyendo SASL/SCRAM, IAM, y TLS. -3. **Usa Clientes Kafka**: Conéctate usando clientes y librerías estándar de Kafka. -4. **Conexión VPN**: Asegúrate de estar conectado a la VPN de la cuenta AWS donde se encuentra el clúster MSK. - -**Nota**: Tanto el modo Provisioned como Serverless usan los mismos métodos de conexión, pero el modo Serverless puede tener diferentes características de rendimiento y comportamiento de escalado. -
- -
- -### ¿Cómo creo topics en mi clúster MSK? - -Para crear topics en tu clúster MSK: -1. **Usando Herramientas Kafka**: -``` -kafka-topics.sh --create --topic my-topic --bootstrap-server MSK_BOOTSTRAP_SERVERS --partitions 3 --replication-factor 3 -``` -2. **Usando Kafka Admin Client**: Usa el Kafka Admin Client en el código de tu aplicación. -3. **Reemplaza Variables**: Reemplaza `MSK_BOOTSTRAP_SERVERS` con los endpoints reales de bootstrap server de tu vargroup. - -**Nota**: Para modo Provisioned, establece el factor de replicación para que coincida con tu número de nodos broker (mínimo 3 para producción). Para modo Serverless, AWS gestiona la replicación automáticamente. -
- -
- -### ¿Cómo produzco y consumo mensajes? - -Para producir y consumir mensajes: -1. **Ejemplo de Productor**: -``` -kafka-console-producer.sh --topic my-topic --bootstrap-server MSK_BOOTSTRAP_SERVERS -``` -2. **Ejemplo de Consumidor**: -``` -kafka-console-consumer.sh --topic my-topic --bootstrap-server MSK_BOOTSTRAP_SERVERS --from-beginning -``` -3. **Integración de Aplicación**: Usa clientes Kafka en el código de tu aplicación para uso en producción. -
- -
- -### ¿Qué debo hacer si encuentro problemas de conexión con mi clúster MSK? - -Verifica lo siguiente: -- Asegúrate de que los endpoints de bootstrap server, nombre de usuario y contraseña sean correctos. -- Verifica que tus grupos de seguridad y reglas de firewall permitan el acceso. -- Asegúrate de que el clúster esté ejecutándose y tenga suficientes recursos. -- Verifica si el clúster está en estado disponible. -- Verifica tu configuración de autenticación (SASL/SCRAM, IAM, o TLS). -De lo contrario, contáctanos. -
- -
- -### ¿Cuáles son los beneficios de Amazon MSK sobre Kafka auto-gestionado? - -Amazon MSK ofrece varias ventajas: -- **Operaciones Administradas**: No necesitas gestionar la infraestructura de Kafka -- **Alta Disponibilidad**: Capacidades de replicación y conmutación por error integradas -- **Seguridad**: Integrado con servicios de seguridad de AWS -- **Monitoreo**: Integración con CloudWatch para monitoreo y alertas -- **Escalabilidad**: Escalado fácil de instancias broker y almacenamiento -- **Compatibilidad**: Completamente compatible con Apache Kafka -
- -:::info -Documentación de AWS: [Documentación de Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) -::: - -## Configura tu MSK -### 1. Agrega MSK como Dependencia -Para integrar MSK con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencies" -2. Elige "MSK" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencies: Integrating Databases, Caching, and Messaging Services](/docs/project/dependency). - -### 2. Configura tu MSK. -Accederás al siguiente formulario: - - -Formulario de creación de MSK - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Modo de Despliegue** | Elige entre **Provisioned** (capacidad fija, control completo sobre la configuración) o **Serverless** (auto-escalado, pago por uso para cargas de trabajo variables). El modo Provisioned es ideal para cargas de trabajo consistentes con requisitos de rendimiento específicos, mientras que Serverless es perfecto para desarrollo y patrones de tráfico variables. | -| **Versión de Kafka** | *(Requerido para modo Provisioned)* Selecciona la versión específica de Apache Kafka para tu clúster MSK. Elige entre las versiones 2.8.1, 3.2.0, 3.3.2, 3.4.0, o 3.5.1. Cada versión incluye características específicas de Kafka, mejoras de rendimiento y actualizaciones de seguridad. | -| **Tipo de Instancia** | *(Requerido para modo Provisioned)* Define el tipo de instancia que especifica la configuración de hardware para tus brokers Kafka. Elige entre tipos de instancia t3 (rendimiento burstable) o m5 (propósito general). Esto controla el rendimiento de CPU, memoria y red para tus cargas de trabajo de streaming. | -| **Nodos Broker** | *(Requerido para modo Provisioned)* Número de nodos broker en tu clúster MSK (2-15 nodos). Usa 2 nodos para entornos de desarrollo. Para producción, usa 3 o más nodos (debe ser múltiplo de 3) para asegurar alta disponibilidad y tolerancia a fallos. Más nodos proporcionan mejor rendimiento y disponibilidad. | -| **Tamaño de Almacenamiento (GB)** | *(Requerido para modo Provisioned)* Tamaño de almacenamiento en GB por nodo broker (1-16384 GB). Esto determina cuántos datos puede almacenar localmente cada broker. Considera tus requisitos de retención de datos y necesidades de throughput al establecer este valor. | - -### 3. Personaliza el nombre de tus variables para tu clúster MSK. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios. -En este paso puedes cambiar el nombre de los atributos en caso de que sea necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia es creada. - - -Salidas de creación de MSK - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mysql-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mysql-aws.mdx deleted file mode 100644 index 8f5cf9776..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/mysql-aws.mdx +++ /dev/null @@ -1,193 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# MySQL en AWS - -SleakOps facilita la integración de bases de datos MySQL a través de Amazon RDS (Relational Database Service). Amazon RDS para MySQL es un servicio completamente administrado que simplifica la configuración, operación y escalado de bases de datos. Al usar SleakOps para esta integración, puedes gestionar eficientemente bases de datos MySQL dentro de tu entorno EKS (Elastic Kubernetes Service), asegurando soluciones de almacenamiento de datos robustas, escalables y confiables para tus aplicaciones. - -## Preguntas Frecuentes - -
- -### ¿Cómo gestiona SleakOps las credenciales de MySQL? - -Cuando creas una dependencia MySQL en SleakOps, se genera automáticamente un Vargroup para tu base de datos. Este Grupo de Variables almacena de forma segura las credenciales de MySQL y otros detalles importantes de configuración, como el endpoint de la base de datos y la información de acceso del usuario. Podrás gestionarlos desde la sección de [Vargroups](/docs/project/vargroup). -
- -
- -### ¿Qué es el despliegue Multi-AZ y debería habilitarlo? - -El despliegue Multi-AZ (Zona de Disponibilidad) garantiza alta disponibilidad y soporte para conmutación por error al replicar tu base de datos en otra zona de disponibilidad. Se recomienda para entornos de producción para evitar tiempos de inactividad. Ten en cuenta que aumenta los costos. -
- -
- -### ¿Puedo cambiar la versión de MySQL después de desplegar la base de datos? - -No, la versión del motor de la base de datos no puede cambiarse después del despliegue. Necesitarías crear una nueva instancia de MySQL con la versión deseada y migrar tus datos. O cambiarlo manualmente en la Consola de AWS. -
- -
- -### ¿Qué hago si necesito más almacenamiento para mi base de datos MySQL? - -Puedes ajustar el tamaño de almacenamiento al configurar tu base de datos. Si necesitas más almacenamiento después del despliegue, puedes escalar modificando la configuración en AWS, ya que por el momento SleakOps no lo permite. -
- -
- -### ¿Cómo creo un dump de mi base de datos MySQL? - -Para crear un dump de tu base de datos MySQL, usa el siguiente comando: -``` -sh -mysqldump -h MYSQL_ADDRESS -u MYSQL_USERNAME -p MYSQL_PASSWORD > dump.sql -``` -Reemplaza `MYSQL_ADDRESS`, `MYSQL_USERNAME` y `MYSQL_PASSWORD` con los valores apropiados. -Para información adicional sobre cómo crear un dump en MySQL, consulta la [documentación oficial de MySQL](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html). -Otra opción es crearlo directamente desde la Consola de AWS y luego importarlo. Consulta [Restaurar en una instancia de base de datos](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). -
- -
- -**¿Cómo importo un dump existente usando Docker?** - -Para más detalles: [Documentación de dump MySQL](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html) -Para importar un dump de base de datos a tu instancia MySQL en RDS: - 1. **Conéctate a la VPN**: Asegúrate de estar conectado a la VPN de la cuenta AWS donde está ubicada la instancia RDS. - 2. **Ejecuta un contenedor Docker** (Recomendado): - - Instala Docker en tu máquina local si aún no lo tienes instalado. - - Ejecuta un contenedor MySQL con el siguiente comando: - ``` - sh - docker run -it --name mysql-container -v ./initial_data/:/tmp/data/ -e MYSQL_ROOT_PASSWORD=MYSQL_PASSWORD -d mysql bash - ``` - - Conéctate a la terminal del contenedor: - ``` - sh - docker exec -t -i mysql-container bash - ``` - - Importa el archivo dump: - ``` - sh - mysql -h MYSQL_ADDRESS -u MYSQL_USERNAME -p < /tmp/data/dump.sql - ``` - Reemplaza `MYSQL_ADDRESS`, `MYSQL_USERNAME` y `MYSQL_PASSWORD` con los detalles de tu instancia RDS. -
- -
- -**Cómo importo un dump existente a mi máquina local?** - -Alternativamente, puedes usar un cliente de MySQL instalado en tu máquina local para importar el dump. -``` -mysql -h MYSQL_ADDRESS -u MYSQL_USERNAME -p MYSQL_PASSWORD < /tmp/data/dump.sql -``` -
- -
- -**¿Qué debo hacer si tengo problemas de conexión con mi base de datos MySQL?** - -- Verifica que el endpoint de la base de datos, el nombre de usuario y la contraseña sean correctos. -- Asegúrate de que los grupos de seguridad y las reglas del firewall permitan el acceso. -- Verifica que la base de datos esté en funcionamiento y tenga suficientes recursos (CPU, memoria). -Si el problema persiste, contáctanos. -
- -
- -**¿Qué es una réplica de lectura en RDS?** - -Una réplica de lectura de RDS es una copia de solo lectura de tu instancia de base de datos principal en Amazon RDS. Ayuda a distribuir cargas pesadas de lectura y mejora el rendimiento y la escalabilidad de tu base de datos al descargar las operaciones de lectura desde la base de datos principal. -Las réplicas de lectura de RDS son ideales cuando necesitas: -- Descargar operaciones intensivas de lectura de tu instancia principal. -- Escalar tus operaciones de lectura a medida que tu aplicación crece. -- Distribuir las lecturas de la base de datos entre múltiples ubicaciones geográficas. -- Tener una solución de respaldo que pueda promoverse rápidamente como instancia principal en caso de falla. -:::info -Ten en cuenta que las réplicas de lectura tienen un retraso al realizar actualizaciones. -::: -
- -
- -**¿Cómo configuro una réplica de lectura en SleakOps?** - -En SleakOps, al crear una réplica de lectura para tu base de datos RDS, necesitas proporcionar la siguiente información: -- **Nombre** de la réplica -- **Clase de instancia de la réplica**, que determina el tipo de instancia para la réplica. -- **Accesibilidad pública de la réplica**, para decidir si la réplica debe tener una IP pública o ser accesible solo dentro de tu red privada. -
- -
- -**¿Puedo eliminar una réplica?** - -Actualmente, la única forma de hacerlo es eliminando la dependencia. -
- -:::info -Documentación de AWS: [Documentación de Amazon RDS MySql](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) -::: - -## Configura tu MySQL -### 1. Agregar MySQL como una Dependencia -Para integrar MySQL con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencias". -2. Elige "MySQL" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencias: Integrando Bases de Datos, Caché y Servicios de Mensajería](/docs/project/dependency). - -### 2. Configura tu MySQL. -Accederás al siguiente formulario: - - -mysql-create-p1 - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Versión del Motor de Base de Datos** | Selecciona la versión específica del motor de base de datos MySQL que deseas usar. Esto asegura compatibilidad con los requerimientos de tu aplicación. Ejemplo: `MySQL 8.0.2`, `MySQL 5.7.1`. | -| **Clase de Instancia de Base de Datos** | Define la clase de instancia que especifica la configuración de hardware para tu base de datos MySQL. Esto controla el rendimiento de CPU, memoria y red. Ejemplo: `db.m6g.large`, `db.t3.medium`. Consulta más detalles en [AWS](https://aws.amazon.com/es/rds/instance-types/). | -| **Almacenamiento de Base de Datos** | Especifica la cantidad de almacenamiento asignado para la base de datos. Ejemplo: 100 GB, 500 GB. | -| **Nombre de Usuario** | Proporciona el nombre de usuario maestro para la base de datos MySQL. Este es el usuario principal con privilegios administrativos. Ejemplo: admin, root. | -| **Contraseña** | Contraseña para que el usuario maestro acceda a la base de datos. | -| **Zona de Disponibilidad Múltiple** | Activa o desactiva la implementación Multi-AZ. Esto asegura alta disponibilidad y soporte de conmutación por error replicando la base de datos en múltiples zonas de disponibilidad. Recomendado para entornos de producción. | -| **Copia de Seguridad Automática** | Configura copias de seguridad automáticas para la base de datos MySQL. Esto asegura la protección de los datos activando instantáneas diarias y copias de seguridad del registro de transacciones. Configura el _Periodo de Retención de Copias de Seguridad_ y la _Ventana de Copias de Seguridad_. Recomendado para entornos de producción. | -| **Periodo de Retención de Copias de Seguridad** | Define el número de días para retener copias de seguridad automáticas. | -| **Ventana de Copias de Seguridad** | Periodo de tiempo en el que se realizarán las copias de seguridad. | - -:::warning -SleakOps solo permite la creación de réplicas durante la creación de la dependencia. -::: - -Después de ingresar los datos básicos, necesitas decidir si se creará una réplica. Para hacerlo: -1. En el formulario, busca la sección **Definición de Réplicas de Lectura RDS** y haz clic en + _Añadir Elemento_. -2. Completa los siguientes datos: - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Un nombre para la réplica. | -| **Clase de Instancia de Réplica** | Define la clase de instancia que especifica la configuración de hardware para tu base de datos MySQL. Esto controla el rendimiento de CPU, memoria y red. Ejemplo: `db.m6g.large`, `db.t3.medium`. | -| **Réplica Accesible Públicamente** | Decide si la réplica debería tener una IP pública o ser accesible solo dentro de tu red privada. | - -### 3. Personaliza el nombre de las variables para tu base de datos MySQL. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un grupo de variables (vargroup) para contener todos los atributos necesarios. -En este paso, puedes cambiar el nombre de los atributos si es necesario. -SleakOps completa automáticamente los valores. -Después de este paso, tu dependencia está creada. - - -mysql-create-outputs - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/opensearch-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/opensearch-aws.mdx deleted file mode 100644 index ce7a9bd23..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/opensearch-aws.mdx +++ /dev/null @@ -1,76 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS OpenSearch - -SleakOps se integra con Amazon OpenSearch (anteriormente conocido como Amazon Elasticsearch Service), un potente motor de búsqueda y análisis diseñado para ayudarte a buscar, analizar y visualizar datos en tiempo real. Al utilizar OpenSearch en SleakOps, puedes implementar, gestionar y escalar rápidamente tu infraestructura de búsqueda, obteniendo valiosos conocimientos de tus datos. - -:::info -Para más información sobre OpenSearch y sus capacidades, puedes consultar la [Documentación de Amazon OpenSearch Service ](https://docs.aws.amazon.com/opensearch-service/). -::: - -## Preguntas Frecuentes - -
- -### ¿Cuáles son los casos de uso de OpenSearch? - -OpenSearch se utiliza comúnmente para búsquedas de texto completo, análisis en tiempo real, monitoreo y observabilidad, y análisis de registros. También es ideal para potenciar funcionalidades de búsqueda en sitios web y aplicaciones. -
- -
- -### ¿Qué significa "Dedicated Master Enabled"? - -Cuando está habilitado, SleakOps configura nodos maestros dedicados que ayudan a gestionar el dominio de OpenSearch. Proporcionan mayor estabilidad al separar las tareas de gestión de los nodos de datos. Esto es altamente recomendado para cargas de trabajo en producción. -
- -
- -### ¿Cuál es la configuración recomendada para nodos maestros en producción? - -Para entornos de producción, SleakOps recomienda usar 3 nodos maestros dedicados para mejorar la estabilidad y el rendimiento de tu clúster de OpenSearch. -
- -## Configura tu OpenSearch -### 1. Agrega AWS OpenSearch como una Dependencia -Para integrar OpenSearch con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencias". -2. Elige "SQS" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencias: Integrando Bases de Datos, Caché y Servicios de Mensajería](/docs/project/dependency). - -### 2. Configura tu OpenSearch. -Al agregar OpenSearch como una dependencia en SleakOps, necesitas configurar varios atributos clave: - - -opensearch-create-p1 - - -| **Atributo** | **Descripción** | -| --- | --- | -| **Cola FIFO** | Especifica el tipo de cola SQS: `Standard Queue` (para la mayoría de los casos) o `FIFO Queue` (si se requiere orden de mensajes). | -| **Desduplicación FIFO** | Solo para Colas FIFO, para evitar duplicados. | -| **Periodo de Retención de Mensajes** | Especifica la cantidad de tiempo que un mensaje será retenido en la cola si no ha sido consumido. | De 1 minuto a 14 días (Por defecto: 4 días). | -| **Tamaño Máximo de Mensaje** | El tamaño máximo de un mensaje que puede ser enviado a la cola SQS. | Hasta 256 KB (Por defecto: 256 KB). | -| **Retraso en la Entrega en Segundos** | El retraso entre el envío de un mensaje a SQS y su visibilidad en la cola. Sin retraso por defecto. | De 0 a 15 minutos (Por defecto: 0 segundos). | -| **Tiempo de Espera para Recibir Mensajes** | Determina cuánto tiempo esperará una llamada `ReceiveMessage` si no hay mensajes disponibles en la cola. | De 0 a 20 segundos (Por defecto: 0 segundos). | -| **Timeout de Visibilidad** | La duración durante la cual un mensaje permanece invisible después de que un componente lo lea desde la cola. | De 0 a 12 horas (Por defecto: 30 segundos). | -| **Cola de Mensajes Fallidos (DLQ)** | Agrega una cola donde los mensajes que fallan en ser procesados múltiples veces son enviados para análisis adicional. | Configura DLQ con un conteo máximo de intentos. | - -### 3. Personaliza los nombres de tus variables para tu SQS. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un grupo de variables (vargroup) para contener todos los atributos necesarios. -En este paso, puedes cambiar el nombre de los atributos si es necesario. -SleakOps completa automáticamente los valores. -Después de este paso, tu dependencia está creada. - - -sqs-create-outputs - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/postgresql-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/postgresql-aws.mdx deleted file mode 100644 index b9bcdc07d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/postgresql-aws.mdx +++ /dev/null @@ -1,193 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS PosgreSQL - -SleakOps ofrece una integración fluida con Amazon RDS para PostgreSQL, un servicio de base de datos relacional completamente administrado. PostgreSQL es conocido por sus características avanzadas, escalabilidad y rendimiento robusto, lo que lo convierte en una opción preferida para aplicaciones complejas y operaciones intensivas en datos. Al integrar PostgreSQL a través de SleakOps, puedes gestionar eficientemente tus implementaciones de bases de datos y aprovechar el poder del servicio administrado de AWS. - -## Preguntas Frecuentes - -
- -### ¿Cómo gestiona SleakOps las credenciales de PostgreSQL? - -Cuando creas una dependencia de PostgreSQL en SleakOps, este genera automáticamente un Vargroup para tu base de datos. Este Grupo de Variables almacena de forma segura las credenciales de MySQL y otros detalles importantes de configuración, como el endpoint de la base de datos y la información de acceso de usuarios. Podrás gestionarlos desde la sección [Vargroups](/docs/project/vargroup). -
- -
- -### ¿Qué es una implementación Multi-AZ y debería habilitarla? - -La implementación Multi-AZ (Zona de Disponibilidad) garantiza alta disponibilidad y soporte de conmutación por error al replicar tu base de datos en otra zona de disponibilidad. Se recomienda para entornos de producción para evitar tiempos de inactividad. Ten en cuenta que incrementa los costos. -
- -
- -### ¿Puedo cambiar la versión de PostgreSQL después de que la base de datos esté implementada? - -No, la versión del motor de base de datos no puede cambiarse después de la implementación. Necesitarías crear una nueva instancia de PostgreSQL con la versión deseada y migrar tus datos. O bien cambiarla manualmente en la consola de AWS. -
- -
- -### ¿Qué sucede si necesito más almacenamiento para mi base de datos PostgreSQL? - -Puedes ajustar el tamaño de almacenamiento al configurar tu base de datos. Si necesitas más almacenamiento después de la implementación, SleakOps te permite escalar el tamaño de almacenamiento sin tiempos de inactividad. -
- -
- -### ¿Cómo puedo crear un backup (dump) de mi base de datos PostgreSQL? - -Para crear un backup de tu base de datos PostgreSQL: - 1. **Ejecuta el comando `pg_dump`**: -``` -sh -pg_dump -h POSTGRESQL_ADDRESS -U POSTGRESQL_USERNAME -W > dump.sql -``` -Reemplaza `POSTGRESQL_ADDRESS`, `POSTGRESQL_USERNAME` y `dump.sql` con los valores correspondientes. - 2. Consulta la documentación: Para más información, consulta la [documentación oficial de PostgreSQL](https://www.postgresql.org/docs/current/app-pgdump.html). -
- -
- -### ¿Cómo importo un backup existente usando Docker? - -Para importar un dump de base de datos en tu instancia de PostgreSQL RDS: - 1. **Conéctate a la VPN**: Asegúrate de estar conectado a la VPN de la cuenta AWS donde está ubicada la instancia RDS. - 2. **Ejecuta un contenedor Docker** (Recomendado): - - Instala Docker en tu máquina local si aún no lo tienes. - - Ejecuta un contenedor Docker de PostgreSQL con el siguiente comando: - ``` - sh - docker run -it --name postgresql-container -v ./initial_data/:/tmp/data/ -e POSTGRESQL_ROOT_PASSWORD=POSTGRESQL_PASSWORD -d postgres bash - ``` - - Conéctate al terminal del contenedor: - ``` - sh - docker exec -t -i postgresql-container bash - ``` - - Importa el archivo de backup: - ``` - pg_dump -h POSTGRESQL_ADDRESS -U POSTGRESQL_USERNAME -W < /tmp/data/dump.sql - ``` - Reemplaza `POSTGRESQL_ADDRESS`, `POSTGRESQL_USERNAME` y `dump.sql` con tus detalles específicos. -
- -
- -### ¿Cómo importo un dump existente a mi máquina local? - -Alternativamente, puedes usar un cliente de PostgreSQL instalado en tu máquina local para importar el dump. -``` -sh -psql -h POSTGRESQL_ADDRESS -U POSTGRESQL_USERNAME -W -f /tmp/data/dump.sql -``` -
- -
- -### ¿Qué debo hacer si encuentro problemas de conexión con mi base de datos PostgreSQL? - -Verifica lo siguiente: -- Asegúrate de que el endpoint de la base de datos, el nombre de usuario y la contraseña sean correctos. -- Verifica que las reglas de tu firewall permitan el acceso. -- Asegúrate de que la base de datos esté funcionando y tenga suficientes recursos (CPU, memoria). -De lo contrario, contáctanos. -
- -
- -### ¿Qué es una réplica de lectura de RDS? - -Una réplica de lectura de RDS es una copia de solo lectura de tu instancia principal de base de datos en Amazon RDS. Ayuda a distribuir las cargas de trabajo de lectura intensivas y mejora el rendimiento y la escalabilidad de tu base de datos al descargar las operaciones de lectura de la base de datos principal. -Las réplicas de lectura de RDS son ideales cuando necesitas: -- Descargar operaciones de lectura intensivas de tu instancia principal. -- Escalar las operaciones de lectura a medida que tu aplicación crece. -- Distribuir las lecturas de la base de datos en múltiples ubicaciones geográficas. -- Tener una solución de respaldo que pueda ser promovida rápidamente a una instancia principal en caso de falla. -:::info -Ten en cuenta que las réplicas de lectura tienen un retraso al realizar actualizaciones. -::: -
- -
- -### ¿Cómo configuro una réplica de lectura en SleakOps? - -En SleakOps, cuando creas una réplica de lectura para tu base de datos RDS, necesitarás proporcionar la siguiente información: -- **Nombre** de la réplica -- **Clase de Instancia de la réplica**, que determina el tipo de instancia para la réplica. -- **Accesibilidad Pública de la réplica**, para decidir si la réplica debe tener una IP pública o ser accesible solo dentro de tu red privada. -
- -
- -### ¿Puedo eliminar una réplica? - -Por el momento, la única forma es eliminar la dependencia. -
- -:::info -Documentación de AWS: [Documentación de Amazon RDS PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) -::: - -## Configura tu PostgreSQL -### 1. Agregar PostgreSQL como una dependencia -Para integrar PostgreSQL con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencies". -2. Elige "PostgreSQL" de la lista de tipos de dependencia disponibles. -Para más detalles, consulta [Dependencies: Integración de Bases de Datos, Caching y Servicios de Mensajería](/docs/project/dependency). - -### 2. Configura tu base de datos PostgreSQL. -Accederás al siguiente formulario: - - -postgres-create-p1 - - -Estos son los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Versión del Motor de Base de Datos** | Selecciona la versión específica del motor de base de datos PostgreSQL que deseas usar. Esto asegura la compatibilidad con los requisitos de tu aplicación. Ejemplo: `PostgreSQL 14.9`, `PostgreSQL 16.5`. | -| **Clase de Instancia de Base de Datos** | Define la clase de instancia que especifica la configuración de hardware para tu base de datos PostgreSQL. Esto controla el rendimiento de CPU, memoria y red. Ejemplo: `db.m6g.large`, `db.t3.medium`. Consulta [detalles de AWS](https://aws.amazon.com/es/rds/instance-types/). | -| **Almacenamiento de Base de Datos** | Especifica la cantidad de almacenamiento asignado para la base de datos. Ejemplo: 100 GB, 500 GB. | -| **Nombre de Usuario** | Proporciona el nombre de usuario principal para la base de datos PostgreSQL. Este es el usuario principal con privilegios administrativos. Ejemplo: admin, root. | -| **Contraseña** | Contraseña para el usuario principal para acceder a la base de datos. | -| **Zona de Disponibilidad Múltiple (Multi-AZ)** | Habilita o deshabilita la implementación Multi-AZ. Esto asegura alta disponibilidad y soporte de conmutación por error al replicar la base de datos en múltiples zonas de disponibilidad. Se recomienda para entornos de producción. | -| **Respaldo Automático** | Configura respaldos automáticos para la base de datos PostgreSQL. Esto asegura la protección de datos al habilitar instantáneas diarias y respaldos de registros de transacciones. Configura el _Periodo de Retención de Respaldo_ y la _Ventana de Respaldo_. Se recomienda para entornos de producción. | -| **Periodo de Retención de Respaldo** | Establece el número de días para retener los respaldos automáticos. | -| **Ventana de Respaldo** | Período de tiempo durante el cual se realizarán los respaldos. | - -:::warning -SleakOps permite la creación de réplicas solo durante la creación de la dependencia. -::: - -Después de estos datos básicos, necesitarás decidir si se creará una réplica. Para hacerlo: -1. En el formulario, busca la sección **Definición de Réplicas de Lectura de RDS** y haz clic en + _Añadir Elemento_. -2. Completa los siguientes datos: - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Un nombre para la réplica | -| **Clase de Instancia de la réplica** | Define la clase de instancia que especifica la configuración de hardware para la réplica. Esto controla el rendimiento de CPU, memoria y red. Ejemplo: `db.m6g.large`, `db.t3.medium`. | -| **Accesibilidad Pública de la réplica** | Decide si la réplica debe tener una IP pública o ser accesible solo dentro de tu red privada. | - -### 3. Personaliza el nombre de tus variables para tu base de datos PostgreSQL. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para almacenar todos los atributos necesarios. -En este paso, puedes cambiar el nombre de los atributos si es necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia se crea. - - -postgres-create-outputs - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/redis-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/redis-aws.mdx deleted file mode 100644 index 348cc87d0..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/redis-aws.mdx +++ /dev/null @@ -1,82 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS Redis - -SleakOps facilita la integración de Amazon ElastiCache con Redis, un sistema de almacenamiento de datos en memoria completamente gestionado. Este servicio te permite almacenar en caché los datos a los que se accede con frecuencia, mejorando el rendimiento de la aplicación y reduciendo la carga en tus bases de datos principales. Al usar Redis a través de SleakOps, tus aplicaciones pueden experimentar tiempos de respuesta más rápidos, mejor escalabilidad y menor latencia. - -:::info -Para más información sobre Redis y sus capacidades, puedes consultar la [documentación oficial de AWS Redis. ](https://aws.amazon.com/elasticache/redis/). -::: - -## Preguntas Frecuentes - -
- -### ¿Qué características hacen de Redis una buena opción para mi aplicación? - -Redis ofrece varias características avanzadas que lo hacen adecuado para una amplia gama de aplicaciones: -- **Persistencia de Datos**: Redis puede guardar los datos en disco, asegurando que la información no se pierda en caso de un reinicio. -- **Estructuras de Datos Avanzadas**: Redis soporta estructuras de datos más complejas que los almacenes clave-valor simples, como listas, conjuntos, hashes, conjuntos ordenados y más. -- **Alta Disponibilidad**: A través de replicación y conmutación por error automática, Redis asegura que tu aplicación siga funcionando incluso si un nodo falla. -- **Escalabilidad**: Redis se puede escalar tanto verticalmente (con instancias más grandes) como horizontalmente (mediante particionamiento y clústeres). -- **Mensajería Pub/Sub**: Redis ofrece soporte nativo para patrones de mensajería de publicación/suscripción, útiles para construir aplicaciones en tiempo real. -
- -
- -### ¿Cuáles son los casos de uso comunes de Redis? - -Redis es versátil y puede utilizarse en una variedad de escenarios, incluidos: -- **Gestión de Sesiones**: Redis se usa comúnmente para almacenar datos de sesiones de usuario debido a su acceso a datos de baja latencia y características de persistencia. -- **Caché**: Redis es ideal para almacenar en caché los datos a los que se accede con frecuencia, reduciendo la carga sobre las bases de datos principales y mejorando los tiempos de respuesta. -- **Análisis en Tiempo Real**: Las capacidades de procesamiento rápido en memoria de Redis lo hacen perfecto para análisis en tiempo real, clasificaciones y contadores. -- **Colas de Mensajes**: Con la funcionalidad pub/sub de Redis, puedes utilizarlo para sistemas de mensajería y transmisión de eventos. -- **Colas de Trabajo**: Redis se usa para gestionar colas de trabajo en segundo plano en aplicaciones a gran escala. -
- -
- -### ¿Cómo se diferencia Redis de Memcached? - -Redis es más completo que Memcached. Redis soporta una variedad de estructuras de datos como listas, conjuntos y hashes, mientras que Memcached se limita a pares clave-valor simples. Redis también soporta persistencia de datos y replicación, lo que lo hace adecuado para aplicaciones donde la durabilidad y la alta disponibilidad son críticas. Sin embargo, Memcached es típicamente más ligero y rápido para escenarios básicos de almacenamiento en caché. -
- -## Configura tu Redis en AWS -### 1. Agregar AWS Redis como Dependencia -Para integrar Redis con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencias". -2. Elige "AWS Redis" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencias: Integración de Bases de Datos, Caching y Servicios de Mensajería](/docs/project/dependency). - -### 2. Configura tu base de datos Redis. -Accederás al siguiente formulario: - - -redis-create-p1 - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Tipo de Nodo** | Clase de instancia que determina el rendimiento y la capacidad de memoria de la instancia Redis. Ejemplos: `cache.t3.micro`, `cache.m5.large`, `cache.r6g.large` | -| **Puerto** | El puerto de comunicación utilizado por Redis para interactuar con tu aplicación. Por defecto: `6379` (puede ser personalizado) | - -### 3. Personaliza los nombres de tus variables para Redis. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios.\ -En este paso, puedes cambiar el nombre de los atributos si es necesario. -SleakOps completará los valores automáticamente. -Después de este paso, tu dependencia estará creada. - - -redis-create-outputs - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/s3bucket-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/s3bucket-aws.mdx deleted file mode 100644 index fb647dcf0..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/s3bucket-aws.mdx +++ /dev/null @@ -1,137 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS S3 Bucket - -SleakOps se integra perfectamente con Amazon Simple Storage Service (S3), un servicio de almacenamiento de objetos altamente duradero y seguro. Amazon S3 proporciona una solución escalable para almacenar y recuperar cualquier cantidad de datos, lo que lo convierte en una opción ideal para almacenamiento de copias de seguridad, gestión de activos y archivo de datos dentro de tus aplicaciones. Al aprovechar SleakOps para la integración con S3, puedes gestionar fácilmente tus cubos S3 y acceder a los datos almacenados directamente desde tu entorno EKS (Elastic Kubernetes Service). - -## Preguntas Frecuentes - -
- -### ¿Cuándo debería usar Amazon S3? - -Deberías usar Amazon S3 cuando necesites: -- Almacenamiento escalable para archivos, medios, copias de seguridad o activos estáticos. -- Almacenamiento altamente duradero y disponible para datos críticos. -- Soluciones de archivo de datos o recuperación ante desastres. -- Una solución rentable para almacenar grandes cantidades de datos no estructurados. -
- -
- -### ¿Cómo creo un backup de S3? - -Para crear una copia de seguridad de los datos de tu cubo S3, sigue estos pasos: - 1. **Asegúrate de tener acceso de administrador**: Verifica que tienes acceso de administrador a la cuenta de AWS donde se encuentra el cubo S3. - 2. **Instala AWS CLI**: Asegúrate de que AWS CLI esté instalado en tu máquina local. Para instrucciones de instalación, consulta la [documentación oficial de AWS CLI ](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). - 3. **Configura AWS CLI**: Asegúrate de que tus claves de acceso y secretas estén configuradas en el perfil predeterminado. Si están bajo un perfil diferente, utiliza la opción `--profile PROFILE_NAME` con los comandos. - 4. **Ejecuta los comandos de copia de seguridad**: ```sh - aws sts assume-role --role-arn arn:aws:iam::ACCOUNT_ID:role/SleakopsAdminRole - aws s3 sync s3://BUCKET_NAME /path/to/local/directory``` - Sustituye ACCOUNT_ID, BUCKET_NAME y /path/to/local/directory con tus detalles específicos. -
- -
- -### ¿SleakOps crea Grupos de Variables para las dependencias de S3? - -Sí, cuando configuras un cubo S3 en SleakOps, automáticamente creará un Grupo de Variables. Esto almacena de forma segura las claves de acceso y otra información sensible necesaria para gestionar e interactuar con tu cubo S3. -
- -
- -### ¿Qué es una Lista de Control de Acceso (ACL) de S3? - -Una Lista de Control de Acceso (ACL) de S3 define los permisos sobre quién puede acceder a tu cubo S3 y su contenido. Controla el nivel de acceso que se concede a usuarios, grupos o entidades de AWS predefinidas. -Puedes elegir un ACL que defina quién puede acceder al cubo y qué nivel de permiso tienen. Las opciones disponibles son: -- `private`: Solo el propietario del cubo tiene acceso completo. (Por defecto) -- `public-read`: Cualquier persona puede leer los objetos en el cubo. -- `public-read-write`: Cualquier persona puede leer y escribir en el cubo. -- `aws-exec-read`: Otorga acceso de lectura a los servicios de AWS como CloudFront. -- `authenticated-read`: Otorga acceso de lectura a usuarios autenticados de AWS. -- `log-delivery-write`: Otorga acceso de escritura al cubo para fines de registro. -Para más detalles, consulta la [documentación de S3 ACL de AWS ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html). -
- -
- -### ¿Qué es Amazon CloudFront? - -Amazon CloudFront es una Red de Distribución de Contenido (CDN) que acelera la entrega de tu contenido estático y dinámico (como HTML, CSS, imágenes y videos) al almacenarlo en ubicaciones cercanas a tus usuarios alrededor del mundo. -
- -
- -### ¿Puedo usar un dominio personalizado con CloudFront? - -Sí, SleakOps te permite establecer un alias personalizado (subdominio) para tu distribución de CloudFront. Por ejemplo, podrías usar `cdn.mydomain.com` como la URL de tu distribución de CloudFront en lugar de la URL predeterminada de CloudFront. -
- -
- -### ¿Qué es un encabezado personalizado en CloudFront? - -Los Encabezados Personalizados te permiten incluir información adicional en cada solicitud que CloudFront realiza a tu cubo S3. Esta característica te brinda un mayor control sobre cómo se accede y entrega tu contenido de S3 al adjuntar metadatos específicos a las solicitudes. -SleakOps te permite definir encabezados personalizados para CloudFront, que serán incluidos en todas las solicitudes enviadas a tu cubo S3. Esto es útil para agregar medidas de seguridad, gestionar permisos o realizar un seguimiento de las solicitudes. -``` -custom_headers: - - key: "X-Custom-Header" - value: "MyCustomValue" -``` -
- -## Configura tu cubo S3 -### 1. Agregar S3 Bucket como Dependencia -Para integrar S3 Bucket con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencias" -2. Elige "S3 Bucket" de la lista de tipos de dependencias disponibles. -Para más detalles, consulta [Dependencias: Integración de Bases de Datos, Caching y Servicios de Mensajería](/docs/project/dependency). - -### 2. Configura tu cubo S3. -Al agregar un cubo S3 como dependencia en SleakOps, deberás configurar los siguientes atributos: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Lista de Control de Acceso (ACL) de S3** | Especifica el nivel de acceso para el cubo S3 y su contenido. Opciones: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `log-delivery-write` | -| **Habilitar CloudFront** | Permite habilitar Amazon CloudFront, una CDN para entregar el contenido del cubo S3 a nivel global. | -| **Alias** | El alias para el cubo S3 o la distribución de CloudFront (por ejemplo, `cdn.mydomain.com`). | -| **Clase de Precio** | Define el conjunto de ubicaciones de borde globales de CloudFront utilizadas para servir contenido. Opciones: `Usar todas las ubicaciones de borde (mejor rendimiento)`, `Usar solo América del Norte`, `Europa`, `Asia`, `Medio Oriente` y `África`, `Usar solo América del Norte y Europa`. Revisa [Clase de Precios de AWS ](https://aws.amazon.com/cloudfront/pricing/). | -| **Encabezados Personalizados** | Encabezados personalizados que CloudFront incluirá en todas las solicitudes enviadas al cubo S3. - Clave: La clave del encabezado, como `X-Custom-Header`. - Valor: El valor que deseas asignar al encabezado, como `MyCustomValue`. | -| **Sobrescribir** | Especifica si CloudFront debe sobrescribir los encabezados existentes en las solicitudes del origen. | - - -s3-create-p1 - - - -Después de esos datos básicos, si activaste CloudFront, podrás personalizar sus encabezados. -Para hacerlo: - 1. En el formulario, busca el campo _Encabezados personalizados de CloudFront_ y haz clic en + _Agregar ítem_. - 2. Completa _Clave y Valor_. -Puedes agregar tantos como necesites. - - -s3-create-cloudfront - - -### 3. Personaliza los nombres de tus variables para tu S3. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para contener todos los atributos necesarios. - - -s3-create-outputs - - -En este paso, puedes cambiar el nombre de los atributos si es necesario, pero SleakOps completará los valores automáticamente. -Después de este paso, tu dependencia estará creada. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/sqs-aws.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/sqs-aws.mdx deleted file mode 100644 index e02e3a2ba..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dependency/sqs-aws.mdx +++ /dev/null @@ -1,95 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# AWS SQS - -SleakOps integra Amazon Simple Queue Service (SQS) en la arquitectura de tu aplicación. Amazon SQS es un servicio de colas de mensajes totalmente gestionado que te permite desacoplar los componentes de tu aplicación, asegurando un procesamiento eficiente y fluido de los mensajes. Al aprovechar SQS, puedes mejorar la escalabilidad y confiabilidad de tus aplicaciones, manejando grandes volúmenes de mensajes de manera asincrónica. -Esta sección proporciona una visión general de cómo configurar SQS dentro de SleakOps y los atributos necesarios para una integración exitosa. - -:::info -Para más detalles sobre SQS y sus beneficios, puedes consultar la [Guía para desarrolladores de Amazon SQS ](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html). -::: - -## Preguntas Frecuentes - -
- -### ¿Cuál es la diferencia entre una Cola Estándar y una Cola FIFO? - -1. Una **Cola Estándar** soporta un alto rendimiento con entrega de mensajes al menos una vez. El orden de los mensajes no está garantizado, pero es ideal para escenarios en los que el orden de los mensajes no es crítico. -2. Una **Cola FIFO** asegura el orden de los mensajes y entrega exacta una vez. Es adecuada para aplicaciones donde el orden de los mensajes es crucial. -
- -
- -### ¿Qué es la implementación Multi-AZ y debo habilitarla? - -La implementación Multi-AZ (Zona de Disponibilidad) asegura alta disponibilidad y soporte de conmutación por error replicando tu base de datos en otra zona de disponibilidad. Se recomienda para entornos de producción para evitar el tiempo de inactividad. Ten en cuenta que aumenta los costos. -
- -
- -### ¿Qué es una Cola de Muertos (DLQ) y cuándo debo usarla? - -Una **DLQ** es una cola secundaria donde los mensajes que no se pueden procesar exitosamente después de varios intentos se envían. Debes configurar una DLQ para ayudar con el manejo de errores y prevenir la pérdida de mensajes. Consulta [AWS SQS DLQ ](https://aws.amazon.com/es/what-is/dead-letter-queue/). -
- -
- -### ¿Qué es la Deduplificación en una Cola FIFO? - -En una Cola FIFO de SQS, la deduplificación asegura que los mensajes duplicados se eliminen automáticamente, manteniendo el estricto orden de los mensajes. -
- -## Configura tu SQS -### 1. Agregar SQS como Dependencia -Para integrar SQS con SleakOps: -1. En la consola de SleakOps, ve a la sección "Dependencias". -2. Elige "SQS" de la lista de tipos de dependencias disponibles. -Para más detalles consulta [Dependencias: Integrando Bases de Datos, Caching y Servicios de Mensajería](/docs/project/dependency). - -### 2. Configura tu base de datos SQS. -Accederás al siguiente formulario: - - -sqs-create-p1 - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Fifo Queue** | Selecciona si la cola es estándar o FIFO. Lee más en las preguntas frecuentes. | -| **Fifo Deduplication** | Selecciona si la deduplicación está activada. Lee más en las preguntas frecuentes. | -| **Message Delay Seconds** | Segundos de retraso en la entrega de mensajes en la cola. | -| **Message Max Size** | Límite máximo de bytes por mensaje. | -| **Message Retention Seconds** | Segundos que un mensaje es retenido por SQS. | -| **Receive WaitTime Seconds** | El tiempo que una llamada a ReceiveMessage esperará a que llegue un mensaje (long polling) antes de regresar. | -| **Visibility Timeout Seconds** | Segundos que un mensaje es retenido por SQS. | -| **Dead Letter Queue** | Selecciona si la cola de mensajes muertos está habilitada. Lee más en las preguntas frecuentes. | - - -Al activar la opción **Master Dedicado Habilitado**, también debes completar lo siguiente: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Tipo de Master Dedicado** | Especifica el tipo de instancia para los nodos maestros, usados para gestionar el clúster. Ejemplo: r6g.large.search | -| **Cantidad de Masters Dedicados** | Número de nodos maestros dedicados. Se recomienda tener 3 para producción. | - -### 3. Personaliza los nombres de tus variables para SQS. - -Como se explicó, cuando se crea una dependencia, SleakOps genera un grupo de variables para almacenar todos los atributos necesarios. -En este paso, puedes cambiar el nombre de los atributos si es necesario. -SleakOps completa los valores automáticamente. -Después de este paso, tu dependencia estará creada. - - -sqs-create-outputs - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/_category_.json deleted file mode 100644 index 49579e767..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/_category_.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "label": "Deployment", - "position": 8, - "link": { "type": "doc", "id": "index" } -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/index.mdx deleted file mode 100644 index 385314655..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/index.mdx +++ /dev/null @@ -1,49 +0,0 @@ -import Zoom from 'react-medium-image-zoom'; -import 'react-medium-image-zoom/dist/styles.css'; - -# Deployment - -Un **Deployment** en SleakOps significa la instalación de una nueva versión de tu aplicación. Esto involucra tres componentes principales, que conforman un Helm Release: -- [Releases](/docs/project/deployment/release): Son combinaciones versionadas de tus [Workloads](/docs/project/workload) incluyendo WebServices, Workers, CronJobs y Hooks. -- Build Image: Representado por un [Build](/docs/project/build). -- Configuration Values: Estos comprenden recursos como [Volumes](/docs/project/volumes) y [VariableGroups](/docs/project/vargroup). - -:::info - -Cuando haya una actualización de cualquiera de estos recursos, SleakOps te notificará acerca de un Deployment a través del banner de no publicado mostrado [abajo](#unpublished-banner). - -::: - -## Desplegando tu ProjectEnv - -Al crear un Deployment, obtenemos la imagen correspondiente al Build que se va a desplegar. Antes de esto, ejecutamos el Helm Release en el namespace del clúster adecuado. Este release de Helm incluye los servicios de Kubernetes necesarios, ingresses, workers y otros servicios. - -Existen varios métodos para generar un Deployment. Estos se describen a continuación. Ten en cuenta que forzamos ciertos Deployments. Para más detalles, consulta [Más sobre Deployment](/docs/project/deployment/more_on_deployment#forced-deployments). - -- [Workloads](/docs/project/workload): Proporciona un conmutador que te permite decidir si ejecutar un nuevo Deployment. -- [VariableGroup](/docs/project/vargroup): Funciona de manera similar a las Cargas de Trabajo, pero no crea un nuevo Release. En su lugar, solo actualiza los [valores](https://helm.sh/docs/chart_best_practices/values/) del Deployment. -- [Dependency](/docs/project/dependency): Desencadena un Deployment automáticamente. Profundiza más sobre esto en [Más sobre Deployment](/docs/project/deployment/more_on_deployment). - - - DEPLOY-deploy-switcher - - -### Deployment Manual - -Si no realizas el deployment de tus cambios inmediatamente, o si tu modificación no fuerza un deployment, tienes tres métodos para ejecutar un Deployment: - -- [Build section](/docs/project/build): Usando el botón Deploy, puedes determinar qué Build desplegar. - - DEPLOY-build-button - - - -#### Unpublished banner - - -- **Unpublished Changes Banner**: Este banner se muestra cuando hay contenido pendiente que aún no se ha desplegado en el clúster. A través de este banner, puedes elegir desplegar solo los VariableGroups o si deseas desplegar todo, incluidos los Workloads en estado 'borrador'. - - DEPLOY-deploy-changes-banner - - -- A través del [CLI ](/docs/cli). \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/more_on_deployment.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/more_on_deployment.mdx deleted file mode 100644 index 1359f8ace..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/more_on_deployment.mdx +++ /dev/null @@ -1,35 +0,0 @@ -# Un poco mas sobre los Deployments: - -:::info - -Esta sección sirve como una extensión de la documentación principal de [Deployment](/docs/project/deployment). Se recomienda leerla primero para obtener una comprensión básica. - -::: - -## Cómo maneja SleakOps los Deployments - -Para ejecutar un deployment, SleakOps utiliza las imágenes de [Build](/docs/project/build) almacenadas en el repositorio de imágenes de tu proyecto (AWS ECR), las cuales se crean ya sea con la entidad [ProjectEnv](/docs/project) durante la [Build Inicial](/docs/project/build) o con la creación de una entidad Build que se sube a ECR. Cada vez que se inicia un Deployment, obtenemos la imagen correspondiente al Build designado. - -La siguiente fase implica construir y desplegar el Helm chart. Esto se logra usando plantillas diseñadas generalmente para ese propósito. Una vez construido, subimos el Helm chart al mismo ECR utilizado para las imágenes Build y procedemos a desplegar un Helm Release en el clúster de Kubernetes, específicamente dentro del namespace de ProjectEnv. - -:::info - -Todos estos recursos residen en tus propias cuentas de AWS. SleakOps no almacena datos de manera exclusiva. - -::: - -### Forced Deployments - -:::caution Forced Deployment - -Ten en cuenta que bajo ciertas circunstancias, SleakOps obliga un Deploy. - -::: - -Si bien se destacaron múltiples métodos para generar un Deployment en la documentación principal de [Deployment](/docs/project/deployment), es crucial entender que SleakOps a veces impone Deployments. La razón detrás de esto es optimizar el tiempo de actividad, salvaguardar el estado actual de la infraestructura desplegada y mitigar posibles tiempos de inactividad del servicio en el Cluster. Este imperativo surge porque las plantillas de Helm siempre deben sincronizarse con los Kubernetes Secrets presentes en el namespace para evitar fallos en el deployment. - -Como ya sabes, si no es un deployment 'forzado', se te presentará una opción (conmutador) para decidir si deseas desplegar tus modificaciones. Los Deployments se fuerzan en los siguientes escenarios: - -- Cambios en la configuración del [Workload](/docs/project/workload) Alias: Un Deployment es forzado si se realizan modificaciones en la configuración del 'alias'. -- [Dependency](/docs/project/dependency): Siempre fuerza un Deployment para sincronizar el estado de su VariableGroup asociado con las plantillas del Helm Chart, asegurando que el funcionamiento de los Workloads no se vea afectado. -- Eliminación de [VariableGroup](/docs/project/vargroup): Igual que la eliminación de Dependency. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/release.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/release.mdx deleted file mode 100644 index 8ca76bc18..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/deployment/release.mdx +++ /dev/null @@ -1,37 +0,0 @@ -import { FiExternalLink } from "react-icons/fi"; - -# Release - -## ¿Qué es un Release? - -En Sleakops, un release representa un estado desplegable de todos los servicios (servicios web, workers, cron jobs y jobs) de un [proyecto](/docs/project) en un [entorno](/docs/environment). - -## Creación de Releases - -Sleakops administra los releases por ti. Cada vez que modificas, eliminas o agregas un servicio, worker, hook o cron job, Sleakops te da la opción de publicar los cambios. Cada vez que publicas esos cambios, Sleakops crea un nuevo release con versiones auto-incrementadas. - -### Recursos del Helm Chart - -#### Web Service: - -- Un deployment de Kubernetes -- Un servicio de Kubernetes -- Un HPA de Kubernetes (Horizontal Pod Autoscaler) -- Un ingress de Kubernetes - -El ingress genera sus hosts usando `...` - -#### Worker: - -- Un deployment de Kubernetes -- Un HPA de Kubernetes - -#### Hook: - -- Un job de Kubernetes - -Este job usa hooks de Kubernetes para iniciarse. - -#### Cron Job: - -- Un cron job de Kubernetes \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/dockertron.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/dockertron.mdx deleted file mode 100644 index 8c6857244..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/dockertron.mdx +++ /dev/null @@ -1,266 +0,0 @@ ---- -sidebar_label: Dockertron -sidebar_position: 4 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Dockertron - Generación de Dockerfiles y Docker Compose - -## Resumen - -**Dockertron** es un sistema automatizado de dockerización que analiza su código fuente y genera automáticamente la infraestructura necesaria para ejecutar su aplicación en contenedores Docker. El sistema utiliza inteligencia artificial para comprender la estructura de su proyecto y crear los archivos de configuración apropiados. - -Podes encontrarlo en Sleakops en la sección de **Proyectos>Configuración>Docketron.** - - - dockertron_location - - ---- - -## ¿Qué hace Dockertron? - -Dockertron automatiza el proceso de containerización de su aplicación siguiendo estos pasos: - -1. **Análisis del Repositorio**: Examina la estructura de su código fuente -2. **Identificación de Servicios**: Detecta qué componentes de su aplicación necesitan ejecutarse -3. **Generación de Dockerfiles**: Crea archivos Dockerfile optimizados para cada servicio -4. **Creación de Docker Compose**: Genera un archivo docker-compose.yml que orquesta todos los servicios -5. **Configuración de Infraestructura**: Prepara la configuración para despliegue en SleakOps - ---- - -## Flujo del Proceso de Dockerización - -
- -### 1. Enviar el Proyecto - - - - docketron_input - - -Para iniciar el proceso de dockerización, debe completar el formulario de Dockertron en tres pasos: - -#### Paso 1: Información del Lenguaje - -Especifique el lenguaje de programación principal de su proyecto: - -- **Language Name**: Nombre del lenguaje (ej: Python, Node.js, Java, Go) -- **Language Version**: Versión específica del lenguaje (ej: 3.12, 18.0, 11) - -#### Paso 2: Frameworks de la Aplicación - -Configure los frameworks que utiliza su aplicación. Puede agregar múltiples frameworks: - -- **Framework Name**: Nombre del framework (ej: Django, Express, Spring Boot) -- **Command**: Comando para ejecutar el framework (ej: `python manage.py runserver 0.0.0.0`) -- **Framework Version**: Versión del framework (ej: 5.2, 4.18.2) - -Puede agregar más frameworks haciendo clic en "+ Add Item". - -
- -
- -### 2. Análisis Inteligente - - -El sistema realiza un análisis profundo de su proyecto: - -#### Fase 1: Auditoría del Repositorio - -- Confirma el lenguaje de programación principal -- Confirma frameworks y librerías utilizadas -- Analiza la estructura de carpetas -- Identifica archivos de configuración (package.json, requirements.txt, etc.) - -#### Fase 2: Identificación de Servicios - -El sistema detecta automáticamente: - -- **Aplicaciones web** (frontend, backend) -- **APIs y microservicios** -- **Workers y procesos en segundo plano** -- **Bases de datos** necesarias -- **Servicios de caché** (Redis, Memcached) -- **Colas de mensajes** (RabbitMQ, SQS) - -
- -
- -### 3. Generación de Archivos - - -#### Dockerfiles - -Para cada servicio que requiere construcción, se genera un Dockerfile que incluye: - -- Imagen base apropiada -- Instalación de dependencias -- Configuración del entorno -- Comandos de inicio -- Healthchecks -- Optimizaciones de rendimiento - -#### Docker Compose - -Se genera un archivo `docker-compose.yml` que: - -- Define todos los servicios -- Configura redes entre servicios -- Establece volúmenes para persistencia de datos -- Define variables de entorno -- Configura puertos y exposición de servicios -- Establece dependencias entre servicios - -#### README - -Se genera documentación con: - -- Instrucciones para ejecutar el proyecto -- Comandos necesarios -- Configuraciones requeridas -- Troubleshooting básico - -
- -
- -### 4. Preparación para SleakOps - - -El sistema genera la configuración de infraestructura para SleakOps, identificando: - -- Workloads (Cargas de Trabajo) -- Dependencies (Dependencias) -- Environment Variables (Variables de Entorno) - -
- -
- -### 5. Generación de Pull Request - - -Una vez completado el análisis y la generación de archivos, **Dockertron crea automáticamente una Pull Request en su repositorio** con todos los archivos de configuración generados: - -- Dockerfiles -- docker-compose.yml -- README.md con instrucciones -- Archivos de configuración adicionales - -Esto le permite: - -- **Revisar** todos los cambios propuestos antes de integrarlos -- **Comentar** y solicitar ajustes si es necesario -- **Aprobar y fusionar** cuando esté satisfecho con la configuración -- **Mantener un historial** claro de los cambios en su repositorio - -
- -
- -## Integración con su Repositorio - - -Al finalizar el proceso, Dockertron: - -1. **Genera una Pull Request** en su repositorio con todos los archivos de configuración Docker -2. **Envía la información a SleakOps** para que pueda desplegar fácilmente desde la consola con las configuraciones recomendadas por el agente de IA - -De esta manera, usted mantiene el control total sobre los cambios en su código mientras aprovecha la automatización de SleakOps. - -
- -
- -## Ejemplo Completo - - -### Proyecto de Entrada - -``` -mi-app/ -├── backend/ - ├── package.json - ├── server.js - └── ... -``` - -### Salida Generada - -**Servicios Detectados**: - -1. Backend (Node.js API) -2. Frontend (React App) -3. Worker (Python) - -**Dependencias Identificadas**: - -- PostgreSQL (para el backend) -- Redis (para cache y colas) - -**Archivos Generados**: - -- `backend/Dockerfile` -- `docker-compose.yml` -- `README.md` - -
- ---- - -## Preguntas Frecuentes - -
- -### ¿Cuánto tiempo toma el proceso? - - -Típicamente entre 5-30 minutos, dependiendo del tamaño y complejidad del proyecto. - -
- -
- -### ¿Qué pasa si mi proyecto tiene configuraciones especiales? - - -Puede proporcionar contexto adicional en el campo `contexts` al enviar la solicitud, indicando frameworks específicos, versiones, o configuraciones especiales. - -
- -
- -### ¿Puedo revisar los archivos antes del despliegue? - - -Sí, todos los archivos generados se envían de vuelta y pueden ser revisados antes de proceder con el despliegue. - -
- -
- -### ¿Qué pasa si el proceso falla? - - -El sistema envía un mensaje de error detallado indicando qué salió mal, permitiendo ajustes, reintentos y modificaciones en la informacion enviada para que el agente de IA pueda generar la configuracion correcta. - -
- -
- -### ¿Se pueden modificar los archivos generados? - - -Sí, los archivos generados son completamente editables y pueden ser ajustados según sus necesidades específicas. - -
- -**Versión del documento**: 1.0 -**Última actualización**: Noviembre 2025 diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx deleted file mode 100644 index d65b5029d..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx +++ /dev/null @@ -1,214 +0,0 @@ ---- -sidebar_position: 10 -sidebar_label: Projecto -pagination_next: project/dependency/index ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - - -# Projecto - -Un projecto en SleakOps representa una base de código gestionada por un repositorio Git. También define el llamado Namespace. Es la entidad central que conecta tu repositorio con el entorno de SleakOps, habilitando la implementación, gestión y escalado de tu aplicación en la infraestructura de AWS. - -Es la combinación de: Repositorio, Rama y Ruta del Dockerfile. Al añadir el Entorno tienes un ProjectEnv (o Namespace de Kubernetes). - -## Preguntas Frecuentes - -
- -### ¿Qué es un ProjectEnv o Namespace? - -Un ProjectEnv es la combinación de un projecto y un Entorno. Actúa como un Namespace de Kubernetes en el clúster y contiene todos los servicios y recursos relacionados con el projecto dentro de ese Entorno. -
- -
- -### ¿Cómo creo un ProjectEnv en SleakOps? - -El projecto y el ProjectEnv se crean al mismo tiempo. Debes conectar tu cuenta Git (por ejemplo, GitHub, GitLab o Bitbucket) a SleakOps, seleccionar un repositorio, elegir una rama y especificar la ubicación del Dockerfile. Una vez completados estos pasos, se crea un ProjectEnv y se dispara la primera construcción de imagen. Sigue los pasos a continuación. -
- -
- -### ¿Qué sucede cuando creo un ProjectEnv? - -Cuando se crea un ProjectEnv, se configuran los siguientes recursos: -- **AWS Elastic Container Registry (ECR)** para almacenar imágenes de contenedores y Helm charts. -- Un **Namespace de Kubernetes** para gestionar servicios de forma aislada. -- Una **Service Account** para manejar permisos y conexiones seguras con recursos de AWS. -- Un **análisis del Dockerfile** para verificar su corrección y construir una imagen de contenedor usando Kaniko. -
- -
- -### ¿Cómo agrego Dockerfile Args? - -Si se requieren **Docker Args** (argumentos) durante el tiempo de construcción, SleakOps te pedirá ingresarlos antes de ejecutar la construcción inicial. Estos argumentos pueden modificarse para construcciones futuras. -
- -
- -### ¿Cuál es el propósito del Dockerfile en mi projecto? - -El **Dockerfile** define cómo tu aplicación se construye en una imagen de contenedor. Durante la creación del ProjectEnv, SleakOps analiza el Dockerfile para garantizar que esté correctamente configurado y luego construye la imagen usando **Kaniko**. -
- -
- -### ¿Dónde se almacenan las imágenes Docker? - -Las imágenes Docker se almacenan en el **AWS ECR** (Elastic Container Registry) asociado a tu projecto. Las imágenes se nombran según el ProjectEnv, que combina el nombre del Entorno y el nombre del projecto. -
- -
- -### ¿Cuál es el rol de la Service Account? - -La **Service Account** maneja los permisos para recursos dentro del clúster de Kubernetes. Permite que los servicios desplegados en el ProjectEnv interactúen de forma segura con recursos de AWS como S3, RDS o cualquier otro servicio que pueda requerir tu aplicación. -
- -
- -### ¿Puedo actualizar el repositorio, la rama o la ruta del Dockerfile después de crear un projecto? - -Solo se pueden actualizar la *Rama* y la *Ruta del Dockerfile*. Si necesitas trabajar con un *Entorno*, *Repositorio o Nombre* diferentes, deberás crear un nuevo registro. -
- -
- -### ¿Cómo maneja SleakOps la construcción inicial de la imagen? - -SleakOps automatiza la construcción inicial de la imagen como parte del proceso de creación del ProjectEnv. Esta construcción inicial asegura una implementación más rápida al utilizar la infraestructura existente. Posteriormente, las futuras construcciones de imágenes se activan cuando se publican servicios en despliegues o manualmente mediante el **Formulario de Construcción**. -
- -
- -### ¿Cómo controlo los gastos del projecto? - -SleakOps te permite ver todos los gastos de tu projecto en un solo lugar, clasificados por cuenta, recursos y fechas. - -Accede a *Projects*, selecciona uno y haz clic en el botón: -cost-button -
- -
- -### ¿Cómo monitoreo mi projecto? - -Puedes monitorear tu projecto accediendo a *Projects*, seleccionando uno **y haciendo clic en el botón: monitoring-button** -
- -
- -### ¿Cómo creo un Kubernetes Volume? - -Al editar un project, puedes habilitar y definir **Kubernetes Volumes** especificando la ruta de montaje y la capacidad de almacenamiento. SleakOps utiliza el **AWS EFS CSI Driver** para gestionar estos volúmenes como sistemas de archivos **EFS** en el clúster EKS. -
- -
- - ### 🚩 ¿Cómo gestiono futuras construcciones y despliegues? - -Las futuras construcciones y despliegues se pueden gestionar manualmente a través de la interfaz de SleakOps o automatizar utilizando el **SleakOps CLI**. -
- -## Creemos tu primer Projecto en SleakOps - -:::warning -Debes tener tu cuenta de Git Repository conectada. Consulta [Conecta tu cuenta Git](/docs/connect_to_git) -::: - -### 1. Navega a la sección Crear Projecto -En el Panel Izquierdo, accede a la opción _Projects_ y luego, en la esquina superior derecha, haz clic en el botón _Crear_. - - -project-list - - - -### 2. Configura tu Projecto -Accederás al siguiente formulario: - - -project-create - - -Aquí están los parámetros que SleakOps te permite personalizar durante la creación: - -| **Configuración** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu Project. | -| **Environment** | El Entorno representa una etapa o configuración específica dentro de tu infraestructura donde se desplegará tu projecto (por ejemplo, Development, Staging, Production). Estás asociando el código de tu project con un Entorno particular en tu clúster de Kubernetes. | -| **Repositorio** | El repositorio es el repositorio Git que contiene el código base de tu projecto. SleakOps accederá a este repositorio para gestionar actualizaciones de código, construcciones y despliegues. Asegúrate de haber conectado tu proveedor de Git (por ejemplo, GitHub, GitLab, Bitbucket) y que el repositorio seleccionado contenga todos los archivos necesarios para tu project. | -| **Nodepool** | Es el recurso encargado de aprovisionar el servidor donde se ejecutarán tus servicios. Más información [aquí](/docs/cluster/nodepools). | -| **Rama** | La rama representa una versión específica o línea de desarrollo dentro del repositorio. Esto te permite desplegar una versión particular de tu código (por ejemplo, main, develop o una rama específica de características). La rama que selecciones determinará el código que se construirá y desplegará en el Entorno asociado. | -| **Ruta del Dockerfile** | El Dockerfile es un componente crítico utilizado para construir tu projecto en un contenedor. El campo de Ruta del Dockerfile requiere la ruta relativa al Dockerfile dentro del repositorio (por ejemplo, /Dockerfile, /src/Dockerfile o /app/Dockerfile). Este archivo contiene las instrucciones necesarias para crear la imagen del contenedor, que SleakOps construirá y utilizará posteriormente para los despliegues. | - -Una vez que hayas completado el formulario, haz clic en *Enviar* para iniciar la validación del Dockerfile y luego la construcción. - -## ProjectAccess - -ProjectAccess te permite configurar políticas y roles IAM personalizados para tu proyecto, proporcionando control granular sobre los permisos de recursos de AWS. Esta característica te permite definir patrones de acceso específicos que se alinean con tus requisitos de seguridad y necesidades operativas. - -### Políticas Personalizadas - -Las políticas personalizadas te permiten crear políticas IAM adaptadas que otorgan permisos específicos a las cargas de trabajo de tu proyecto. Estas políticas deben crearse en la misma cuenta de AWS donde se despliega tu proyecto. - -#### Crear Políticas Personalizadas - -1. **Navega a la Consola IAM de AWS** en la cuenta de AWS de tu proyecto -2. **Crea una nueva política** con los permisos específicos que requiere tu aplicación -3. **Referencia la política** en SleakOps usando el ARN de la política - -:::tip Mejores Prácticas de Políticas -- Sigue el principio de menor privilegio - otorga solo los permisos mínimos necesarios -- Usa ARNs específicos de recursos cuando sea posible para limitar el alcance del acceso -- Revisa y audita regularmente los permisos de las políticas -::: - -#### Referenciar Políticas Personalizadas en SleakOps - -Al configurar ProjectAccess, puedes referenciar tus políticas personalizadas proporcionando el ARN de la política: - -``` -arn:aws:iam::ACCOUNT_ID:policy/YourCustomPolicyName -``` - -### Políticas Gestionadas por AWS - -SleakOps también admite políticas gestionadas por AWS, que son políticas preconfiguradas mantenidas por AWS. Estas políticas proporcionan conjuntos de permisos comunes para varios servicios de AWS. - -#### Políticas Gestionadas por AWS Comunes - -- **AmazonS3ReadOnlyAccess**: Acceso de solo lectura a buckets de S3 -- **AmazonRDSReadOnlyAccess**: Acceso de solo lectura a instancias de RDS -- **CloudWatchReadOnlyAccess**: Acceso de solo lectura a métricas y logs de CloudWatch -- **AmazonEC2ReadOnlyAccess**: Acceso de solo lectura a recursos de EC2 - -:::info Asociación de Políticas -Al asociar roles o políticas con tu proyecto, se recomienda usar el número mínimo de políticas necesario. Este enfoque: -- Reduce la complejidad en la gestión de permisos -- Mejora la seguridad limitando los vectores de ataque potenciales -- Facilita la resolución de problemas cuando surgen problemas de permisos -::: - -### Mejores Prácticas para la Gestión de Políticas - -1. **Minimizar el Número de Políticas**: Asocia el menor número de políticas posible mientras cumples tus requisitos -2. **Auditorías Regulares**: Revisa y audita periódicamente las políticas asociadas con tus proyectos -3. **Políticas Específicas del Entorno**: Considera usar diferentes políticas para diferentes entornos (dev, staging, prod) -4. **Documentación**: Mantén documentación clara de por qué se requieren políticas específicas para cada proyecto \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/_category_.json deleted file mode 100644 index b09c17f80..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "VarGroup", - "position": 7 -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx deleted file mode 100644 index 41f910a48..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: Variable Groups ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# VariableGroups - -Un **Vargroup** en SleakOps es un recurso que almacena de forma segura información sensible (como credenciales de bases de datos) dentro de tu clúster EKS. Asegura que las credenciales y las variables específicas del entorno se gestionen de manera segura y sean fácilmente accesibles por tus aplicaciones. - -## Preguntas Frecuentes - -
- - -### ¿Puedo editar un VariableGroup creado por SleakOps? - - -Sí, puedes acceder y gestionar el VariableGroup para tu instancia MySQL desde la consola de SleakOps. Puedes modificar valores como nombres de usuario, contraseñas u otras credenciales específicas del entorno. -
- -
- - -### ¿Cómo usan mis aplicaciones los Vargroups? - - -Los Vargroups se inyectan de forma segura en el entorno de tu aplicación cuando se despliega. Tus aplicaciones pueden acceder a estas credenciales y otras variables sin exponer información sensible en el código. -
- -
- - -### ¿Cómo asegura SleakOps la seguridad de los Vargroups? - - -SleakOps almacena de forma segura los Vargroups como secretos de Kubernetes dentro de tu clúster EKS. El acceso se controla a través de Service Accounts de Kubernetes, asegurando que solo los componentes autorizados puedan acceder a la información sensible. -
- -
- - -### ¿Puedo eliminar un Variable Group? - - -Sí, los Vargroups se pueden eliminar o actualizar según sea necesario. Sin embargo, ten cuidado al eliminarlos, ya que puede interrumpir tu aplicación. -
- -
- - -### ¿Puedo configurar una variable de entorno que aplique solo a un worker y no a toda la app? - - -Sí, es posible. Aunque las variables de entorno globales afectan a todos los deployments del proyecto, SleakOps permite crear Vargroups con scope de workload, lo que te permite asignar variables específicamente a un tipo de workload (por ejemplo, solo a tus workers) sin que impacten en el resto de la aplicación. Pasos: Creá un nuevo Vargroup, seleccioná el scope de tipo workload en lugar de global, asocialo al worker correspondiente y agregá las variables que necesitás. Esas variables solo afectarán a ese workload. -
- -
- - - ### ¿Cuál es la diferencia entre un Vargroup Global y uno con Ámbito de Servicio? - - -- **Global**: Disponible para todos los servicios dentro del namespace. Se crea sin seleccionar un servicio específico. Para crearlos selecciona "global". -- **Variable Group con Ámbito de Servicio**: Solo aplica al servicio seleccionado dentro del proyecto y el entorno. Sobrescribe los valores del Vargroup global si tienen la misma clave. -
- -
- - -### ¿Qué ocurre si hay claves duplicadas en diferentes Vargroups? - - -Si existen claves duplicadas en diferentes Vargroups: - -- Si la clave existe tanto en un Vargroup global como en uno con Ámbito de Servicio, el valor del Vargroup con Ámbito de Servicio tiene prioridad. -- Si dos Vargroups globales tienen la misma clave, se usará el más recientemente creado. -
- -
- - -### ¿Cuál es la diferencia entre un Vargroup de tipo ENV y uno de tipo FILE? - - - -- **ENV**: Las variables se inyectan como variables de entorno en los contenedores de tu workload. Cada par clave-valor se convierte en una variable de entorno accesible en tiempo de ejecución. -- **FILE**: Las variables se montan como archivos dentro de los contenedores de tu workload. Cada par clave-valor crea un archivo en el mount path configurado. El nombre del Vargroup se convierte en un subdirectorio, cada clave en un nombre de archivo y cada valor en el contenido del archivo. - -
- -
- - -### ¿Cómo funciona la opción Replicate To (Replicar en)? - - - -La opción **Replicate To** te permite seleccionar entornos de proyecto adicionales donde también se creará el Secret de Kubernetes del Vargroup. Esto hace que las variables estén disponibles en múltiples namespaces sin necesidad de recrear el Vargroup manualmente en cada entorno. - -
- -## Crea un grupo de variables - -### 1. Navega a la sección para crear un Vargroup - -En el _Panel izquierdo_, accede a la opción _Vargroups_ bajo _Proyectos_ y luego, en la esquina superior derecha, haz clic en el botón _Crear_. - - -vargroup-list - - -### 2. Selecciona un Proyecto y completa los atributos necesarios - -Completa los siguientes atributos para crear un nuevo Vargroup: - -| **Atributo** | **Descripción** | -| --- | --- | -| **Proyecto** | La aplicación o carga de trabajo específica dentro de SleakOps. Determina el alcance del grupo de variables. | -| **Servicio** | Un microservicio o componente dentro del proyecto. Si se selecciona, el Vargroup está limitado a él; si no, al seleccionar global estará accesible dentro del namespace. | -| **Nombre** | Un identificador único para el Vargroup, utilizado para diferenciarlo dentro del proyecto. Debe ser descriptivo del propósito del grupo. | -| **Desplegar** | Habilita esta opción si deseas que SleakOps publique y despliegue automáticamente tu servicio en el proyecto. | -| **Replicar en** | Opcional. Selecciona entornos de proyecto adicionales donde también se creará el Secret de Kubernetes de este Vargroup, haciendo que sus variables estén disponibles en múltiples namespaces. | - -:::info -Si eliges agregar el argumento usando la opción de texto: Cada argumento debe agregarse en una nueva línea, separada por un signo de igual (`=`), sin espacios adicionales. - -NOMBRE_ARGUMENTO=VALOR -ARGUMENTO_DOS=VALOR -ARGUMENTO_UNO=VALOR -::: - - -vargroup-create - - -Envía para crear y desplegar tu Vargroup. - -### 3. Selecciona un tipo y configura tus variables - -El campo **Tipo** define cómo se consume el Vargroup en tus workloads. Selecciona el tipo que se adapte a tu caso de uso: - -#### ENV — Variables de Entorno Clave-Valor - -Selecciona **ENV** para inyectar las variables como variables de entorno en los contenedores de tu workload. Agrega pares clave-valor usando el formulario, o activa el **Textmode** para ingresarlos como líneas `CLAVE=VALOR`. - - -vargroup-env - - -#### FILE — Archivos de Configuración Montados - -Selecciona **FILE** para montar las variables como archivos dentro de los contenedores de tu workload. Al usar este tipo, también debes proporcionar un **Mount Path** — el directorio donde se montarán los archivos. - -Cada par clave-valor crea un archivo siguiendo esta estructura: - -- El **Mount Path** es el directorio base (ej. `/nginx/`). -- El **nombre del Vargroup** se convierte en un subdirectorio dentro de él (ej. `my-config`). -- Cada **Clave** se convierte en el nombre del archivo (ej. `nginx.conf`). -- Cada **Valor** se convierte en el contenido del archivo. - -:::info -**Ejemplo:** con Mount Path `/nginx/`, nombre de Vargroup `my-config` y una clave `nginx.conf`, el archivo se montará en `/nginx/my-config/nginx.conf` con el valor como contenido. -::: - - -vargroup-file - diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/volumes.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/volumes.mdx deleted file mode 100644 index 3427cbdec..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/volumes.mdx +++ /dev/null @@ -1,64 +0,0 @@ -import Zoom from 'react-medium-image-zoom'; -import 'react-medium-image-zoom/dist/styles.css'; - -# Volumes - -En el contexto de Sleakops, los volúmenes se refieren a los recursos de almacenamiento de AWS/Kubernetes adjuntos a un clúster. Sirven como almacenamiento general para los contenedores especificados. Los Pods solo pueden interactuar con estos volúmenes si están explícitamente adjuntos a ellos. - -Puedes definir los volúmenes en el formulario del [Proyecto](/docs/project): - - PROJECT-volumes-form - - -Cada vez que se necesite un volumen, Sleakops despliega un EFS CSI Driver dentro del [clúster](/docs/cluster). Esto permite que cada Proyecto tenga su propio montaje único de volumen, almacenando carpetas basadas en las rutas que especifiques. - -Un caso práctico de uso para los volúmenes es cuando deseas que todos tus pods accedan a los mismos archivos, como una carpeta compartida cuyo contenido debe ser persistente. - -Para más detalles sobre cómo se usa EFS para volúmenes, consulta la [documentación de EFS](/docs/cluster/addons/efs). - -## Crear Volúmenes - - -new volume modal - - -Para crear un nuevo volumen para tu proyecto: - -1. **Haz clic en "Create Volumes"** en la configuración del Proyecto -2. **Agrega la ruta de montaje** - Especifica la ruta del directorio donde se montará el volumen en tus contenedores -3. **Establece la capacidad de almacenamiento** - Define la cantidad de espacio de almacenamiento asignado al volumen -4. **Elige la política de retención** - Selecciona entre: - - **Delete**: El volumen será eliminado cuando se elimine de SleakOps - - **Retain**: El volumen persistirá en AWS incluso si se elimina de SleakOps - -:::tip Configuración de Volúmenes -- Las rutas de montaje deben ser rutas absolutas (ej., `/app/data`, `/var/logs`) -- La capacidad de almacenamiento se especifica en GB -- La política de retención determina la persistencia de datos cuando se eliminan volúmenes -::: - -## Eliminar Volúmenes - - -delete volume click - - -Para eliminar un volumen de tu proyecto: - -1. **Haz clic en el botón "X"** junto al volumen que quieres eliminar -2. **Confirma la eliminación** cuando se te solicite - -:::warning Advertencia de Pérdida de Datos -Eliminar un volumen eliminará permanentemente todos los datos almacenados en él. Asegúrate de hacer una copia de seguridad de cualquier dato importante antes de la eliminación. -::: - -:::info Comportamiento de la Política de Retención -- **Política Delete**: El volumen y todos los datos se eliminan permanentemente de AWS -- **Política Retain**: El volumen permanece en AWS pero se desvincula del proyecto, preservando tus datos -::: \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/_category_.json deleted file mode 100644 index 550ada615..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Workloads", - "position": 6 -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/cronjob.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/cronjob.mdx deleted file mode 100644 index 54af269df..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/cronjob.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 3 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Cronjobs - -**CronJobs** son tareas programadas que se ejecutan a intervalos regulares (p. ej., diariamente a las 3 a. m., semanalmente o mensualmente). Automatizan tareas repetitivas como copias de seguridad, limpieza de registros o actualizaciones periódicas. Al igual que los Jobs, también se ejecutan en pods, lo que facilita la revisión de sus logs. - - -## FAQs - -
- -### ¿Cómo puedo configurar la memoria y los ajustes de CPU para mi Cronjob? - -Puedes configurar los valores *CPU Request* y *CPU Limit* para establecer los recursos mínimos y máximos de CPU que cada instancia en tu clúster puede usar. De manera similar, puedes establecer **Memory Request** y **Memory Limit** para la asignación de memoria por instancia. -
- - - - -## Añadir un Cronjob para tu Proyecto -### 1. Navegar a la sección de crear un Cronjob -En el _Panel izquierdo_, accede a _Workloads_. Luego selecciona la pestaña _Cronjob_ y, en la esquina superior derecha, haz clic en el botón _Crear_. - - -cronjob-list - - -### 2. Selecciona un Proyecto y un Nombre para el Cronjob -Comienza con la información básica, completa estos atributos y haz clic en Siguiente para continuar. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu Cronjob. | -| **Proyecto** | Selecciona entre los proyectos existentes. | -| **Comando** | El comando que ejecuta el servicio. | - -Una vez completados estos atributos, haz clic en el botón _Siguiente_ para continuar. - - -cronjob-create-1 - - -### 3. Define la periodicidad -Select the schedule and click _Next_. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Crontab** | Expresión cron para determinar el horario de ejecución del cronjob | - - -cronjob-create-2 - - -### 5. Finalizar la configuración -Este paso describe los atributos clave para configurar los recursos de un Cronjob en SleakOps, permitiendo una gestión flexible de CPU, memoria y comportamientos de escalado. - -| **Atributo** | **Descripción** | -| --- | --- | -| **CPU Request** | La cantidad mínima de recursos de CPU asignados para cada instancia en el clúster. Esto garantiza que cada instancia siempre tenga esta cantidad de CPU disponible. | -| **CPU Limit** | La cantidad máxima de recursos de CPU que cada instancia en el clúster puede utilizar. Este límite ayuda a prevenir que una instancia consuma demasiada CPU. | -| **Memory Request** | La cantidad mínima de memoria asignada para cada instancia en el clúster. Esto garantiza que la instancia tenga suficiente memoria para operar eficientemente. | -| **Memory Limit** | La cantidad máxima de memoria que cada instancia en el clúster puede utilizar. Limita el uso de memoria para evitar que una sola instancia consuma recursos en exceso. | - - -cronjob-create-3 - - -Submit to create and Deploy your cronjob. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/hook.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/hook.mdx deleted file mode 100644 index 6059303dc..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/hook.mdx +++ /dev/null @@ -1,82 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Hooks - -**Hooks** son tareas que se activan ante eventos específicos durante un despliegue. Por ejemplo, puedes usar Hooks para ejecutar automáticamente una migración de base de datos o recopilar estadísticas cada vez que se despliega una nueva versión de tu aplicación. Estas tareas también se ejecutan en pods, lo que facilita la solución de problemas al revisar los registros (logs). - -Si deseas obtener más información sobre Hooks, [click here](https://helm.sh/docs/topics/charts_hooks/). - - -## FAQs - -
- -### ¿Cómo puedo configurar la memoria y los ajustes de CPU para mi Hook? - -Puedes configurar los valores *CPU Request* y *CPU Limit* para establecer los recursos mínimos y máximos de CPU que cada instancia en tu clúster puede usar. De manera similar, puedes establecer **Memory Request** y **Memory Limit** para la asignación de memoria por instancia. -
- - -## Añadir un Hook para tu Proyecto -### 1. Navegar a la sección de crear un Hook -En el _Panel izquierdo_, accede a _Workloads_. Luego selecciona la pestaña _Hook_ y, en la esquina superior derecha, haz clic en el botón _Crear_. - - -hook-list - - -### 2. Selecciona un Proyecto y un Nombre para el Hook -Comienza con la información básica, completa estos atributos y haz clic en Siguiente para continuar. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu Hook. | -| **Proyecto** | Selecciona entre los proyectos existentes. | -| **Comando** | El comando que ejecuta el servicio. | - -Una vez completados estos atributos, haz clic en el botón _Siguiente_ para continuar. - - -hook-create-1 - - -### 3. Define el evento de despliegue -Selecciona cuándo se ejecutará tu hook y haz clic en _Siguiente_. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Event** | Define cuándo ejecutar el hook. [Ver eventos disponibles](https://helm.sh/docs/topics/charts_hooks/#the-available-hooks) | - - -hook-create-2 - - -### 5. Finalizar la configuración -Este paso describe los atributos clave para configurar los recursos de un Hook en SleakOps, permitiendo una gestión flexible de CPU, memoria y comportamientos de escalado. - -| **Atributo** | **Descripción** | -| --- | --- | -| **CPU Request** | La cantidad mínima de recursos de CPU asignados para cada instancia en el clúster. Esto garantiza que cada instancia siempre tenga esta cantidad de CPU disponible. | -| **CPU Limit** | La cantidad máxima de recursos de CPU que cada instancia en el clúster puede utilizar. Este límite ayuda a prevenir que una instancia consuma demasiada CPU. | -| **Memory Request** | La cantidad mínima de memoria asignada para cada instancia en el clúster. Esto garantiza que la instancia tenga suficiente memoria para operar eficientemente. | -| **Memory Limit** | La cantidad máxima de memoria que cada instancia en el clúster puede utilizar. Limita el uso de memoria para evitar que una sola instancia consuma recursos en exceso. | - - -hook-create-3 - - -Submit to create and Deploy your hook. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/index.mdx deleted file mode 100644 index 684b26778..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/index.mdx +++ /dev/null @@ -1,75 +0,0 @@ -import { FiExternalLink, FiCornerRightDown } from "react-icons/fi"; - -# Workloads - -En SleakOps, una Ejecución es simplemente un trabajo definido por el usuario que se ejecuta dentro del clúster. Dependiendo de cómo y cuándo necesites ejecutar tu carga de trabajo, puedes elegir entre cinco tipos diferentes: - - -| Name | Description | -| ------ | ----------- | -| [Web Service](/docs/project/workload/webservice) | Un servicio siempre activo que maneja solicitudes HTTP (por ejemplo, alojamiento de sitios web o APIs). | -| [Worker](/docs/project/workload/worker) | Un proceso en segundo plano para tareas internas (por ejemplo, colas de mensajes, procesamiento de datos). | -| [Cronjob](/docs/project/workload/cronjob) | Una tarea programada que se ejecuta periódicamente (por ejemplo, todos los días a las 3 a.m.). | -| [Job](/docs/project/workload/job) | Una tarea de una sola ejecución, ideal para operaciones puntuales o de mantenimiento. | -| [Hook](/docs/project/workload/hook) | Una tarea que se activa cuando se produce un evento de despliegue (por ejemplo, para ejecutar migraciones de base de datos o recopilar estadísticas). | - - -## Cual workload deberia crear para mi aplicacion? - -```mermaid -flowchart TB - A("¿Tu carga de trabajo
necesita manejar solicitudes HTTP
(tráfico de usuarios o API)?") - B["Crea un
Web Service"] - C("¿Necesitas un proceso
que se ejecute continuamente en segundo plano
esperando tareas/eventos?") - D["Crea un
Worker"] - E("¿Necesitas que la tarea
se ejecute en un horario definido?") - F["Crea un
CronJob"] - G("¿Necesitas que la tarea
se ejecute una sola vez?") - H["Crea un
Job"] - I("¿Necesitas que la tarea
se ejecute en cada despliegue?") - J["Crea un
Hook"] - - A -- "Sí" --> B - A -- "No" --> C - C -- "Sí" --> D - C -- "No" --> E - E -- "Sí" --> F - E -- "No" --> I - I -- "Sí" --> J - I -- "No" --> G - G -- "Sí" --> H -``` - - -- **Web Service:** Elige esta opción si necesitas que tu aplicación o servicio esté disponible 24/7 para responder solicitudes HTTP. -- **Worker:** Úsalo para tareas de procesamiento en segundo plano, como colas de mensajes o procesos de datos, sin interacción HTTP directa. -- **CronJob:** Ideal para tareas de mantenimiento o generación de reportes que deban ejecutarse periódicamente en momentos específicos. -- **Job:** Adecuado para tareas puntuales o ejecutadas bajo demanda (por ejemplo, migraciones manuales de base de datos). -- **Hook:** Perfecto si quieres automatizar ciertas acciones (como migraciones de base de datos o análisis) en cada despliegue. - -## FAQs - -
- -### ¿Qué son los Request y Limits de CPU y Memoria, y cuáles son los valores predeterminados? - - -Al configurar cualquier workload en SleakOps (Web Service, Worker, CronJob, Job o Hook), puedes definir **requests** (solicitudes) y **limits** (límites) de recursos tanto para CPU como para memoria: - -- **Min/Request**: La cantidad mínima de recursos garantizada para tu workload. Kubernetes usa este valor para programar tu workload en un nodo con recursos disponibles suficientes. -- **Max/Limit**: La cantidad máxima de recursos que tu workload puede consumir. Si tu workload excede este límite, puede ser limitado (CPU) o terminado (memoria). - -**Comportamiento Predeterminado de SleakOps:** - -Cuando creas un workload y especificas valores de **Request** pero **no especificas valores de Limit**, SleakOps automáticamente establece los límites al **130% de los valores de request**. - -Por ejemplo: -- Si estableces **CPU Request** en `1000m` (1 núcleo de CPU) sin especificar un límite, SleakOps establecerá automáticamente **CPU Limit** en `1300m` (1.3 núcleos de CPU) -- Si estableces **Memory Request** en `512Mi` sin especificar un límite, SleakOps establecerá automáticamente **Memory Limit** en `665Mi` (aproximadamente 130%) - -**Sobrescribir el Valor Predeterminado:** - -Puedes sobrescribir este límite automático del 130% estableciendo explícitamente tus propios valores de **CPU Limit** y **Memory Limit** en el formulario de configuración del workload. Cuando especificas límites personalizados, SleakOps usará tus valores en lugar del cálculo automático del 130%. - -Esto te da control total sobre la asignación de recursos mientras proporciona valores predeterminados sensatos para despliegues rápidos. -
\ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/job.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/job.mdx deleted file mode 100644 index 44cab0c96..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/job.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Job ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Job - -**Jobs** son tareas de ejecución única, normalmente utilizadas para operaciones puntuales como actualizaciones, verificaciones del sistema o tareas de mantenimiento. Se ejecutan una vez y luego finalizan, y puedes revisar su progreso o resultados consultando los registros (logs) del pod correspondiente. - -## FAQs - -
- - -### ¿Cómo puedo configurar la memoria y los ajustes de CPU para mi Job? - - -Puedes configurar los valores _CPU Request_ y _CPU Limit_ para establecer los recursos mínimos y máximos de CPU que cada instancia en tu clúster puede usar. De manera similar, puedes establecer **Memory Request** y **Memory Limit** para la asignación de memoria por instancia. -
- -
- - -### **¿Por qué aparece un mensaje de Timeout en mi Job?** - - -El timeout que ves en SleakOps corresponde a un límite de tiempo de la plataforma para monitorear el estado del Job (aproximadamente 30 minutos). Pasado ese tiempo, SleakOps deja de monitorearlo pero no mata el proceso — el Job sigue corriendo normalmente en tu infraestructura. - -**¿Cómo puedo verificar si mi Job terminó correctamente?** - -Podés validarlo por métodos alternativos: revisando los logs del pod directamente o usando herramientas como Lens para monitorear el estado en tiempo real. - -**Mi Job se corta antes de terminar, ¿a qué se debe?** - -Si el Job no llega a completarse, lo más probable es que el pod haya sido terminado por estar corriendo sobre un nodo spot. Los nodos spot son económicos pero no están adaptados para cargas de trabajo de larga duración, ya que pueden ser interrumpidos en cualquier momento. Podés verificarlo revisando los logs del pod de Karpenter para ese momento. - -**¿Qué puedo hacer para evitar este problema?** - -Si seguís usando nodos spot, se recomienda dividir la carga de trabajo en lotes más pequeños y correrlos en varios pods en paralelo. Incluso podés automatizar esto usando un CronJob. -
- -## Añadir un Job para tu Proyecto - -### 1. Navegar a la sección de crear un Job - -En el _Panel izquierdo_, accede a _Workloads_. Luego selecciona la pestaña _Job_ y, en la esquina superior derecha, haz clic en el botón _Crear_. - - -job-list - - -### 2. Selecciona un Proyecto y un Nombre para el Job - -Comienza con la información básica, completa estos atributos y haz clic en Siguiente para continuar. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu Job. | -| **Proyecto** | Selecciona entre los proyectos existentes. | -| **Comando** | El comando que ejecuta el servicio. | -| **Image** | Por defecto el job utiliza la imagen de tu proyecto, pero puedes reemplazarla por otra | -| **Image tag** | Puedes especificar la etiqueta de la imagen. | - -Una vez completados estos atributos, haz clic en el botón _Siguiente_ para continuar. - - -job-create-1 - - -### 3. Finalizar la configuración - -Este paso describe los atributos clave para configurar los recursos de un Job en SleakOps, permitiendo una gestión flexible de CPU, memoria y comportamientos de escalado. - -| **Atributo** | **Descripción** | -| --- | --- | -| **CPU Request** | La cantidad mínima de recursos de CPU asignados para cada instancia en el clúster. Esto garantiza que cada instancia siempre tenga esta cantidad de CPU disponible. | -| **CPU Limit** | La cantidad máxima de recursos de CPU que cada instancia en el clúster puede utilizar. Este límite ayuda a prevenir que una instancia consuma demasiada CPU. | -| **Memory Request** | La cantidad mínima de memoria asignada para cada instancia en el clúster. Esto garantiza que la instancia tenga suficiente memoria para operar eficientemente. | -| **Memory Limit** | La cantidad máxima de memoria que cada instancia en el clúster puede utilizar. Limita el uso de memoria para evitar que una sola instancia consuma recursos en exceso. | - - -job-create-2 - - -Submit to create and Deploy your job. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/webservice.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/webservice.mdx deleted file mode 100644 index 6100f9b22..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/webservice.mdx +++ /dev/null @@ -1,270 +0,0 @@ ---- -sidebar_position: 1 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Web Service - -**Web Services** son servicios que se ejecutan de forma continua y se encargan de gestionar interacciones basadas en HTTP, como servir páginas web, procesar solicitudes de API o administrar la autenticación de usuarios. En Kubernetes, cada Web Service se ejecuta en uno o varios pods que permanecen activos para responder a solicitudes externas en todo momento. - - -## Preguntas Frecuentes - -
- -### ¿Cuál es la diferencia entre los esquemas de servicio Público, Privado e Interno? - -- **Público**: Accesible a través de Internet y abierto a cualquier persona. -- **Privado**: Acceso restringido, disponible solo cuando se está conectado a la VPN. -- **Interno**: Solo accesible dentro del mismo clúster de Kubernetes y se utiliza para la comunicación interna entre servicios. -
- -
- -### ¿Cómo configuro el auto-escalado para mi Web Service? - -Para habilitar el auto-escalado, puedes activar la opción **Autoscaling** y definir el **Memory Target** y el **CPU Target**. Estos objetivos determinan los umbrales de uso de recursos que desencadenan el auto-escalado. También debes especificar el número mínimo y máximo de réplicas que se deben mantener cuando el auto-escalado está habilitado. -
- -
- -### ¿Cuáles son los códigos de éxito predeterminados para un Web Service y puedo cambiarlos? - -El código de éxito predeterminado es el 200, que indica que el servicio está sano. Puedes cambiar este código según los requisitos de tu aplicación, ya que algunos servicios pueden devolver diferentes códigos de éxito dependiendo de las acciones específicas. -
- -
- -### ¿Qué pasa si mi verificación de salud falla repetidamente? - -Si la verificación de salud falla de manera consecutiva y alcanza el umbral de fallos (el valor predeterminado es 60), el servicio se marcará como no saludable, y Kubernetes podría reiniciar o terminar la instancia del servicio para intentar una recuperación. -
- -
- -### ¿Cómo puedo configurar la memoria y los ajustes de CPU para mi Web Service? - -Puedes configurar la asignación de recursos para tu Web Service en el **Paso 5: Finalizar la configuración** al crear o actualizar el servicio: - -- **CPU Request**: Los recursos mínimos de CPU garantizados para cada instancia -- **CPU Limit**: Los recursos máximos de CPU que cada instancia puede usar -- **Memory Request**: La memoria mínima garantizada para cada instancia -- **Memory Limit**: La memoria máxima que cada instancia puede usar - -**Importante - Comportamiento Predeterminado de SleakOps:** - -Si especificas valores de **Request** pero dejas los campos de **Limit** vacíos, SleakOps automáticamente establece los límites al **130% de los valores de request**. - -Por ejemplo: -- **CPU Request** = `1000m` → **CPU Limit** se convierte automáticamente en `1300m` -- **Memory Request** = `512Mi` → **Memory Limit** se convierte automáticamente en `665Mi` - -Para sobrescribir este valor predeterminado y establecer límites personalizados, simplemente especifica tus propios valores de **CPU Limit** y **Memory Limit** en el formulario de configuración. Se usarán tus valores personalizados en lugar del cálculo automático del 130%. -
- -
- -### ¿Cuáles son algunas buenas prácticas al configurar un Web Service en SleakOps? - -- Siempre establece **un mínimo de 2 réplicas** para evitar el tiempo de inactividad. -- Asegúrate de que las **rutas de verificación de salud** y los **códigos de éxito** estén configurados correctamente para reflejar la verdadera salud de tu servicio. -- Usa **auto-escalado** siempre que sea posible para optimizar los recursos dinámicamente según la demanda. -- Revisa y ajusta adecuadamente los objetivos de **memoria** y **uso de CPU** para evitar sobrecargar tu infraestructura. -
- -
- -### ¿Qué debo hacer si mi servicio muestra tiempos de respuesta superiores a los 10 segundos? - -Los tiempos de respuesta largos pueden indicar problemas como limitaciones de recursos, ineficiencias en la aplicación o problemas de red. Deberías revisar los registros de tu servicio, asegurarte de que los recursos (CPU, memoria) estén asignados adecuadamente y revisar el código de la aplicación para posibles optimizaciones. -
- -
- -### ¿Qué es el terminationGracePeriod y cómo lo configuro? - -El **terminationGracePeriod** es una configuración de Kubernetes que define cuánto tiempo (en segundos) espera Kubernetes para que tu aplicación se detenga de forma ordenada antes de forzar su terminación. Esto es crucial para garantizar que tu servicio pueda finalizar el procesamiento de solicitudes activas, cerrar conexiones de base de datos o realizar operaciones de limpieza antes de apagarse. - -**Cómo funciona:** Cuando Kubernetes necesita detener tu contenedor (durante un despliegue, un evento de escalado o un apagado), primero envía una señal **SIGTERM** a tu proceso y luego espera la cantidad de segundos definida por `terminationGracePeriod` antes de matar forzosamente el contenedor. La mayoría de los frameworks con los que construimos aplicaciones manejan SIGTERM automáticamente, pero si tenés algo personalizado, asegurate de que tu aplicación escuche SIGTERM y cierre correctamente todas sus conexiones y procesos en curso — de lo contrario, Kubernetes puede matar el contenedor mientras una operación está a medias. - -**Valor predeterminado:** 30 segundos - -**Cuándo ajustarlo:** -- Auméntalo si tu servicio necesita más tiempo para completar tareas de larga duración durante el apagado. -- Auméntalo si estás viendo terminaciones abruptas de conexiones o transacciones incompletas durante los despliegues. -- Disminúyelo si tu servicio se apaga rápidamente y deseas despliegues más rápidos. - -**Cómo configurarlo en SleakOps:** - -Al crear o actualizar un Web Service, puedes configurar el **terminationGracePeriod** en el **Paso 4: Ajustes del servicio**. Este campo te permite especificar el número de segundos que Kubernetes debe esperar antes de detener forzosamente tu servicio. - -**A través de Chart Templates:** - -También puedes configurar este valor a través de Chart Templates añadiéndolo a tus values: - -```yaml -terminationGracePeriodSeconds: 60 # Esperar 60 segundos antes de la terminación forzada -``` - -Esto le da a tu aplicación tiempo suficiente para manejar procedimientos de apagado ordenado, asegurando la integridad de los datos y una mejor experiencia de usuario durante actualizaciones u operaciones de escalado. -
- -
- -### Como puedo desplegar mi sitio web estatico? - -Por el momento, Sleakops no ofrece soporte nativo para sitios estáticos. Sin embargo, puedes desplegarlos utilizando el mismo flujo que para otros sitios, contenedorizándolos con un servidor web como Nginx. A continuación, se muestra un ejemplo sencillo de un Dockerfile y su correspondiente nginx.conf para servir tu contenido estático. - -``` -FROM node:20.11.0-alpine AS base - -WORKDIR /app - -FROM base AS build - -ARG BACKEND_URL - -WORKDIR /app - -COPY package.json package-lock.json ./ - -RUN npm install - -COPY . ./ - -RUN npm run build - -FROM nginx:1.25.3-alpine AS production - -COPY --from=build /app/config/nginx.conf /etc/nginx/conf.d/default.conf -COPY --from=build /app/dist /usr/share/nginx/html - -EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] -``` - -Un ejemplo de `config/nginx.conf`: - -``` -server { - listen 80; - - location = /health { - access_log off; - add_header 'Content-Type' 'application/json'; - return 200 '{"status":"OK"}'; - } - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - try_files $uri $uri/ /index.html =404; - - add_header Last-Modified $date_gmt; - add_header Cache-Control 'no-store, no-cache'; - if_modified_since off; - expires off; - etag off; - } -} -``` - -Utilizando este enfoque basado en Docker, puedes servir tu sitio estático con Nginx, todo dentro de un contenedor. - -
- - -## Añadir un Web Service para tu Proyecto -### 1. Navegar a la sección de crear un Web Service -En el _Panel izquierdo_, accede a _Workloads_. Luego selecciona la pestaña _Servicios Web_ y, en la esquina superior derecha, haz clic en el botón _Crear_. - - -workloads-list - - -### 2. Selecciona un Proyecto y un Nombre para el Web Service -Comienza con la información básica, completa estos atributos y haz clic en Siguiente para continuar. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu Web Service. | -| **Proyecto** | Selecciona entre los proyectos existentes. | -| **Comando** | El comando que ejecuta el servicio. | -| **Puerto** | El número de puerto donde se ejecuta el servicio. Predeterminado: `8000` | - -Una vez completados estos atributos, haz clic en el botón _Siguiente_ para continuar. - - -webservice-create-p1 - - -### 3. Define la conexión -Selecciona cómo será tu conexión y haz clic en _Siguiente_. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Esquema de Servicio** | Define la accesibilidad del servicio: público, privado o interno. | -| **URL** | La URL asignada al servicio según el entorno y la configuración del proyecto. Formato: `name.myenv.sleakops.com`. | - - -webservice-create-p2 - - -### 4. Especifica los ajustes de tu servicio -Verás los siguientes atributos para especificar las condiciones. - - -webservice-create-p3 - - -| **Atributo** | **Descripción** | -| --- | --- | -| **Ruta** | La ruta donde Kubernetes verifica si el Web Service está operativo. Predeterminado: `/` | -| **Código de Éxito** | El código HTTP de éxito que indica la salud del servicio. Predeterminado: `200`. | -| **Retraso Inicial en Segundos** | Número de segundos después del inicio antes de que comiencen las verificaciones de salud. Predeterminado: `10`. | -| **Segundos de Tiempo de Espera** | Número de segundos después del inicio antes de que comiencen las verificaciones de salud. Predeterminado: `1`. | -| **Segundos entre cada Verificación** | Intervalo (en segundos) entre cada prueba de verificación de salud. Predeterminado: `5`. | -| **Umbral de Éxitos** | Número mínimo de éxitos consecutivos requeridos para que la prueba se considere exitosa después de fallar. Predeterminado: `1`. | -| **Umbral de Fallos** | Número de fallos consecutivos antes de que la prueba se considere fallida. Predeterminado: `60`. | -| **terminationGracePeriod** | Tiempo en segundos que Kubernetes espera para el apagado ordenado antes de terminar forzosamente el servicio. Predeterminado: `30`. | - -Una vez completados estos atributos, haz clic en el botón Siguiente para continuar con el siguiente paso. - -### 5. Finalizar la configuración -Este paso describe los atributos clave para configurar los recursos de un Servicio Web en SleakOps, permitiendo una gestión flexible de CPU, memoria y comportamientos de escalado. - -| **Atributo** | **Descripción** | -| --- | --- | -| **CPU Request** | La cantidad mínima de recursos de CPU asignados para cada instancia en el clúster. Esto garantiza que cada instancia siempre tenga esta cantidad de CPU disponible. | -| **CPU Limit** | La cantidad máxima de recursos de CPU que cada instancia en el clúster puede utilizar. Este límite ayuda a prevenir que una instancia consuma demasiada CPU. | -| **Memory Request** | La cantidad mínima de memoria asignada para cada instancia en el clúster. Esto garantiza que la instancia tenga suficiente memoria para operar eficientemente. | -| **Memory Limit** | La cantidad máxima de memoria que cada instancia en el clúster puede utilizar. Limita el uso de memoria para evitar que una sola instancia consuma recursos en exceso. | -| **Autoscaling** | Activar o desactivar el auto-escalado. Cuando está habilitado, permite que el servicio ajuste el número de réplicas según la demanda y el uso de recursos. | -| **CPU Target** | El porcentaje de uso de CPU que desencadena el auto-escalado. Si el uso supera este objetivo, se pueden desplegar réplicas adicionales para equilibrar la carga. | -| **Memory Target** | El porcentaje de uso de memoria que activa el ajuste de auto-escalado. Cuando las instancias superan este objetivo, el sistema escala hacia arriba para acomodar la demanda. | -| **Replicas Min** | El número mínimo de réplicas que deben mantenerse cuando el auto-escalado está activo. Un mínimo de 2 réplicas garantiza alta disponibilidad y previene tiempos de inactividad. | -| **Replicas Max** | El número máximo de réplicas que se pueden desplegar cuando el auto-escalado está habilitado. Establece un límite superior en el número de instancias para evitar la sobreasignación de recursos. | - - -webservice-create-p4 - - -Envía para crear y desplegar tu web service. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/worker.mdx b/i18n/es/docusaurus-plugin-content-docs/current/project/workload/worker.mdx deleted file mode 100644 index df8b62deb..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/workload/worker.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -sidebar_position: 2 ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Worker - -**Workers** son procesos en segundo plano que no responden directamente a solicitudes HTTP. En su lugar, se centran en tareas internas como el procesamiento de datos, la gestión de trabajos en cola o el envío de notificaciones por correo electrónico. De forma similar a los Web Services, los Workers también se ejecutan en pods de Kubernetes, pero normalmente funcionan a partir de eventos o según un horario establecido, en lugar de atender solicitudes de red entrantes. Por ejemplo, podrías tener un pod de Worker que escuche mensajes en una cola (por ejemplo, para generar informes) y procese estas tareas sin requerir interacción del usuario. - - -## FAQs - -
- -### ¿Cómo configuro el auto-escalado para mi Worker? - -Para habilitar el auto-escalado, puedes activar la opción **Autoscaling** y definir el **Memory Target** y el **CPU Target**. Estos objetivos determinan los umbrales de uso de recursos que desencadenan el auto-escalado. También debes especificar el número mínimo y máximo de réplicas que se deben mantener cuando el auto-escalado está habilitado. -
- -
- -### ¿Cómo puedo configurar la memoria y los ajustes de CPU para mi Worker? - -Puedes configurar los valores *CPU Request* y *CPU Limit* para establecer los recursos mínimos y máximos de CPU que cada instancia en tu clúster puede usar. De manera similar, puedes establecer **Memory Request** y **Memory Limit** para la asignación de memoria por instancia. -
- - - -## Añadir un Worker para tu Proyecto -### 1. Navegar a la sección de crear un Worker -En el _Panel izquierdo_, accede a _Workloads_. Luego selecciona la pestaña _Worker_ y, en la esquina superior derecha, haz clic en el botón _Crear_. - - -worker-list - - -### 2. Selecciona un Proyecto y un Nombre para el Worker -Comienza con la información básica, completa estos atributos y haz clic en Siguiente para continuar. - -| **Atributo** | **Descripción** | -| --- | --- | -| **Nombre** | Identifica tu Worker. | -| **Proyecto** | Selecciona entre los proyectos existentes. | -| **Comando** | El comando que ejecuta el servicio. | - -Una vez completados estos atributos, haz clic en el botón _Siguiente_ para continuar. - - -worker-create-1 - - -### 3. Finalizar la configuración -Este paso describe los atributos clave para configurar los recursos de un Worker en SleakOps, permitiendo una gestión flexible de CPU, memoria y comportamientos de escalado. - -| **Atributo** | **Descripción** | -| --- | --- | -| **CPU Request** | La cantidad mínima de recursos de CPU asignados para cada instancia en el clúster. Esto garantiza que cada instancia siempre tenga esta cantidad de CPU disponible. | -| **CPU Limit** | La cantidad máxima de recursos de CPU que cada instancia en el clúster puede utilizar. Este límite ayuda a prevenir que una instancia consuma demasiada CPU. | -| **Memory Request** | La cantidad mínima de memoria asignada para cada instancia en el clúster. Esto garantiza que la instancia tenga suficiente memoria para operar eficientemente. | -| **Memory Limit** | La cantidad máxima de memoria que cada instancia en el clúster puede utilizar. Limita el uso de memoria para evitar que una sola instancia consuma recursos en exceso. | -| **Autoscaling** | Activar o desactivar el auto-escalado. Cuando está habilitado, permite que el servicio ajuste el número de réplicas según la demanda y el uso de recursos. | -| **CPU Target** | El porcentaje de uso de CPU que desencadena el auto-escalado. Si el uso supera este objetivo, se pueden desplegar réplicas adicionales para equilibrar la carga. | -| **Memory Target** | El porcentaje de uso de memoria que activa el ajuste de auto-escalado. Cuando las instancias superan este objetivo, el sistema escala hacia arriba para acomodar la demanda. | -| **Replicas Min** | El número mínimo de réplicas que deben mantenerse cuando el auto-escalado está activo. Un mínimo de 2 réplicas garantiza alta disponibilidad y previene tiempos de inactividad. | -| **Replicas Max** | El número máximo de réplicas que se pueden desplegar cuando el auto-escalado está habilitado. Establece un límite superior en el número de instancias para evitar la sobreasignación de recursos. | - - -worker-create-2 - - -Submit to create and Deploy your worker. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/provider/_category_.json deleted file mode 100644 index 8bc30b84f..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Provider", - "position": 3, -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/accounts.mdx b/i18n/es/docusaurus-plugin-content-docs/current/provider/accounts.mdx deleted file mode 100644 index 7d0939704..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/accounts.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Cuentas -sidebar_label: Cuentas -sidebar_position: 1 ---- - -import Zoom from "react-medium-image-zoom"; - -# Cuentas - -## Cuentas del Provider - -SleakOps implementa una infraestructura bien estructurada, diseñada para optimizar la excelencia operativa y garantizar un entorno seguro y escalable para los usuarios. Esta infraestructura se compone de cuatro cuentas, cada una con propósitos específicos y aisladas entre sí. - -Cada cuenta tiene una instancia de VPN generada al crear el primer clúster. - -Una vez que las Cuentas están activas, asignamos a cada una lo que llamamos [Módulo de Red](/docs/network), que contiene una variedad de servicios de AWS utilizados para realizar conexiones de red dentro de las cuentas. - - - arquitectura-de-referencia - - -### Cuenta de Seguridad - -La Cuenta de Seguridad centraliza la administración de usuarios de IAM y sus permisos de acceso al sistema. Aprende cómo cambiar entre cuentas en [Autenticación de Consola de AWS](../user/aws_console_authentication). - -### **Cuenta de Management** - -Diseñada para mantener servicios internos utilizados para el mantenimiento de aplicaciones, independientemente de si se comparten entre cuentas. Ejemplo: Sentry. - -- Contiene un clúster de EKS con CI/CD integrado (GitHub y HashiCorp Vault). -- Vault gestiona credenciales para CloudWatch, mejorando las capacidades de monitoreo. -- VPC Peering permite conexiones privadas a otras cuentas. - -### **Cuenta de Desarrollo** - -Para las diferentes etapas de tu aplicación antes de que pase a producción. - -- Contiene tres entornos: dev, QA y Staging. -- Réplicas del entorno de producción para escribir código, realizar pruebas y pre-lanzamientos. -- Asegura pruebas aisladas para evitar problemas a los usuarios externos. -- Arquitectura similar a prod pero sin RDS Slave para reducir los requisitos de alta disponibilidad. - -### Cuenta de Producción - -Esta cuenta está destinada a que tu aplicación se instale en un entorno productivo, aislado del resto de las etapas de tu aplicación. - -- Soporta usuarios externos y requiere una base de datos completamente funcional (RDS Master). -- Utiliza Subnet de BD Privada para RDS Master, RDS Slave y ElastiCache, cada uno en diferentes Zonas de Disponibilidad (AZs) para alta disponibilidad. -- Despliegue de Backend con réplicas distribuidas en diferentes AZs. -- Despliegue de Frontend con LoadBalancer para una distribución uniforme de la carga de red. -- Route53 actúa como DNS y realiza comprobaciones de salud para la aplicación. -- AWS CloudFront sirve contenido frontend estático desde un bucket de S3. -- RDS Slave actúa como réplica de RDS Master para escenarios de conmutación por error, maximizando el tiempo de actividad. - -### Selección de una Cuenta en SleakOps - -
-
- -![account-switcher](/img/imagentestaccount.png "Account Switcher") - -

Para seleccionar una cuenta y poder trabajar en ella, selecciónala desde el panel izquierdo.

-

El icono de la izquierda se refiere al Provider que agrupa las cuentas.

-
-
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/common-errors.mdx b/i18n/es/docusaurus-plugin-content-docs/current/provider/common-errors.mdx deleted file mode 100644 index 0cec98430..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/common-errors.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -sidebar_label: Errores Comunes -sidebar_position: 3 ---- - -import Zoom from "react-medium-image-zoom"; - -# Errores comunes en Providers - -Si el proceso de creación de un Provider termina en *Error*, generalmente se debe a un problema de conexión con la cuenta de AWS. - -Encontrarás el estado de *Error* en el listado de Providers. - -A continuación, se describen los casos más comunes y cómo solucionarlos. - -### 1. El ID de la cuenta configurada no tiene acceso Root - -En este caso, al hacer clic en el botón *Fix*, serás redirigido nuevamente a AWS. - -Asegúrate de haber iniciado sesión como usuario Root. - - - provider-sin-root - - -### 2. Se alcanzó el número máximo de cuentas de AWS - -AWS tiene un límite de cuentas que puede impedir la creación de nuevas. - -Antes de volver a intentar el proceso, aumenta ese límite. De lo contrario, el proceso fallará nuevamente. - - - error-limite-cuentas-provider - - -### 3. Otros errores - -Pueden surgir otros problemas que generalmente se resuelven ejecutando nuevamente la conexión con AWS. - -Si el error persiste después de intentar eliminar el Provider y crear uno nuevo, no dudes en reportarnos el problema. - - - error-inesperado-provider - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/deleting-a-provider.mdx b/i18n/es/docusaurus-plugin-content-docs/current/provider/deleting-a-provider.mdx deleted file mode 100644 index f76770aa4..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/deleting-a-provider.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -sidebar_label: Eliminar un Provider -sidebar_position: 2 ---- - -import Zoom from "react-medium-image-zoom"; - -# Eliminar un Provider - -- Esta función te permite eliminar un Provider y todo lo que fue creado bajo él. -- Solo los Providers *creados exitosamente* y aquellos con *error* pueden ser eliminados. Si no ves la opción, probablemente el Provider está en otro estado. - -:::warning -La *Organización* creada y sus cuentas (gestión, desarrollo, producción y seguridad) no se eliminarán automáticamente. Aunque mantener estas cuentas bajo tu Cuenta Root de AWS no genera costos, **recomendamos eliminarlas** manualmente. -::: - -## Cómo eliminar un Provider - -### 1. Selecciona el Provider a eliminar - -Una vez que estés en la sección *Providers*, selecciona un Provider y haz clic en el botón de Tres Puntos **para mostrar la opción *Eliminar*. Haz clic en ella. - - - eliminar-provider - - -### 2. Confirma el procedimiento - -Verás un modal para confirmar la acción. Recuerda que esta acción eliminará toda la infraestructura creada en AWS bajo este Provider. - - - confirmar-eliminacion-provider - - -### 3. Elimina manualmente la Organización y sus Cuentas - -Como se mencionó anteriormente, la *Organización* creada y sus cuentas (gestión, desarrollo, producción y seguridad) no se eliminarán automáticamente. - -Accede a tu Cuenta Root de AWS para eliminarlas manualmente ingresando a [AWS Organizations](https://console.aws.amazon.com/organizations/v2/home/accounts). - - - cuenta-de-gestion - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx deleted file mode 100644 index 3a4b541c1..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -sidebar_position: 4 -pagination_next: provider/schemas ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Providers - -En SleakOps, un Provider representa la conexión con tu nube de AWS, las credenciales otorgadas a SleakOps para acceder a ella y el conjunto de cuentas creadas para gestionar adecuadamente la infraestructura. - -En AWS, SleakOps creará una Organización con el nombre que seleccionaste e incluirá un conjunto de cuentas en ella. - -Para proporcionarte una vista clara de tus costos y recursos en AWS, SleakOps activa [Etiquetas de AWS ](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) en tu cuenta. En especial, SleakOps utiliza [Etiquetas de Asignación de Costos ](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html). - -## Vamos a crear tu provider en SleakOps - -### 1. Navega a la sección de providers - -En el *Panel Izquierdo*, accede a la opción *Configuración* y luego *Providers*. En la esquina superior derecha, haz clic en el botón *Crear*. - - - seccion-provider - - -### 2. Configura la Información Básica - - - informacion-basica-provider - - -Estos son los ajustes que debes definir: - -| Configuración | Descripción | -| --- | --- | -| Nombre | Selecciona un nombre para la Unidad Organizativa en AWS bajo la cual se crearán las cuentas necesarias. | -| Región | Región de AWS a utilizar. Si deseas saber más sobre ellas, puedes visitar esta documentación [aquí ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html). | -| Dominio | Aquí debes proporcionar el dominio que posees en el cual se desplegarán los diferentes entornos. Debe delegarse manualmente al Route53 principal de SleakOps. Sigue los pasos descritos en esta [guía ](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html). | -| Email | Por defecto, SleakOps usa el correo electrónico de la cuenta root proporcionada. Si deseas utilizar otro correo para registrar tus cuentas de SleakOps en AWS, completa este campo. | - -Una vez completado el formulario, haz clic en *Siguiente* para continuar. - -### 3. Conéctate a tu Cuenta Root de AWS - -:::warning -Debes estar conectado a tu Cuenta Root de AWS. -::: - -Para comenzar la instalación de tu aplicación, necesitamos conectarnos a tu Cuenta Root de AWS. Así es como hacerlo: - -- Al hacer clic en el botón *Siguiente*, serás redirigido a AWS para crear un rol de IAM en tu cuenta principal llamado "SleakopsIntegrationRole". -
    -
  1. Este rol nos permite acceder a los recursos necesarios, haciendo que la instalación sea rápida y fluida.
  2. -
  3. Después de la instalación, eliminaremos este rol para mantener la seguridad de tu cuenta.
  4. -
- - - acceso-cuenta-root-provider - - -### 4. Proceso de creación de la Unidad Organizativa en curso - -:::note -Crear una Unidad Organizativa no genera ningún costo en tu cuenta de AWS 😃 -::: - -Una vez establecida la conexión y creado el rol, SleakOps iniciará automáticamente la creación de la Unidad Organizativa. - -Este proceso tomará unos minutos. - - - proceso-iniciado-provider - - -### 5. Conoce la arquitectura de infraestructura creada por SleakOps para ti. - -Para entender lo que se creó en tu cuenta de AWS, consulta [Cuentas](/docs/provider/accounts). - diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/schemas.mdx b/i18n/es/docusaurus-plugin-content-docs/current/provider/schemas.mdx deleted file mode 100644 index 548ba50df..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/schemas.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -pagination_next: cluster/index ---- - -import Zoom from "react-medium-image-zoom"; - -# Diseñando tu Infraestructura - -## Esquema Simple vs. Esquema Múltiple - -SleakOps ofrece la flexibilidad y el control necesarios para construir una infraestructura adaptada a tus requisitos específicos. - -Si bien recomendamos adoptar una configuración de **Esquema Múltiple** para alinearte con las mejores prácticas, entendemos que diferentes etapas de tu proyecto pueden requerir configuraciones alternativas de esquemas. - - - Esquemas de cuentas de SleakOps - - -Aquí tienes una comparativa entre las dos opciones: - -| | **Esquema Múltiple** ⭐️ | **Esquema Único** | -| --- | --- | --- | -| **Descripción** | Alineado con las mejores prácticas. Configurarás primero la cuenta de *Desarrollo*. | Centraliza tus entornos dentro de un solo clúster. | -| **Cuenta a utilizar** | Utiliza todas las cuentas como se describe [aquí](/docs/provider/accounts). | Solo la cuenta de *Producción*. | -| **Ventajas** | Incrementa la seguridad al otorgar acceso por cuenta. La cuenta de *Producción* permanece aislada. | Reduce costos, ya que solo utiliza un clúster. | -| **Desventajas** | Es más costoso, ya que cada entorno tendrá su propio clúster y VPN. | Menos seguro, ya que todos los entornos comparten la misma cuenta. | - -Estas son solo dos opciones; tienes la libertad de crear el esquema que mejor se adapte a tus necesidades. - -## Ejemplo Multi-Schema - - - Ejemplo MultiSchema - - -## Ejemplo Single-Schema - - - Ejemplo SingleSchema - \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/provider/sidebar.js b/i18n/es/docusaurus-plugin-content-docs/current/provider/sidebar.js deleted file mode 100644 index 78c08c51e..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/sidebar.js +++ /dev/null @@ -1 +0,0 @@ -[cloudformation] \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/quickstart/django_celery/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/quickstart/django_celery/index.mdx deleted file mode 100644 index 3f8aec98a..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/quickstart/django_celery/index.mdx +++ /dev/null @@ -1,414 +0,0 @@ ---- -id: django-celery -title: Django + Celery -sidebar_label: Django + Celery ---- -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Aprende cómo desplegar tu proyecto Django + Celery usando Sleakops. - -## Prerrequisitos - -- Cuenta en Sleakops -- Un Clúster en esta cuenta. Si no lo tienes, [aquí está la documentación sobre cómo hacerlo](/docs/cluster). -- Un Ambiente configurado. Si no lo tienes, [aquí está la documentación sobre cómo hacerlo](/docs/environment) -- Proyecto Django configurado con celery (Este proyecto necesita tener docker). - -## Empecemos - -Para este ejemplo, vamos a usar [este proyecto ](https://github.com/sleakops/example-django-celery). Es un proyecto Django con Celery que ya tiene Docker configurado para funcionar. También vamos a configurar una base de datos Postgresql, bucket S3 y Rabbitmq necesarios para este proyecto. - -### Crear un proyecto -Para empezar, vamos a crear un nuevo proyecto. Para hacer esto, hacemos clic en el botón "Projects" en el panel izquierdo: - - click-project-reference - - -Dentro del panel de Proyectos podrás ver todos los proyectos que tienes y gestionarlos desde aquí. Queremos crear uno nuevo así que hagamos clic en el botón "create" en la parte superior derecha: - - click-create-project-reference - - -En la pantalla de creación de proyecto tenemos los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Environment** | Tenemos que seleccionar el ambiente creado previamente. | -| Nodepool| Dejaremos el predeterminado. | -| **Repositories** | Seleccionaremos nuestro repositorio que queremos desplegar. En nuestro caso example-django-celery. | -| Project Name | Podemos definir un nombre de proyecto. Para el ejemplo dejaremos el predeterminado. | -| **Branch** | Tiene que coincidir con el que tenemos en nuestro proyecto. En nuestro caso es "Main". | -| Dockerfile path | Es la ruta relativa al dockerfile en tu proyecto. | - -Una vez configurado todo eso, creamos el proyecto con el botón "Submit" en la parte inferior derecha: - - create-project-reference - - -Con eso, el proyecto comienza a crearse. Mientras tanto vamos a las cargas de trabajo con el botón "Workloads" en el panel izquierdo: - - click-workloads-reference - - -### Crear un Servicio Web -Aquí lo que vamos a hacer es crear un servicio web, así que vamos a la sección de servicio web y creamos uno: - - click-create-web-service-reference - - -En esta página vamos a completar el primer formulario con los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Project** | Seleccionamos el proyecto que creamos previamente, en nuestro caso "example-django-celery". | -| Name | Definimos un nombre para el servicio web. | -| **Command** | Por defecto esto tomará el valor que está en el dockerfile, en nuestro caso esto está bien. | -| Port | Lo mismo que el command. | - -Luego continuamos haciendo clic en el botón "Next" hasta el paso 3: - - create-web-service-reference - - -En el paso 3 tenemos que editar el campo path y poner el endpoint de healthcheck que en nuestro caso es "/healthcheck/". Luego hacemos clic en el botón "Next" hasta que se cree el servicio web: - - create-web-service-2-reference - - -### Desplegar celery worker -Bueno, con esto podemos ver nuestro servicio web desplegándose. Ahora vamos a desplegar el celery. Para esto tenemos que ir a la sección workers dentro de la misma pantalla de workloads: - - click-worker-reference - - -Y hacemos clic en el botón "Create" para crear uno nuevo: - - click-create-worker-reference - - -En la pantalla de creación de workers tendremos que completar los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Project** | Seleccionar el proyecto creado previamente. En nuestro caso "example-django-celery". | -| Name | Definimos el nombre que le vamos a dar al worker. En nuestro caso "celery". | -| **Command** | Aquí establecemos el comando para ejecutar celery, en nuestro caso es: ```bash celery -A core.celery_app worker -l INFO --concurrency 1 --max-tasks-per-child 1 --prefetch-multiplier 1 -n celery@%h --queues default,build,deployment,cluster,canvas,billing```| - -Con estos campos completados haremos clic en el botón "Next" en la parte inferior derecha y luego "Submit" ya que no necesitamos editar nada más: - - create-worker-reference - - -Con esto veremos nuestro celery publicado. Ahora tenemos que configurar los hooks. Para esto vamos a la sección hooks: - - click-hook-reference - - -### Crear un hook de migración -En la pantalla de creación de hook tendremos los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Project** | Seleccionar el proyecto creado previamente. En nuestro caso "example-django-celery". | -| **Name** | Definimos el nombre que le vamos a dar al worker. En nuestro caso "migrations". | -| **Command** | Aquí establecemos el comando para ejecutar celery, en nuestro caso es: ```bash python manage.py migrate --no-input ``` | - -Con estos campos completados haremos clic en el botón "Next" en la parte inferior derecha y luego "Submit" ya que no necesitamos editar nada más: - - create-hook-reference - - -### Crear un hook de collect static -Ahora procedemos a crear otro hook que necesitamos para los estáticos: - - click-create-collectstatic-hook-reference - - -En este formulario vamos a hacer lo mismo que el anterior pero modificando el comando. Hacemos clic en next hasta crear el hook (sin modificar nada más): - - create-collectstatic-hook-reference - - -El comando que usamos es el siguiente: -```bash -python manage.py collectstatic --no-input -``` - -### Crear una Base de Datos Postgresql -Una vez que hemos creado los hooks tenemos que ir a crear nuestra base de datos. Para hacer esto vamos a la sección "Dependencies": - - click-dependencies-reference - - -Dentro de esta sección hacemos clic en el botón "Create" en la parte superior derecha y luego seleccionamos "Postgresql": - - click-create-dependencies-reference - - - click-postgresql-reference - - -En el 1er formulario de creación de postgresql tendremos que seleccionar nuestro proyecto creado previamente y definir un nombre para él, luego hacemos clic en el botón "Next" en la parte inferior derecha: - - create-postgresql-reference - - -En el 2do formulario vamos a tener muchos campos, los únicos que nos importan son los siguientes: -| **Configuración** | **Descripción** | -| --- | --- | -| **Database Master Username** | Aquí asignamos un nombre de usuario root a nuestra base de datos. | -| **Database Master Password** | Una contraseña para este usuario root. | - -Una vez rellenados estos campos, estamos listos para continuar. Haga clic en el botón «Siguiente» situado en la parte inferior derecha para pasar al tercer formulario: - - create-postgresql-2-reference - - -En este último formulario, vamos a ajustar las variables de entorno que tenemos en nuestro proyecto con respecto a la base de datos. Para ello, debemos cambiar las siguientes variables por las nuestras propias: -| **Antes** | **Despues** | -| --- | --- | -| *_POSTGRESQL_NAME | DB_NAME | -| *_POSTGRESQL_USERNAME | DB_USER | -| *_POSTGRESQL_PASSWORD | DB_PASSWORD | -| *_POSTGRESQL_ADDRESS | DB_HOST | -| *_POSTGRESQL_PORT | DB_PORT | - -Debería verse similar a la imagen de abajo. A continuación, haga clic en el botón «Enviar» y se creará su base de datos: - - create-postgresql-3-reference - - -### Crear Bucket S3 -En la misma página de dependencias tenemos que crear nuestro bucket s3, para ello vamos a ir al botón "Create" nuevamente: - - click-create-s3-dependencies-reference - - -Y seleccionamos S3 Bucket: - - click-create-s3-dependencies-2-reference - - -En el primer formulario tenemos que seleccionar nuestro proyecto creado previamente y definir un nombre para el bucket, tenemos que tomar en cuenta que el nombre del bucket es global así que tiene que ser único. Ahora hacemos clic en el botón "Next" y vamos al paso 3: - - create-s3-dependencies-reference - - -Aquí vamos a ver algunas variables de entorno definidas para el bucket. Vamos a editar la que dice **COLLECTSTATICEXAMPLEDJANGOCELERY_BUCKET_NAME** y la vamos a llamar **DJANGO_AWS_STORAGE_BUCKET_NAME**. Con este simple cambio hacemos clic en el botón "Submit" en la parte inferior derecha para terminar de crear el bucket: - - create-s3-dependencies-3-reference - - -### Crear Rabbitmq -Ahora necesitamos una dependencia más. Nuestro Rabbitmq para encolar las tareas de celery, así que vamos a ello: - - click-create-rabbitmq-dependencies-reference - - -Y seleccionamos Rabbitmq: - - click-select-rabbitmq-reference - - -En el primer formulario tendremos que seleccionar nuestro proyecto y definir un nombre para él. Luego hacemos clic en el botón "Next" en la parte inferior derecha: - - create-rabbitmq-reference - - -En el siguiente formulario tenemos varios campos pero los únicos que nos importan para este ejemplo son el username y password, podemos definir lo que queramos. Para este ejemplo elegí admin como username y para la contraseña la generé aleatoriamente con el botón de dado. Luego hacemos clic en el botón "Next" para ir al siguiente formulario: - - create-rabbitmq-2-reference - - -En este último formulario tenemos que cambiar el nombre de la variable que termina en *_BROKER_AUTH_URL a CELERY_BROKER_URL (como se muestra en la imagen). Luego hacemos clic en el botón "Submit" en la parte inferior derecha para terminar de crear rabbitmq: - - create-rabbitmq-3-reference - - -### Crear tus variables de entorno -Una vez que las dependencias están desplegadas tenemos que configurar nuestras variables de entorno. Vamos a ir a la sección **Vargroups**: - - click-vargroups-reference - - -Aquí verás todas tus variables de entorno que creaste agrupadas en grupos, por ejemplo deberías haber creado una con los datos para la base de datos (que es la que ves en la imagen). Ahora vamos a crear otra para nuestras variables de entorno de django, para esto hacemos clic en el botón "Create" en la parte superior derecha: - - click-create-vargroups-reference - - -En este formulario tenemos los siguientes campos: -- Project: seleccionamos el proyecto que creamos previamente. -- Workload: Seleccionamos "global" que hace referencia a ser usado por todos nuestros workloads. -- Name: Definimos un nombre para este grupo de variables. -- Type: Si queremos cargarlo por archivo o por variable. -- Vars: Aquí habilitamos el textmode y copiamos las siguientes variables de entorno: -```bash -CELERY_RESULT_BACKEND=django-db -DJANGO_ADMIN_URL=admin/ -DJANGO_DEBUG=False -DJANGO_SECRET_KEY=secret_key -DJANGO_SETTINGS_MODULE=core.settings.production -DJANGO_STATIC_STORAGE=storages.backends.s3boto3.S3StaticStorage -DB_ENGINE=django.db.backends.postgresql_psycopg2 -ENVIRONMENT=production -LOGS_LEVEL=INFO -PYTHONPATH=. -``` -Estas variables de entorno son requeridas para nuestro proyecto de ejemplo. Finalmente hacemos clic en el botón "Submit" en la parte inferior derecha para crear el grupo de variables. - - create-vargroup-reference - - -### Despliegues -Como último paso vamos a ver nuestro proyecto desplegado, para esto vamos a la sección "Deployments" del panel izquierdo: - - click-deployments-reference - - -Aquí vamos a ver todos los despliegues que hacemos. En nuestro caso es el primero y podemos ver que se ha creado correctamente, en caso de que veas algún error si haces clic en "error" puedes ver una descripción del mismo. -Si no vemos ningún error entonces significa que el proyecto ya está desplegado, podríamos comenzar a usarlo desde la url que nos proporcionó el servicio web. - - deployments-reference - - -Esto concluye nuestro proceso de despliegue de proyecto. Te dejamos un paso opcional que es configurar el ci con github. - -## Opcional -### CI con Github -Cada vez que hagas un cambio en tu código y quieras desplegarlo tendrás que hacer un build y un deploy, esto eventualmente se vuelve tedioso. Por eso para evitar esto tenemos que implementar ci en github. - -Para esto vamos a ir a "Projects" en el panel izquierdo: - - click-project-2-reference - - -Ubiquemos nuestro proyecto y hagamos clic en el engranaje para acceder a la configuración del proyecto: - - click-settings-project-reference - - -En la configuración del proyecto ubicamos el que dice "Git pipelines" y hacemos clic en él: - - click-git-pipelines-reference - - -Aquí vamos a encontrar lo que necesitamos para hacer esto. Básicamente necesitamos configurar un archivo en la raíz de nuestro proyecto .github/workflows/ llamado ci_sleakops_demo.yml y en ese archivo vamos a pegar el contenido que aparece en esta página. - - git-pipelines-reference - - -Esto necesita tener una variable de entorno SLEAKOPS_KEY, si no la tienes tienes que ir al enlace que aparece ahí **Settings -> CLI**, obtenerla y guardarla como una variable de entorno. - -Con esto configurado y desplegado cada vez que hagas un push a tu rama "main" se lanzará automáticamente una nueva versión de tu aplicación. \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/quickstart/n8n/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/quickstart/n8n/index.mdx deleted file mode 100644 index eaaabe9bc..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/quickstart/n8n/index.mdx +++ /dev/null @@ -1,475 +0,0 @@ ---- -id: n8n-worker -title: n8n + Modo Worker -sidebar_label: n8n + Modo Worker ---- -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Aprende cómo desplegar tu proyecto n8n con modo worker distribuido y escalable en kubernetes usando Sleakops. - -## ¿Por qué Auto-hospedar n8n? - -Auto-hospedar n8n proporciona numerosas ventajas sobre las soluciones hospedadas en la nube: - -### 🔒 **Seguridad y Privacidad** -- **Control completo de datos**: Tus flujos de trabajo, credenciales y datos sensibles nunca abandonan tu infraestructura -- **Políticas de seguridad personalizadas**: Implementa los requisitos de seguridad específicos de tu organización -- **Aislamiento de red**: Mantén n8n dentro de tu red privada, reduciendo vectores de ataque externos -- **Cumplimiento**: Cumple con requisitos regulatorios estrictos (GDPR, HIPAA, SOC2) con despliegue local - -### 💰 **Optimización de Costos** -- **Sin límites por ejecución**: Ejecuta flujos de trabajo ilimitados sin precios basados en uso -- **Costos predecibles**: Costos de infraestructura fijos independientemente del volumen de uso -- **Eficiencia de recursos**: Escala recursos basándote en necesidades reales, no en niveles de precios de proveedores -- **Ahorros a largo plazo**: Reducción significativa de costos para escenarios de automatización de alto volumen - -### ⚡ **Rendimiento y Escalabilidad** -- **Asignación de recursos personalizada**: Asigna CPU y memoria basándote en los requisitos específicos de tu carga de trabajo -- **Baja latencia**: Acceso directo a sistemas internos sin roundtrips de internet -- **Alta disponibilidad**: Diseña sistemas redundantes con múltiples réplicas y mecanismos de failover -- **Integraciones personalizadas**: Conéctate a APIs internas y sistemas no accesibles desde proveedores de nube - -### 🎛️ **Control Total y Personalización** -- **Control de versiones**: Elige cuándo actualizar y prueba nuevas versiones en tu entorno -- **Nodos personalizados**: Instala y desarrolla nodos propietarios para tus casos de uso específicos -- **Variables de entorno**: Acceso completo a configuraciones a nivel de sistema y gestión de secretos -- **Estrategias de respaldo**: Implementa tus propios procedimientos de respaldo y recuperación ante desastres - -## Beneficios de Escalado en Kubernetes - -Desplegar n8n en un clúster de Kubernetes con Sleakops proporciona escalabilidad de nivel empresarial: - -### 🚀 **Escalado Horizontal** -- **Pods de worker**: Escala automáticamente instancias de worker basándote en la profundidad de cola y uso de CPU -- **Distribución de carga**: Distribuye la ejecución de flujos de trabajo a través de múltiples nodos worker -- **Auto-escalado**: Kubernetes HPA (Horizontal Pod Autoscaler) ajusta automáticamente el conteo de workers -- **Optimización de recursos**: Escala diferentes componentes independientemente (UI web vs workers) - -### 🏗️ **Resistencia de Infraestructura** -- **Alta disponibilidad**: Múltiples réplicas aseguran cero tiempo de inactividad durante fallas de nodos -- **Actualizaciones continuas**: Despliega nuevas versiones sin interrupción del servicio -- **Verificaciones de salud**: Kubernetes reinicia automáticamente pods fallidos y enruta tráfico a instancias saludables -- **Despliegue multi-zona**: Distribuye carga de trabajo a través de zonas de disponibilidad para recuperación ante desastres - -### 📊 **Monitoreo y Observabilidad** -- **Métricas en tiempo real**: Monitorea ejecución de flujos de trabajo, profundidad de cola y uso de recursos -- **Registro centralizado**: Agrega logs de todos los componentes n8n en un solo lugar -- **Insights de rendimiento**: Rastrea tiempos de ejecución, tasas de error y throughput -- **Alertas**: Notificaciones proactivas para problemas del sistema y cuellos de botella de rendimiento - -### 🔧 **Integración DevOps** -- **Flujos de trabajo GitOps**: Control de versiones de tu infraestructura n8n como código -- **Pipelines CI/CD**: Pruebas automatizadas y despliegue de configuraciones n8n -- **Gestión de secretos**: Integra con secretos de Kubernetes y gestores de secretos externos -- **Políticas de red**: Controles de seguridad de red de grano fino - -## Prerrequisitos - -- Cuenta en Sleakops -- Un Clúster en esta cuenta. Si no lo tienes, [aquí está la documentación sobre cómo hacerlo](/docs/cluster). -- Un Entorno configurado. Si no lo tienes, [aquí está la documentación sobre cómo hacerlo](/docs/environment) -- Proyecto n8n configurado con Docker. Sino lo tienes puedes hacer un fork o copia a [n8n-code](https://github.com/sleakops/n8n_sleakops). Este proyecto incluye un docker-compose para que puedas desplegarlo en local tambien asi puedes tener entornos distribuidos como quieras. - - -# Comencemos - -Para este ejemplo, vamos a desplegar un proyecto n8n en modo distribuido con workers. Esta configuración incluye el servicio principal n8n (interfaz web) y procesos worker para ejecutar flujos de trabajo. También vamos a configurar una base de datos PostgreSQL y Redis para gestión de colas necesarias para este proyecto. - -## Crear Proyecto - -Los proyectos son nuestros repositorios de codigo. Lo unico que necesita Sleakops para poder ejecutar comandos es un Dockerfile. -Para mas informacion puedes ver nuestra [documentación de proyectos](/docs/project) - -Para empezar, crearemos un nuevo proyecto: - -1. Haz clic en el botón "Projects" en el panel izquierdo -2. Luego haz clic en "Create" en la esquina superior derecha - - - click-project-reference - - -Dentro del panel Projects podrás ver todos los proyectos que tienes y gestionarlos desde aquí. Queremos crear uno nuevo así que hagamos clic en el botón "create" en la parte superior derecha: - -En la pantalla de creación del proyecto tenemos los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Environment** | Tenemos que seleccionar el entorno creado previamente. | -| Nodepool| Dejaremos el predeterminado. | -| **Repositories** | Seleccionaremos nuestro repositorio que contiene el proyecto n8n. | -| Project Name | Podemos definir un nombre de proyecto. Por ejemplo "n8n-server". | -| **Branch** | Tiene que coincidir con el que tenemos en nuestro proyecto. En nuestro caso es "main". | -| Dockerfile path | Es la ruta relativa al dockerfile en tu proyecto. | - -Una vez configurado todo eso creamos el proyecto con el botón "Submit" en la parte inferior derecha: - - create-project-reference - - -Con eso, el proyecto comienza a crearse. Mientras tanto vamos a las cargas de trabajo con el botón "Workloads" en el panel izquierdo: - - click-workloads-reference - - -## Crear Workloads - -Los workloads son los procesos que corre tu proyecto. Para el caso de n8n que vamos a correrlo en modo queue vamos a crear un webservice para la interfaz web y un worker -Para mas informacion puedes ver nuestra [documentación de workloads](/docs/project/workload) - -### Crear el Servicio Web -Aquí vamos a crear el servicio web principal n8n que manejará la interfaz de usuario y API: - - -En esta página vamos a completar el primer formulario con los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Project** | Seleccionamos el proyecto que creamos previamente, en nuestro caso "n8n-server". | -| Name | Definimos un nombre para el servicio web, por ejemplo "n8n-main". | -| **Command** | Comando predeterminado del Dockerfile (usualmente n8n start). | -| Port | Puerto 5678 (puerto predeterminado de n8n). | - - - click-create-web-service-reference - - - -En el segundo paso, configuraremos el webservice como **privado**: - -**¿Qué significa esto?** -- El servicio de n8n estará dentro de la VPC -- Solo será accesible desde servicios en la misma red -- Requiere VPN para acceso externo - -**Alternativa para webhooks públicos:** -Si necesitas conectar webhooks públicos (Jira, Slack, Google Drive, etc.), puedes: -- Dejar este servicio como público, O -- Crear un webservice adicional público con el comando `webhook` - - - - click-create-web-service-reference - - - -Sigue hasta el paso 3 "Service settings" y configura el healthcheck - -Para esto solo necesitamos definir bien el path del healthcheck que trae n8n `/healthz` , y le damos siguiente hasta finalizar el flujo y crear el web services. - - - click-create-web-service-reference - - -Este healthcheck es importante para que kubernetes sepa cuando esta listo el servicio para empezar a entregarle trafico http. Esto es util para no tener downtime entre cada deploy o rotacion de nodos. - - -El ultimo paso del formulario, donde definimos la memoria, cpu y condiciones de escalado por el momento no vamos a modificarlo, lo dejamos como te lo ofrece la plataforma. - - -### Crear el Worker n8n -Bien, con esto podemos ver nuestro servicio web desplegándose. Ahora vamos a desplegar el worker n8n para ejecución distribuida. Para esto tenemos que ir a la sección workers dentro de la misma pantalla de workloads y hacer clic en el botón "Create". - - click-worker-reference - - - -En la pantalla de creación de workers tendremos que completar los siguientes campos: -| **Configuración** | **Descripción** | -| --- | --- | -| **Project** | Seleccionar el proyecto creado previamente. En nuestro caso "n8n-server". | -| Name | Definimos el nombre que le vamos a dar al worker. En nuestro caso "n8n-worker". | -| **Command** | Aquí establecemos el comando para ejecutar el worker n8n: ```worker```| - -Con estos campos completados haremos clic en el botón "Next" en la parte inferior derecha y luego "Submit" ya que no necesitamos editar nada más: - - create-worker-reference - -Con esto veremos nuestro worker n8n desplegado. - -## Crear dependencias (redis y postgresql) - - -Las dependencias son recursos necesarios para que tu aplicacion funcione, en el caso de n8n en modo queue, necesita una base de datos y un redis. -Sleakops se nutre de los servicios que ofrece AWS para ofrecerte alternativas. Puedes ver mas informacion en [documentación de dependencias](/docs/project/dependency) - -Vamos a la sección de dependencias: - - click-hook-reference - - -### Crear Dependencia Redis - - -Primero, necesitamos crear Redis para la cola de tareas. En la pantalla de creación de dependencias, seleccionamos Redis y tendremos los siguientes campos: - -| **Configuración** | **Descripción** | -| --- | --- | -| **Dependency Type** | Seleccionar "Redis" de las opciones disponibles. | -| **Project** | Seleccionar el proyecto creado previamente. En nuestro caso "n8n-server". | -| **Name** | Definimos el nombre para Redis. En nuestro caso "n8n-redis". | - - - click-hook-reference - - -Con estos campos completados haremos clic en el botón "Next" en la parte inferior derecha y en el ultimo paso, antes de hacer "Submit", vamos a cambiar los nombres de variables de entorno a como los espera n8n - - -Necesitamos configurar las variables de conexión Redis para que coincidan con lo que n8n espera: - -| **Variable** | **Valor** | -| --- | --- | -| QUEUE_BULL_REDIS_HOST | (Host de Redis de la dependencia) | -| QUEUE_BULL_REDIS_PORT | 6379 | - - - click-create-s3-dependencies-2-reference - - -Con esto le decimos a Sleakops con que nombre queremos que publique las variables generadas por la dependencia "Redis" - -Asegúrate de que los nombres de las variables coincidan con lo que espera tu configuración n8n. - - -### Crear Base de Datos PostgreSQL - -Ahora procedemos a crear la base de datos PostgreSQL para almacenamiento de datos n8n: - - click-create-collectstatic-hook-reference - - -Puedes variar entre "produccion" y "no produccion" esto te da valores de configuracion por defecto en el siguiente paso para cada entorno. Por ejemplo: para el entorno de produccion te deja activo el multi A-Z, backups automaticos etc. -A modo de ejemplo en esta guia vamos a dejarlo en "no produccion" - -Lo mismo que para redis,necesitamos configurar los nombres de las variables de entorno como lo espera n8n. Vamos hasta el ultimo paso y antes de apretar submit, cambiamos los nombres por los siguientes: - -| **Antes** | **Después** | -| --- | --- | -| *_POSTGRESQL_NAME | DB_POSTGRESDB_DATABASE | -| *_POSTGRESQL_USERNAME | DB_POSTGRESDB_USER | -| *_POSTGRESQL_PASSWORD | DB_POSTGRESDB_PASSWORD | -| *_POSTGRESQL_ADDRESS | DB_POSTGRESDB_HOST | -| *_POSTGRESQL_PORT | DB_POSTGRESDB_PORT | - -Debería verse algo como la imagen a continuación. Luego haz clic en el botón "Submit" y tu base de datos debería crearse: - - create-postgresql-3-reference - - - - -## Configurar Variables de Entorno n8n - -Ahora necesitamos crear las variables de entorno que quedaron pendientes, podemos ver en el repositorio de codigo las variables que tenemos en .env.example. -Hay variables que ya fuimos configurando en cada dependencia, pero otras quedan por definir. Para esto vamos a la seccion de "Variablegroups" - - click-create-rabbitmq-dependencies-reference - - -Vamos a crear un nuevo grupo de variables, ponemos en modo texto para copiar del .env.example las variables que faltan y ajustamos los valores acordes a nuestro caso. - -En este formulario tenemos los siguientes campos: -- Project: seleccionamos el proyecto que creamos previamente. -- Workload: Seleccionamos "global" que hace referencia a ser usado por todas nuestras cargas de trabajo. -- Name: Definimos un nombre para este grupo de variables. -- Type: Si queremos cargarlo por archivo o por variable. -- Vars: Aquí habilitamos el modo texto y copiamos las siguientes variables de entorno: - - -| **Variable** | **Descripción** | -| --- | --- | -| **DB_TYPE** | Establecer a "postgresdb" | -| **EXECUTIONS_MODE** | Establecer a "queue" para modo worker | -| **N8N_ENCRYPTION_KEY** | Generar una clave de encriptación segura | -| **OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS** | Establecer a "true" | -| **N8N_HOST** | define el host que configuraste en tu webservice, para este ejemplo seria `n8n.demo.sleakops.com` | -| **N8N_WEBHOOK_URL** | Esta variable no es estrictamente necesaria para definirla, en caso de agregar una instancia de webservice aparte para atender los webhooks con otra url hay que especificar cual es la url que atienda los webooks.`https://n8n.demo.sleakops.com/` | -| **N8N_EDITOR_BASE_URL** | `https://n8n.demo.sleakops.com` | - - -Si quieres ver todas las variables de entorno disponibles para configurar n8n puedes entrear a la siguiente pagina de [documentación n8n](https://docs.n8n.io/hosting/configuration/environment-variables/) - - - create-rabbitmq-2-reference - - - - -## Despliegues - -Como último paso vamos a ver nuestro proyecto desplegado, para esto vamos a la sección "Deployments" del panel izquierdo: - - click-deployments-reference - - -Aquí vamos a ver todos los despliegues que hacemos. En nuestro caso es el primero y podemos ver que se ha creado correctamente, en caso de que veas algún error si haces clic en "error" puedes ver una descripción del mismo. -Si no vemos ningún error entonces significa que el proyecto ya está desplegado, podríamos comenzar a usarlo desde la url que nos proporcionó el servicio web. - -Esto concluye nuestro proceso de despliegue del proyecto. Te dejamos un paso opcional que es configurar el ci con github. - -## Configuración de CI/CD (Opcional pero Recomendado) - - -### ¿Por qué configurar CI/CD? -Sin CI/CD, cada cambio en tu código requiere: -1. Build manual desde SleakOps -2. Deploy manual -3. Verificación manual - -Con CI/CD configurado: -- ✅ Push a `main` → Deploy automático -- ✅ Rollback automático en caso de error -- ✅ Notificaciones de estado de deploy - -### Pasos para configurar: -1. Ve a tu proyecto en SleakOps -2. Haz clic en el ⚙️ (configuración) -3. Selecciona "Git pipelines" -4. Copia el YAML proporcionado -5. Añade `SLEAKOPS_KEY` a los secrets de GitHub - - - - click-settings-project-reference - - - - click-git-pipelines-reference - - - -Esto necesita tener una variable de entorno SLEAKOPS_KEY, si no la tienes tienes que ir al enlace que aparece ahí **Settings -> CLI**, obtenerla y guardarla como una variable de entorno. - -Con esto configurado y desplegado cada vez que hagas un push a tu rama "main" se lanzará automáticamente una nueva versión de tu aplicación. - - -## 🎯 Próximos pasos - -Una vez completada la instalación: - -### Configuración inicial de n8n -1. **Primer acceso**: Usa la URL de tu webservice -2. **Crear usuario administrador**: n8n te pedirá crear el primer usuario -3. **Configurar webhooks**: Si los necesitas, configura las URLs públicas - -### Monitoreo y optimización -1. **Revisar métricas**: Usa el dashboard de Grafana integrado -2. **Ajustar recursos**: Modifica CPU/memoria según uso real -3. **Configurar alertas**: Define umbrales de rendimiento - -### Backup y seguridad -1. **Backups automáticos**: Configura respaldos de PostgreSQL -2. **Secrets management**: Revisa el manejo de credenciales -3. **Actualizaciones**: Planifica actualizaciones regulares - - -## Actualizar y extender n8n - -Ya tenemos nuestro propio n8n instalado y corriendo en el cluster. Tenemos la definicion de nuestro n8n en un Dockerfile. - -#### Para actualizar la version - -Este proceso es muy simple, vamos a modificar el Dockerfile y cambiamos el tag de la imagen . Podemos ver las imagenes disponibles en el repositorio [oficial de n8n en dockerhub](https://hub.docker.com/r/n8nio/n8n/tags) - -Para tener en cuenta, leer el changelog por si hay algun breakingchanges o algo que rompa entre versiones. Hacer backups de la base de datos previamente por las dudas - -#### Para agregar nuevas dependencias dentro de tus nodos - -Como hicimos para actualizar la version en este caso vamos a aprovecharnos de la facilidad de tener nuestro Dockerfile y podemos instalar lo que querramos aca adentro, esto quedara disponible para usarlo en nuestros nodos de n8n - -Puedes ver ejemplos de esto en el README del repositorio. - - -## Mejores Prácticas de Escalado (Bonus) - -Una vez que tu despliegue n8n esté funcionando, considera estas estrategias de escalado: - -### 🎯 **Optimización de Workers** -- **Monitoreo de colas**: Monitorea la profundidad de cola de Redis para determinar cuándo escalar workers -- **Asignación de recursos**: Asigna suficiente CPU y memoria basándote en la complejidad del flujo de trabajo -- **Ajuste de concurrencia**: Ajusta la concurrencia del worker basándote en tipos de flujo de trabajo (intensivos en CPU vs I/O) -- **Workers dedicados**: Crea pools de workers especializados para diferentes categorías de flujos de trabajo - -### 📈 **Monitoreo de Rendimiento** - -Ajusta la memoria y cpu de tus workloads a lo que realmennte necesitan tus procesos. -Esto es util para no tener infraestructura sobredimencionada y ademas para tomar decisiones a la hora de escalar horizontalmente en base a memoria o cpu - -#### ¿Como lo hacemos desde Sleakops? - -Simple, vamos al detalle de tu worker o webservices que creamos anteriormente y tocamos en el icono de "grafana" . -Esto nos abrira un dashboard dentro de grafana con el consumo historico de tu proceso, asegurate de mirar un rango largo de tiempo para cubrir todos tus casos - - - click-deployments-reference - - -### 🔧 **Optimización de Base de Datos** -- **Pooling de conexiones**: Configura pools de conexión PostgreSQL para alta concurrencia. -- **Réplicas de lectura**: Usa réplicas de lectura para consultas de reportes y análisis. (Esto podes hacerlo desde sleakops desde la configuracion de [Postgres](/docs/project/dependency/postgresql-aws)) -- **Indexación**: Optimiza índices de base de datos para consultas de ejecución de flujos de trabajo -- **Estrategias de respaldo**: Implementa respaldos automatizados con recuperación point-in-time. (Esto podes hacerlo desde sleakops desde la configuracion de [Postgres](/docs/project/dependency/postgresql-aws)) - -### 🚀 **Configuraciones Avanzadas** -- **Afinidad de nodos**: Programa workers en tipos de nodos apropiados (CPU vs optimizados para memoria). (Esto podes hacerlo desde sleakops usando [Nodepools](/docs/cluster/nodepools)) -- **Presupuestos de disrupción de pods**: Asegura disponibilidad mínima durante mantenimiento del clúster. (Esto ya lo cubre sleakops) -- **Cuotas de recursos**: Establece límites apropiados para prevenir agotamiento de recursos. (Esto podes hacerlo desde sleakops definiendo limites en tus Workloads y en tus Nodepools) -- **Políticas de red**: Asegura comunicación inter-pod. (Esto ya lo hace sleakops) \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx b/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx deleted file mode 100644 index 177aa78bd..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -sidebar_position: 13 ---- -import { FiExternalLink } from "react-icons/fi"; - -# Modelo de Responsabilidad Compartida -Utilizamos de manera transparente todos los servicios de AWS, lo que implica que la responsabilidad se extiende a las pautas establecidas por AWS. - -Para proteger tus datos y asegurarte de que no se pierdan debido a posibles interrupciones en los servicios, es recomendable contar con políticas de respaldo. Actualmente, no ofrecemos soporte para respaldos de nuestras dependencias (RDS, S3, RabbitMQ, etc.). Para configurarlos, puedes acceder a través de tu cliente de AWS y definir tus políticas de respaldo. - -[Obtén más información sobre el Modelo de Responsabilidad Compartida de AWS] -(https://aws.amazon.com/compliance/shared-responsibility-model/) \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/user/_category_.json b/i18n/es/docusaurus-plugin-content-docs/current/user/_category_.json deleted file mode 100644 index 11a3bb0e5..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/user/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "User", - "position": 7 -} diff --git a/i18n/es/docusaurus-plugin-content-docs/current/user/aws_console_authentication.mdx b/i18n/es/docusaurus-plugin-content-docs/current/user/aws_console_authentication.mdx deleted file mode 100644 index d3f4788ea..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/user/aws_console_authentication.mdx +++ /dev/null @@ -1,67 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Autenticación de la Consola de AWS - -:::tip [VIDEO] -Cómo acceder a cualquiera de tus Cuentas. - - -::: - -As described in the [Architecture Overview](/docs/provider/accounts). You'll have to enter the 'security' account, then, assume the role on the account you want. The easiest way to do this is by using the [Sleakops Dashboard](https://console.sleakops.com/): - -First, use the AWS Login button: - - USER-aws-login - - -This will open the AWS login form. The Account ID field should be automatically filled with the 'security' account ID. If this doesn't happen, it might be because another service is attempting to fill the fields. - - - USER-aws-security-login - - - -Once logged into the 'security' account, it will appear as shown in the following image: - - - USER-aws-console-initial - - - -Now, in the AWS console, you need to return to the SleakOps dashboard, select 'Get Access' and use the drawer, on it, select the account you want to log in to. - -USER-get-access -USER-account-switcher - - -This will prompt a new AWS tab to switch the role from your 'security' Account into the account you've selected, you'll leave the 'security account' and enter the selected one. - - - USER-switch-role - - -:::info -If you're in 'security' or another account you can directly use the account switchers, AWS understands that you are already inside the 'security' account. -::: - -For more information about this process, you can read its [AWS documentation ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html). diff --git a/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx b/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx deleted file mode 100644 index 97599a1a9..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -sidebar_position: 12 -title: Usuarios ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Usuarios - -La gestión de usuarios en SleakOps te permite controlar el acceso a tu infraestructura y características de la plataforma. - -## Creación de usuarios - -Sleakops tiene tres campos fundamentales de permisos de usuario: - -#### Viewer (Solo Lectura) - -- **Objetivo**: Proporcionar acceso de solo lectura para monitorear y revisar la infraestructura sin realizar cambios -- **Alcance**: - - Ver todos los proyectos, clusters y recursos - - Acceder a dashboards de monitoreo y logs - - Revisar historial de despliegues y configuraciones - - No puede crear, modificar o eliminar recursos -- **Política AWS IAM**: [ReadOnlyAccess ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) -- **Ejemplos**: - - Ingenieros DevOps que necesitan monitorear entornos de producción - - Auditores de seguridad revisando el cumplimiento de infraestructura - - Líderes de equipo que necesitan visibilidad del estado de los proyectos - -#### Editor (Usuario Avanzado) - -- **Objetivo**: Habilitar capacidades de gestión de infraestructura y despliegue manteniendo límites de seguridad -- **Alcance**: - - Crear y gestionar proyectos, clusters y cargas de trabajo - - Desplegar aplicaciones y gestionar recursos de infraestructura - - Configurar entornos, dependencias y redes - - No puede gestionar otros usuarios ni acceder a todas las cuentas por defecto -- **Política AWS IAM**: [PowerUserAccess ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/PowerUserAccess.html) -- **Ejemplos**: - - Desarrolladores senior desplegando aplicaciones - - Ingenieros DevOps gestionando infraestructura - - Miembros del equipo responsables de despliegues de proyectos específicos - -#### Admin (Administrador) - -- **Objetivo**: Proporcionar control completo de la plataforma incluyendo gestión de usuarios y acceso entre cuentas -- **Alcance**: - - Todas las capacidades de Editor más gestión de usuarios - - Crear, modificar y eliminar cuentas de usuario - - Asignar roles y permisos a otros usuarios - - Acceso a todas las cuentas AWS sin restricciones - - Gestión de configuración y configuraciones de la plataforma -- **Política AWS IAM**: [AdministratorAccess ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) -- **Ejemplos**: - - Administradores de plataforma - - Líderes de equipo gestionando múltiples proyectos - - Gerentes DevOps con responsabilidades entre equipos - -## Preguntas Frecuentes - -
- - -### ¿Cómo elimino un usuario? - - - -Solo los administradores pueden eliminar usuarios. Para eliminar un usuario, accede a la Lista de Usuarios, en la columna Acción, haz clic en el ícono de la papelera. Luego confirma la acción. - -SleakOps maneja automáticamente el proceso completo de eliminación en todos los sistemas (usuario IAM, usuario del servidor Pritunl VPN y usuario de la consola de SleakOps). No se requieren pasos manuales adicionales fuera de la consola de SleakOps. - -Los usuarios eliminados no se pueden recuperar. Sin embargo, eliminar un usuario nunca elimina los recursos creados por ese usuario. -
- -### Configuración de Acceso - - **AWS Account Access**: Este campo muestra todas las cuentas, aquí seleccionas a qué cuentas el usuario (Editor o Read-only) tendrá acceso. - **VPN Account Access**: Es similar al campo de accesos a cuentas de AWS, pero aquí defines si el usuario también será creado en el servidor VPN de la cuenta que le otorgues. Más información se puede consultar en la [documentación de VPN](/docs/user/vpn). - - - USER-creation-form - - -Para el acceso a las cuentas de AWS, SleakOps inicialmente establece una contraseña aleatoria y la envía al correo electrónico del usuario creado. El usuario puede iniciar sesión con esa contraseña, pero se le obligará a cambiarla en su primer inicio de sesión. Para el acceso a la plataforma SleakOps, utilizamos la contraseña configurada en el formulario de usuario. - -Después de la creación de este usuario, se creará un Usuario de AWS en la cuenta 'security', que es donde controlamos los accesos a todas las cuentas de AWS de SleakOps. También crearemos, dependiendo de la configuración, usuarios en los servidores VPN; consulta cómo usarlos en la correspondiente [documentación](/docs/user/vpn) y en la sección de usuarios de SleakOps. - -## Usuarios Sin Acceso a SleakOps - -Algunos usuarios en tu organización pueden no tener acceso directo a la plataforma SleakOps pero aún interactúan con la infraestructura: - -### Colaboradores Externos - -- **Escenario**: Contratistas o consultores externos que necesitan acceso temporal a recursos específicos de AWS -- **Método de Acceso**: Acceso directo a la consola de AWS con permisos IAM limitados -- **Gestión**: Manejado a través de AWS IAM directamente, no a través de la gestión de usuarios de SleakOps - -### Observadores de Solo Lectura - -- **Escenario**: Stakeholders que necesitan visibilidad de costos y uso de infraestructura sin acceso operacional -- **Método de Acceso**: AWS Cost Explorer, dashboards de CloudWatch o herramientas de reportes personalizadas -- **Gestión**: Solo permisos de facturación y monitoreo de AWS - -### Consumidores solo de VPN - -- **Escenario**: Usuarios que necesitan consumir cargas de trabajo y aplicaciones dentro de la VPN, pero no requieren capacidades de administración ni monitorización de la infraestructura. -- **Método de acceso**: Solo acceso a la VPN, con permisos limitados para acceder a aplicaciones y servicios específicos. -- **Gestión**: Cuentas de usuario de VPN con acceso restringido a cargas de trabajo y entornos designados. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/user/vpn.mdx b/i18n/es/docusaurus-plugin-content-docs/current/user/vpn.mdx deleted file mode 100644 index 0359570cb..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/user/vpn.mdx +++ /dev/null @@ -1,41 +0,0 @@ -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -# Conexión a la VPN - -Para manejar las conexiones VPN utilizamos Pritunl. Puedes descargar el cliente [aquí](https://client.pritunl.com/#install). - - - cliente-vpn-pritunl - - -Una vez que hayas creado un [Proveedor](/docs/provider), ve al [Panel de SleakOps](https://console.sleakops.com/) y selecciona la cuenta para la cual quieres obtener acceso VPN. Recuerda que para hacer esto, necesitas tener acceso a la VPN de esa cuenta, pero la VPN también debe estar creada. Creamos la VPN de una cuenta específica cuando se crea el primer clúster de esa cuenta. - - - vpn-obtener-acceso - - - - vpn-obtener-uri - - -Esto te mostrará lo que se denomina perfil URI. Tiene un período de validación de 24 horas, y debes cargarlo en el cliente Pritunl. - - - perfil-uri-vpn - - -Cópialo e impórtalo en el cliente Pritunl, y podrás conectarte: - - - importar-cliente-vpn - - - - importando-perfil-vpn - - - - conectar-perfil-vpn - \ No newline at end of file diff --git a/tutorials/config-aws-waf.mdx b/tutorials/config-aws-waf.mdx deleted file mode 100644 index 330370457..000000000 --- a/tutorials/config-aws-waf.mdx +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Configure AWS WAF -sidebar_label: Configure AWS WAF -sidebar_position: 3 -description: Learn how to configure AWS WAF to protect your Application Load Balancer from unwanted requests -tags: - - aws - - waf - - security - - alb - - firewall - - web-protection - - load-balancer -image: /img/tutorials/config-aws-waf/config-aws-waf.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -Learn how to configure AWS WAF (Web Application Firewall) to protect your Application Load Balancer (ALB) from unwanted requests, such as those from bots or malicious attacks. AWS WAF allows you to create custom rules to filter HTTP(S) traffic and only allow legitimate requests. - -## Prerequisites - -- An AWS account with access to WAF and Application Load Balancer -- An Application Load Balancer already configured in your AWS account -- Basic understanding of AWS console navigation - -## Estimated Cost - -The cost of AWS WAF depends on: - -1. The number of active rules -2. The number of requests processed by WAF - -### Cost Breakdown: - -| **Component** | **Cost** | -| -------------------- | ------------------------------ | -| **Cost per rule** | $1 USD/month per rule | -| **Cost per WebACL** | $5 USD/month per WebACL | -| **Cost per request** | $0.60 USD per million requests | - -### Example Cost Calculation: - -If you have 5 active rules and process 10 million requests per month, the cost would be: - -- WebACL: $5 USD -- Rules: $5 USD (5 rules × $1 USD) -- Requests: $6 USD (10 million × $0.60 USD) - -**Approximate total cost**: $16 USD/month - ---- - -## Step 1: Create a Web ACL - -1. Go to the AWS console and search for **WAF** -2. Click on **Create web ACL** -3. Enter the name of your Web ACL (for example, `waf-alb-prod`) -4. Choose the region where your ALB is located -5. Select **Regional** if your ALB is in a specific region (usually the case), or **CloudFront** if you're using a CloudFront distribution -6. In the **Associated AWS resources (optional)** section, select your **Application Load Balancer** so all traffic passes through WAF -7. Click **Next** - -## Step 2: Configure Basic Rules - -1. Click **Add rules and rule groups** -2. Select **AWS Managed Rules** and choose some of the following rules as examples: - -| **Rule** | **Description** | -| ----------------------------------------- | ------------------------------------------------------------------------------------------ | -| **AWSManagedRulesCommonRuleSet** | For basic protection against common web vulnerabilities | -| **AWSManagedRulesBotControl** | To block known bots and automated traffic | -| **AWSManagedRulesAnonymousIPList** | To block IP addresses associated with services that hide user identity (VPN, proxies, Tor) | -| **AWSManagedRulesAmazonIpReputationList** | To block traffic from IPs known for malicious behavior | -| **AWSManagedRulesSQLiRuleSet** | To protect against SQL injection attacks | - -These are just examples, as there are many other options depending on the nature of your application and the threats you want to mitigate. We recommend exploring all available options and selecting the rules that best fit your needs. - ---- - -## Verification - -1. Go back to the **WAF** service and select your Web ACL -2. Review the metrics and statistics to verify that the rules are blocking unwanted traffic -3. You can create custom rules if you notice suspicious traffic - ---- - -## Updating Rules - -If you need to add or modify rules: - -1. Go to the AWS WAF console -2. Select your Web ACL -3. Click **Rules** and **Add rule** or **Edit rule** -4. Save the changes and verify the traffic again - ---- - -## Conclusion - -AWS WAF is a powerful tool to protect your application against malicious or unwanted traffic. With this basic configuration, you can block common bots and ensure that only legitimate traffic reaches your ALB. - -If you have more questions or need additional support, don't hesitate to ask for help! diff --git a/tutorials/dashboard-loki-not-responding.mdx b/tutorials/dashboard-loki-not-responding.mdx deleted file mode 100644 index 9626bfa2a..000000000 --- a/tutorials/dashboard-loki-not-responding.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -sidebar_label: Loki's Dashboard is not responding -sidebar_position: 5 -title: "Loki's Dashboard is not responding" -description: "Loki's Dashboard is not responding" -tags: - - addons - - loki - - troubleshooting - - monitoring - - grafana - - logs -image: /img/tutorial-img.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -# Loki's Dashboard is not responding - -:::success QUICK SOLUTION -Remove the 'loki-read' pod. After 60 seconds, it will start working again, along with the Loki DataSource and its related dashboards. -::: - -:::info -This error is more common in clusters with low availability because they generate more node and pod turnover. You can reduce the frequency of this error by increasing the number of loki-read pods in the Loki add-on settings. -::: - -Loki may be running, as in the following image: - - - loki - - -- If, due to some Kubernetes rotation, the loki-backend pod is reset WITHOUT the loki-read pod being reset, it starts to fail, such as when I force it by restarting the loki-backend StatefulSet, which leads to the following situation: - - - loki-2 - - -It can be seen that the '_Age_' of loki-backend is less than the '_Age_' of loki-read. In these cases, this error occurs, causing the Loki DataSource to malfunction and, consequently, the dashboards that use it to stop working. The error arises because the 'loki-read' pods do not attempt to reconnect to 'loki-backend' and remain in this state where they do not respond to requests from 'loki-backend'. - -- It can be seen that the error was successfully forced, and now the dashboard is unresponsive: - - - loki-3 - - -- The way to fix it is by restarting the 'loki-read' Deployment or by removing the running Pod. - - - loki-4 - - -- Once that is done, we return to the desired situation, which is as follows: - - - loki-5 - - -As you can see, the _Age_ of loki-read is now less than the _Age_ of loki-backend, which confirms that loki-read is connected and the Dashboard is working correctly again, as shown in the following image: - - - loki-6 - - -The frequency of this error can be reduced by increasing the number of active 'loki-read' pods. This can be done in the Loki Addon settings. - - - loki-7 - diff --git a/tutorials/django-celery.mdx b/tutorials/django-celery.mdx deleted file mode 100644 index e45114532..000000000 --- a/tutorials/django-celery.mdx +++ /dev/null @@ -1,486 +0,0 @@ ---- -title: Django + Celery -sidebar_label: Django + Celery -sidebar_position: 10 -description: Learn how to deploy your Django + Celery project with distributed and scalable worker mode on Kubernetes using Sleakops -tags: - - django - - celery - - deploy - - python - - background-jobs - - kubernetes - - scaling -image: /img/tutorials/django-celery/django-celery.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Learn how to deploy your Django + Celery project using Sleakops. - -## Prerequisites - -- Account in Sleakops -- A Cluster in this account. If you don't have it, [here is the documentation on how to do it](/docs/cluster). -- An Environment configured. If you don't have it, [here is the documentation on how to do it](/docs/environment) -- Django project configured with celery (This project needs to have docker). - -## Let's Start - -For this example, we are going to use [this project ](https://github.com/sleakops/example-django-celery). It is a Django project with Celery that already has Docker configured to run. We are also going to configure a Postgresql database, S3 bucket and Rabbitmq needed for this project. - -### Create a project - -To start, we are going to create a new project. To do this, click the "Projects" button in the left panel: - - - click-project-reference - - -Inside the Projects panel you will be able to see all the projects you have and manage them from here. We want to create a new one so let's click on the “create” button at the top right: - - - click-create-project-reference - - -In the project creation screen we have the following fields: - -| **Setting** | **Description** | -| ---------------- | ---------------------------------------------------------------------------------------- | -| **Environment** | We have to select the previously created environment. | -| Nodepool | We will leave the default one. | -| **Repositories** | We will select our repository that we want to deploy. In our case example-django-celery. | -| Project Name | We can define a project name. For the example we will leave the default. | -| **Branch** | It has to coincide with the one we have in our project. In our case it is “Main”. | -| Dockerfile path | It is the relative path to the dockerfile in your project. | - -Once configured all that we create the project with the “Submit” button at the bottom right: - - - create-project-reference - - -With that, the project begins to be created. In the meantime we go to the workloads with the “Workloads” button in the left panel: - - - click-workloads-reference - - -### Create a Web Service - -Here what we are going to do is to create a web service so we go to the web service section and create one: - - - click-create-web-service-reference - - -In this page we are going to complete the first form with the following fields: - -| **Setting** | **Description** | -| ----------- | ---------------------------------------------------------------------------------------- | -| **Project** | We select the project we created previously, in our case “example-django-celery”. | -| Name | We define a name for the web service. | -| **Command** | By default this will take the value that is in the dockerfile, in our case this is fine. | -| Port | The same as the command. | - -Then we continue by clicking on the “Next” button up to step 3: - - - create-web-service-reference - -In step 3 we have to edit the path field and put the endpoint of healthcheck -which in our case is “/healthcheck/”. Then click on the “Next” button until the -web service is created: - - create-web-service-2-reference - - -### Deploy celery worker - -Well, with this we can see our web service deploying. Now we are going to deploy the celery. For this we have to go to the workers section inside the same workloads screen: - - - click-worker-reference - - -And click on the “Create” button to create a new one: - - - click-create-worker-reference - - -In the workers creation screen we will have to complete the following fields: - -| **Setting** | **Description** | -| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Project** | Select the previously created project. In our case “example-django-celery”. | -| Name | We define the name that we are going to give to the worker. In our case “celery”. | -| **Command** | Here we set the command to run celery, in our case it is: `bash celery -A core.celery_app worker -l INFO --concurrency 1 --max-tasks-per-child 1 --prefetch-multiplier 1 -n celery@%h --queues default,build,deployment,cluster,canvas,billing` | - -With these fields filled in we will click on the “Next” button at the bottom right and then “Submit” as we do not need to edit anything else: - - - create-worker-reference - - -With this we will see our celery published. Now we have to configure the hooks. For this we go to the hooks section: - - - click-hook-reference - - -### Create a migration hook - -In the hook creation screen we will have the following fields: - -| **Setting** | **Description** | -| ----------- | ----------------------------------------------------------------------------------------------------- | -| **Project** | Select the previously created project. In our case “example-django-celery”. | -| **Name** | We define the name that we are going to give to the worker. In our case “migrations”. | -| **Command** | Here we set the command to run celery, in our case it is: `bash python manage.py migrate --no-input ` | - -With these fields filled in we will click on the “Next” button at the bottom right and then “Submit” as we do not need to edit anything else: - - - create-hook-reference - - -### Create a collect static hook - -Now we proceed to create another hook that we need for the statics: - -{" "} - - - click-create-collectstatic-hook-reference - - -In this form we are going to do the same as the previous one but modifying the command. We click next until we create the hook (without modifying anything else): - - - create-collectstatic-hook-reference - -The command we use is as follows: - -```plain -bash python manage.py collectstatic --no-input -``` - -### Create a Postgresql Database - -Once we have created the hooks we have to go to create our database. To do this we go to the “Dependencies” section: - - - click-dependencies-reference - - -Inside this section we click on the “Create” button at the top right and then select “Postgresql”: - - - click-create-dependencies-reference - - - click-postgresql-reference - - -In the 1st postgresql creation form we will have to select our previously created project and define a name for it, then click on the “Next” button at the bottom right: - - - create-postgresql-reference - - -In the 2nd form we are going to have a lot of fields, the only ones that matter to us are the following: - -| **Setting** | **Description** | -| ---------------------------- | ------------------------------------------------ | -| **Database Master Username** | Here we assign a root user name to our database. | -| **Database Master Password** | A password for this root user. | - -With these fields filled in, we are ready to move on. Click on the “Next” button at the bottom right to proceed to the third form: - - - create-postgresql-2-reference - - -In this last form, we are going to adjust the environment variables we have in our project with respect to the database. To do this, we need to change the following variables to our own: - -| **Before** | **After** | -| ----------------------- | ----------- | -| \*\_POSTGRESQL_NAME | DB_NAME | -| \*\_POSTGRESQL_USERNAME | DB_USER | -| \*\_POSTGRESQL_PASSWORD | DB_PASSWORD | -| \*\_POSTGRESQL_ADDRESS | DB_HOST | -| \*\_POSTGRESQL_PORT | DB_PORT | - -It should look something like the image below. Then click on the “Submit” button and your database should be created: - - - create-postgresql-3-reference - - -### Create S3 Bucket - -In the same page of dependencies we have to create our s3 bucket, for it we are going to go to the “Create” button again: - - - click-create-s3-dependencies-reference - - -And select S3 Bucket: - - - click-create-s3-dependencies-2-reference - - -In the first form we have to select our previously created project and define a name for the bucket, we have to take into account that the name of the bucket is global so it has to be unique. Now click on the “Next” button and go to step 3: - - - create-s3-dependencies-reference - - -Here we are going to see some environment variables defined for the bucket. We are going to edit the one that says **COLLECTSTATICEXAMPLEDJANGOCELERY_BUCKET_NAME** and we are going to call it **DJANGO_AWS_STORAGE_BUCKET_NAME**. With this simple change we click on the “Submit” button at the bottom right to finish creating the bucket: - - - create-s3-dependencies-3-reference - - -### Create Rabbitmq - -Now we need one more dependency. Our Rabbitmq to queue celery tasks, so let's get to it: - - - click-create-rabbitmq-dependencies-reference - - -And select Rabbitmq: - - - click-select-rabbitmq-reference - -In the first form we will have to select our project and define a name for it. -Then click on the “Next” button at the bottom right: - - create-rabbitmq-reference - -In the following form we have several fields but the only ones that matter to us -for this example are the username and password, we can define whatever we want. -For this example I chose admin as username and for the password I generated it -randomly with the dice button. Then we click on the “Next” button to go to the -next form: - - create-rabbitmq-2-reference - - -In this last form we have to change the name of the variable that ends in \*\_BROKER_AUTH_URL to CELERY_BROKER_URL (as shown in the image). Then we click on the “Submit” button at the bottom right to finish creating rabbitmq: - - - create-rabbitmq-3-reference - - -### Create your environment variables - -Once the dependencies are deployed we have to configure our environment variables. We are going to go to the **Vargroups** section: - - - click-vargroups-reference - - -Here you will see all your environment variables that you created grouped in groups, for example you should have created one with the data for the database (which is the one you see in the image). Now we are going to create another one for our django environment variables, for this we click on the “Create” button at the top right: - - - click-create-vargroups-reference - - -In this form we have the following fields: - -- Project: we select the project we created previously. -- Workload: We select “global” that makes reference to be used by all our workloads. -- Name: We define a name for this group of variables. -- Type: If we want to load it by file or by variable. -- Vars: Here we enable the textmode and copy the following environment variables: - -```bash -CELERY_RESULT_BACKEND=django-db -DJANGO_ADMIN_URL=admin/ -DJANGO_DEBUG=False -DJANGO_SECRET_KEY=secret_key -DJANGO_SETTINGS_MODULE=core.settings.production -DJANGO_STATIC_STORAGE=storages.backends.s3boto3.S3StaticStorage -DB_ENGINE=django.db.backends.postgresql_psycopg2 -ENVIRONMENT=production -LOGS_LEVEL=INFO -PYTHONPATH=. -``` - -These environment variables are required for our example project. Finally click on the “Submit” button at the bottom right to create the variable group. - - - create-vargroup-reference - - -### Deployments - -As last step we are going to see our project deployed, for this we go to the “Deployments” section of the left panel: - - - click-deployments-reference - - -Here we are going to see all the deploys that we do. In our case it is the first one and we can see that it has been created correctly, in case you see any error if you click on “error” you can see a description of it. -If we do not see any error then it means that the project is already deployed, we could begin to use it from the url that the web service provided us. - - - deployments-reference - -This concludes our project deployment process. We leave you an optional step -which is to configure the ci with github. - -## Optional - -### CI with Github - -Every time you make a change in your code and want to deploy it you will have to do a build and a deploy, this eventually becomes tedious. That's why to avoid this we have to implement ci on github. - -For this we are going to go to “Projects” in the left panel: - - - click-project-2-reference - - -Let's locate our project and click on the gear to access the project configuration: - - - click-settings-project-reference - - -In the project configuration we locate the one that says “Git pipelines” and click on it: - - - click-git-pipelines-reference - - -Here we are going to find what we need to do this. Basically we need to set up a file in the root of our project .github/workflows/ called ci_sleakops_demo.yml and in that file we are going to paste the content that appears in this page. - - - git-pipelines-reference - - -This needs to have an environment variable SLEAKOPS_KEY, if you don't have it you have to go to the link that appears there **Settings -> CLI**, get it and save it as an environment variable. - -With this configured and deployed every time you do a push to your “main” branch a new version of your application will be launched automatically. diff --git a/tutorials/install-keda.mdx b/tutorials/install-keda.mdx deleted file mode 100644 index 91178ec9e..000000000 --- a/tutorials/install-keda.mdx +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Install KEDA -sidebar_label: Install KEDA -sidebar_position: 6 -description: "Tutorial: how to install KEDA" -tags: - - tutorial - - install - - keda - - autoscaling - - kubernetes - - event-driven - - scaling -image: /img/tutorials/install-keda/install-keda.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Learn how to install KEDA (Kubernetes Event-Driven Autoscaling) on your cluster using different methods. KEDA allows you to automatically scale your applications based on events and custom metrics. - -## Installation Methods - -### Using Lens Interface (option 1) - -1. In the Lens menu or the Kubernetes IDE you use, go to **Helm > Charts**. -2. In the search box, type **keda**. The official Bitnami chart should appear: - -- `bitnami/keda` - -3. Select the version you want (for example, the most recent available). -4. Click on **Install** and in the next window review the values (YAML) for installation if you want to customize something (by default, it is usually sufficient). -5. Confirm the installation by pressing **Install** again. - -### Using Helm via Terminal (option 2) - -If you prefer the command line or do not have the Helm section in Lens, you can install it like this: - -```bash -helm repo add bitnami https://charts.bitnami.com/bitnami -helm repo update - -# Create a namespace (optional) -kubectl create namespace keda - -# Install KEDA -helm install keda bitnami/keda --namespace keda -``` - -## Installation Verification - -After installation, you should see that the KEDA resources have been created: - -### In Lens - -- Select the namespace where you installed KEDA (by default, `keda` if you created it manually). -- You will see a **Deployment** called `keda-operator`, one or more **Pods**, and other CRD (Custom Resource Definitions) type resources such as `ScaledObjects` and `TriggerAuthentications`. - -### Via Terminal (optional) - -```bash -kubectl get all -n keda -``` - -You should see the operator running, for example: - -```plain -NAME READY STATUS RESTARTS AGE -pod/keda-operator-xxxxx-xxxxx 1/1 Running 0 1m -``` - -If everything is in order, you can now use KEDA for your first autoscaling based on events or custom metrics. - -## Define ScaledObject in KEDA - -Now we will create a `ScaledObject`. This resource is what tells KEDA how and when to scale the deployment. In this example, we will use a **CPU** trigger, although KEDA handles it internally via `HorizontalPodAutoscaler` (HPA), but the logic integrates with the KEDA CRD. - -You can review all possible triggers that KEDA offers in the official documentation [here](https://keda.sh/docs/2.16/scalers/). - -### Creating the ScaledObject - -To create this object we will use the extend-charts function in Sleakops. To get there from the project list in Sleakops, go to **Settings > Chart Configuration**. - - - keda - - - - keda-2 - - -Once you are on the Chart Configuration screen, you can add your `ScaledObjects`. - -To complete the ScaledObject values, you will need some values such as the namespace and the deployment object name (generated by Sleakops) in the cluster. - -- For the namespace, you could use the following annotation, as in the following example: `{{ .Values.global.namespace }}` to extract it from the values that Sleakops already generates -- For the deployment name, we do not currently provide it. To get it, you can enter Lens or your Kubernetes IDE and go to the **Workloads > Deployments** section - -```yaml -apiVersion: keda.sh/v1alpha1 -kind: ScaledObject -metadata: - name: http-echo-scaledobject - namespace: { { .Values.global.namespace } } -spec: - scaleTargetRef: - # Must match the Deployment name - name: http-echo-deployment - # minReplicaCount and maxReplicaCount determine scaling limits - minReplicaCount: 1 - maxReplicaCount: 5 - - # Trigger that defines the scaling condition (in this case CPU) - triggers: - - type: cpu - metadata: - type: Utilization # or AverageValue - value: "50" # scales above 50% CPU -``` diff --git a/tutorials/make-rds-public.mdx b/tutorials/make-rds-public.mdx deleted file mode 100644 index e12797aa1..000000000 --- a/tutorials/make-rds-public.mdx +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Make RDS Database Public -sidebar_label: Make RDS Database Public -sidebar_position: 4 -description: Learn how to make an RDS database publicly accessible using a workaround method -tags: - - rds - - database - - aws - - security - - networking - - vpc - - postgresql -image: /img/tutorials/make-rds-public/make-rds-public.png ---- -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; - -:::warning -**Try to avoid this method as it exposes your data source.** -::: - -## Introduction and Current Case - -Currently, all databases deployed with SleakOps have the same access configuration: - -- Publicly Accessible ❌ -- Allocated in a SubnetGroup composed of "Persistence" subnets created in the SleakOps VPC. - -Under this configuration, there is no direct way to make the database publicly accessible, so a small workaround must be performed. - -**Why can't a database be made public directly?** - -- A SubnetGroup of RDS cannot be edited. -- AWS does not allow editing the SubnetGroup associated with an RDS without a VPC change. Therefore, it forces us to do it using an external VPC. - ---- - -## Solution with Workaround - -### Prerequisites: - -1. Approximately 30 minutes. -2. Have the default VPC created with Subnets where the DB will be located. If you don't have it, you'll need to create a new one from scratch on your own, as well as subnets within it that will be used for this change. Let's call it "transitory". -3. Create the SubnetGroup that uses Subnets from the transitory VPC. It doesn't matter which subnets it uses. It is used to migrate to the other VPC. - - In my case, I created the following. Note that both the VPC and the Subnets are from the Default VPC. - - - rds-db-public-1 - - -4. Create the SubnetGroup that uses the Public Subnets from the VPC deployed by SleakOps. This is the one the DB will use at the end of the flow. - - - rds-db-public-2 - - -5. Create a SecurityGroup that allows public access, or edit the existing one. In both cases, it must belong to the VPC where the Database is located. - - In my case, I created the following. - - - rds-db-public-3 - - -### Step by Step: - -With the prerequisites completed, only perform the modifications to the configurations. - -1. Change the SubnetGroup to the one corresponding to the Transitory VPC and remove the current SG. - - - rds-db-public-4 - - -2. Click next and review the changes. Make sure to select **'Apply Immediately'**. - - - rds-db-public-5 - - - Once this is done, you must wait for the change to be applied before continuing with the following steps where we return to the initial VPC, which is the one created by SleakOps. - -3. After the VPC change is completed. Change the SubnetGroup to the public one that was created, which is composed of the Public Subnets from the SleakOps VPC. Again, remove the default SG that is automatically linked. - - - rds-db-public-6 - - -4. Make the DB **`Publicly Accessible`**. - - - rds-db-public-7 - - -5. Review the changes. They should be as follows. Click next and **Apply Immediately**. - - - rds-db-public-8 - - - Wait again for the change to complete for the last step: - -6. Add the SecurityGroup created in the prerequisites. - - - rds-db-public-9 - - -7. Review the change. Click next and **Apply Immediately** again. - - - rds-db-public-10 - - ---- - -## Conclusion - -With this, our DB is completely public for all requests on the port used by the DB. For PostgreSQL, this is port **5432**. diff --git a/tutorials/n8n-worker.mdx b/tutorials/n8n-worker.mdx deleted file mode 100644 index 5064a7630..000000000 --- a/tutorials/n8n-worker.mdx +++ /dev/null @@ -1,499 +0,0 @@ ---- -title: n8n + Worker Mode -sidebar_label: n8n + Worker Mode -sidebar_position: 2 -description: Learn how to deploy your n8n project with distributed and scalable worker mode on Kubernetes using Sleakops -tags: - - n8n - - kubernetes - - worker - - scaling - - automation - - background-jobs - - deployment -image: /img/tutorials/n8n-worker/n8n-worker.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Learn how to deploy your n8n project with distributed and scalable worker mode on Kubernetes using Sleakops. - -## Why Self-Hosted n8n? - -Self-hosting n8n provides numerous advantages over cloud-hosted solutions: - -### 🔒 **Security and Privacy** - -- **Complete Data Control**: Your workflows, credentials, and sensitive data never leave your infrastructure. -- **Customized Security Policies**: Implement your organization's specific security requirements. -- **Network Isolation**: Keep n8n within your private network, reducing external attack vectors. -- **Compliance**: Meet strict regulatory requirements (GDPR, HIPAA, SOC2) with on-premises deployment. - -### 💰 **Cost Optimization** - -- **No limits per run**: Run unlimited workflows without usage-based pricing -- **Predictable costs**: Fixed infrastructure costs regardless of usage volume -- **Resource efficiency**: Scale resources based on actual needs, not vendor pricing tiers -- **Long-term savings**: Significant cost reductions for high-volume automation scenarios - -### ⚡ **Performance and Scalability** - -- **Custom Resource Allocation**: Allocate CPU and memory based on your specific workload requirements -- **Low Latency**: Direct access to internal systems without internet roundtrips -- **High Availability**: Design redundant systems with multiple replicas and failover mechanisms -- **Custom Integrations**: Connect to internal APIs and systems not accessible from cloud providers - -### 🎛️ **Total Control and Customization** - -- **Version Control**: Choose when to update and test new versions in your environment -- **Custom Nodes**: Install and develop proprietary nodes for your specific use cases -- **Environment Variables**: Full access to system-level configurations and secret management -- **Backup Strategies**: Implement your own backup and disaster recovery procedures - -## Benefits of Scaling in Kubernetes - -Deploying n8n on a Kubernetes cluster with Sleakops provides enterprise-level scalability: - -### 🚀 **Horizontal Scaling** - -- **Worker Pods**: Automatically scale worker instances based on queue depth and CPU usage -- **Load Distribution**: Distribute workflow execution across multiple worker nodes -- **Auto-Scaling**: Kubernetes HPA (Horizontal Pod Autoscaler) automatically adjusts worker count -- **Resource Optimization**: Scale different components independently (web UI vs. workers) - -### 🏗️ **Infrastructure Resilience** - -- **High Availability**: Multiple replicas ensure zero downtime during node failures -- **Continuous Upgrades**: Deploy new versions without service interruption -- **Health Checks**: Kubernetes automatically restarts failed pods and routes traffic to healthy instances -- **Multi-Zone Deployment**: Distribute workload across availability zones for disaster recovery - -### 📊 **Monitoring and Observability** - -- **Real-time metrics**: Monitor workflow execution, queue depth, and resource usage -- **Centralized logging**: Aggregate logs from all n8n components in one place -- **Performance insights**: Track execution times, error rates, and throughput -- **Alerts**: Proactive notifications for system issues and performance bottlenecks - -### 🔧 **DevOps Integration** - -- **GitOps Workflows**: Version control of your n8n infrastructure as code -- **CI/CD Pipelines**: Automated testing and deployment of n8n configurations -- **Secret Management**: Integrates with Kubernetes secrets and external secret managers -- **Network Policies**: Fine-grained network security controls - -## Prerequisite - -- A Sleakops account -- A cluster in this account. If you don't have one, [here's the documentation on how to create one](/docs/cluster). -- A configured environment. If you don't have one, [here's the documentation on how to create one](/docs/environment). -- An n8n project configured with Docker. If you don't have it, you can fork or copy [n8n-code](https://github.com/sleakops/n8n_sleakops). This project includes a Docker Compose package so you can also deploy it locally, allowing you to have distributed environments as you wish. - -# Let's begin - -For this example, we'll deploy an n8n project in distributed mode with worker processes. This configuration includes the main n8n service (web interface) and worker processes to execute workflows. We'll also configure a PostgreSQL database and Redis for queue management, which are necessary for this project. - -## Create Project - -Projects are our code repositories. All Sleakops needs to run commands is a Dockerfile. - -For more information, see our project documentation. - -To begin, we will create a new project: - -1. Click the "Projects" button in the left panel. -2. Then click "Create" in the upper right corner. - - - click-project-reference - - -Within the Projects panel, you can see all your projects and manage them from here. We want to create a new one, so let's click the "create" button in the upper right corner. - -On the project creation screen, we have the following fields: - -| Configuration | Description | -| --- | --- | -| Environment | We need to select the previously created environment. | -| Nodepool | We'll leave the default. | -| Repositories | We'll select our repository that contains the n8n project. | -| Project Name | We can define a project name. For example, "n8n-server". | -| Branch | It must match the branch in our project. In our case, it's "main". | -| Dockerfile path | This is the relative path to the Dockerfile in your project. | - -Once all that is configured, we create the project using the "Submit" button in the bottom right corner: - - - create-project-reference - - -With that, the project begins to be created. In the meantime, let's go to the workloads using the "Workloads" button in the left panel: - - - click-workloads-reference - - -## Create Workloads - -Workloads are the processes that your project runs. In the case of n8n, which we'll run in queue mode, we'll create a web service for the web interface and a worker. -For more information, see our [workloads documentation](/docs/project/workload) - -### Create the Web Service - -Here we will create the main n8n web service that will handle the user interface and API: - -On this page, we will complete the first form with the following fields: - -| Configuration | Description | -| --- | --- | -| Project | Select the project we created previously, in our case "n8n-server". | -| Name | Define a name for the web service, for example "n8n-main". | -| Command | Default command from the Dockerfile (usually n8n start). | -| Port | Port 5678 (n8n's default port). | - - - click-create-web-service-reference - - -In the second step, we'll configure the web service as **private**: - -**What does this mean?** - -- The n8n service will be inside the VPC -- It will only be accessible from services on the same network -- It requires a VPN for external access - -**Alternative for public webhooks:** -If you need to connect to public webhooks (Jira, Slack, Google Drive, etc.), you can: - -- Leave this service as public, OR -- Create an additional public web service using the `webhook` command - - - click-create-web-service-reference - - -Continue to step 3, "Service settings," and configure the health check. - -To do this, simply define the path for the health check, which comes with n8n `/healthz`, and click "Next" until the flow is complete and the web service is created. - - - click-create-web-service-reference - - -This health check is important so Kubernetes knows when the service is ready to start delivering HTTP traffic. This is useful for avoiding downtime between deployments or node rotations. - -We won't modify the last step of the form, where we define memory, CPU, and scaling conditions, for now; we'll leave it as the platform provides. - -### Creating the n8n Worker - -Great, with this we can see our web service being deployed. Now let's deploy the n8n worker for distributed execution. To do this, we need to go to the Workers section within the same Workloads screen and click the "Create" button. - - - click-worker-reference - - -On the worker creation screen, we will need to complete the following fields: - -| Configuration | Description | -| --- | --- | -| Project | Select the previously created project. In our case, "n8n-server". | -| Name | Define the name we will give to the worker. In our case, "n8n-worker". | -| Command | Here we set the command to run the n8n worker: `worker` | - -With these fields completed, we will click the "Next" button in the lower right corner and then "Submit," as we do not need to edit anything else. - - - create-worker-reference - - -This will show our n8n worker deployed. - -## Create dependencies (Redis and PostgreSQL) - -Dependencies are resources necessary for your application to function. In the case of n8n in queue mode, it needs a database and Redis. Sleakops leverages AWS services to provide you with alternatives. You can find more information in the dependencies documentation (/docs/project/dependency). - -Let's go to the dependencies section: - - - click-hook-reference - - -### Creating a Redis Dependency - -First, we need to create a Redis dependency for the task queue. On the dependency creation screen, select Redis, and you will see the following fields: - -| Configuration | Description | -| --- | --- | -| Dependency Type | Select "Redis" from the available options. | -| Project | Select the previously created project. In our case, "n8n-server". | -| Name | Define the name for Redis. In our case, "n8n-redis". | - - - click-hook-reference - - -With these fields completed, we'll click the "Next" button in the bottom right corner. In the last step, before clicking "Submit," we'll change the environment variable names to match what n8n expects. - -We need to configure the Redis connection variables to match what n8n expects: - -| Variable | Value | -| --- | --- | -| QUEUE_BULL_REDIS_HOST | (Redis Host of the dependency) | -| QUEUE_BULL_REDIS_PORT | 6379 | - - - click-create-s3-dependencies-2-reference - - -This tells Sleakops what name we want it to use to publish the variables generated by the "Redis" dependency. - -Make sure the variable names match what your n8n configuration expects. - -### Create PostgreSQL Database - -Now we proceed to create the PostgreSQL database for n8n data storage: - - - click-create-collectstatic-hook-reference - - -You can switch between "production" and "non-production" environments. This gives you default configuration values ​​in the next step for each environment. For example, in a production environment, it enables multi-A-Z, automatic backups, etc. -As an example in this guide, we'll leave it as "non-production." - -Just like with Redis, we need to configure the environment variable names as n8n expects. Go to the last step and before clicking submit, change the names to the following: - -| Before | After | -| --- | --- | -| \*_POSTGRESQL_NAME | DB_POSTGRESDB_DATABASE | -| \*_POSTGRESQL_USERNAME | DB_POSTGRESDB_USER | -| \*_POSTGRESQL_PASSWORD | DB_POSTGRESDB_PASSWORD | -| \*_POSTGRESQL_ADDRESS | DB_POSTGRESDB_HOST | -| \*_POSTGRESQL_PORT | DB_POSTGRESDB_PORT | - -It should look something like the image below. Then click the "Submit" button and your database should be created: - - - create-postgresql-3-reference - - -## Configuring Environment Variables - -Now we need to create the remaining environment variables. We can see the variables we have in .env.example in the code repository. -Some variables have already been configured in each dependency, but others still need to be defined. To do this, we go to the "Variablegroups" section. - - - click-create-rabbitmq-dependencies-reference - - -We're going to create a new variable group. We'll switch to text mode to copy the missing variables from the .env.example file and adjust the values ​​accordingly. - -This form has the following fields: - -- Project: Select the project we created earlier. -- Workload: Select "global," which means it will be used by all our workloads. -- Name: Define a name for this variable group. -- Type: Choose whether to load it by file or by variable. -- Vars: Here, enable text mode and copy the following environment variables: - -| Variable | Description | -| --- | --- | -| DB_TYPE | Set to "postgresdb" | -| EXECUTIONS_MODE | Set to "queue" for worker mode | -| N8N_ENCRYPTION_KEY | Generate a secure encryption key | -| OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS | Set to "true" | -| N8N_HOST | Define the host you configured in your web service; for this example, it would be `n8n.demo.sleakops.com` | -| N8N_WEBHOOK_URL | This variable is not strictly necessary to define; if you add a separate web service instance to handle webhooks with a different URL, you must specify which URL will handle the webhooks. `https://n8n.demo.sleakops.com/` | -| N8N_EDITOR_BASE_URL | `https://n8n.demo.sleakops.com` | - -If you want to see all the environment variables available to configure n8n, you can go to the following page of [n8n documentation](https://docs.n8n.io/hosting/configuration/environment-variables/) - - - create-rabbitmq-2-reference - - -## Deployments - -As a final step, let's view our deployed project. To do this, go to the "Deployments" section in the left panel: - - - click-deployments-reference - - -Here we'll see all the deployments we perform. In our case, it's the first one, and we can see that it was created successfully. If you see any errors, clicking on "error" will show you a description. - -If we don't see any errors, then the project is already deployed, and we can start using it from the URL provided by the web service. - -This concludes our project deployment process. We've included an optional step: configuring CI/CD with GitHub. - -## CI/CD Configuration (Optional but Recommended) - -### Why Configure CI/CD? - -Without CI/CD, every change to your code requires: - -1. Manual build from SleakOps -2. Manual deployment -3. Manual verification - -With CI/CD configured: - -- ✅ Push to `main` → Automatic deployment -- ✅ Automatic rollback in case of error -- ✅ Deployment status notifications - -### Setup steps: - -1. Go to your project in SleakOps -2. Click the ⚙️ (settings) -3. Select "Git pipelines" -4. Copy the provided YAML file -5. Add `SLEAKOPS_KEY` to your GitHub secrets - - - click-settings-project-reference - - - - click-git-pipelines-reference - - -This requires an environment variable called SLEAKOPS_KEY. If you don't have it, go to the link provided in **Settings -> CLI**, retrieve it, and save it as an environment variable. - -With this configured and deployed, every time you push to your "main" branch, a new version of your application will be automatically released. - -## 🎯 Next Steps - -Once the installation is complete: - -### Initial n8n Configuration - -1. **First Access**: Use your web service URL -2. **Create Administrator User**: n8n will prompt you to create the first user -3. **Configure Webhooks**: If needed, configure the public URLs - -### Monitoring and Optimization - -1. **Review Metrics**: Use the integrated Grafana dashboard -2. **Adjust Resources**: Modify CPU/memory based on actual usage -3. **Configure Alerts**: Define performance thresholds - -### Backup and Security - -1. **Automatic Backups**: Configure PostgreSQL backups -2. **Secrets Management**: Review credential management -3. **Updates**: Schedule regular updates - -## Updating and Extending n8n - -We now have our own n8n installed and running on the cluster. We have our n8n definition in a Dockerfile. - -#### To update the version - -This process is very simple. We'll modify the Dockerfile and change the image tag. You can see the available images in the official n8n repository on Docker Hub. - -Note: Read the changelog in case there are any breaking changes or anything that might break between versions. Make backups of the database beforehand, just in case. - -#### To add new dependencies to your nodes - -As we did to update the version, in this case we'll take advantage of having our Dockerfile and install whatever we want inside it. This will be available for use on our n8n nodes. - -You can see examples of this in the repository's README. - -## Scaling Best Practices (Bonus) - -Once your n8n deployment is up and running, consider these scaling strategies: - -### 🎯 **Worker Optimization** - -- **Queue Monitoring**: Monitor the Redis queue depth to determine when to scale workers. -- **Resource Allocation**: Allocate sufficient CPU and memory based on workflow complexity. -- **Concurrency Tuning**: Tune worker concurrency based on workflow types (CPU-intensive vs. I/O-intensive). -- **Dedicated Workers**: Create pools of specialized workers for different workflow categories. - -### 📈 **Performance Monitoring** - -Adjust the memory and CPU of your workloads to what your processes actually need. - -This is useful for avoiding oversized infrastructure and also for making decisions when scaling horizontally based on memory or CPU. - -#### How do we do it from Sleakops? - -Simple, go to the details of your worker or web service that we created earlier and click on the "Grafana" icon. This will open a dashboard within Grafana showing the historical consumption of your process. Be sure to look at a long time range to cover all your scenarios. - - - click-deployments-reference - - -### 🔧 **Database Optimization** - -- **Connection Pooling**: Configure PostgreSQL connection pools for high concurrency. -- **Read Replicas**: Use read replicas for reporting and analytics queries. (This can be done from Sleakops in the [Postgres](/docs/project/dependency/postgresql-aws) configuration.) -- **Indexing**: Optimize database indexes for workflow execution queries. -- **Backup Strategies**: Implement automated backups with point-in-time recovery. (This can be done from Sleakops in the [Postgres](/docs/project/dependency/postgresql-aws) configuration.) - -### 🚀 **Advanced Configurations** - -- **Node Affinity**: Schedule workers on appropriate node types (CPU vs. memory-optimized). (You can do this from Sleakops using [Nodepools](/docs/cluster/nodepools)) -- **Pod Disruption Budgets**: Ensures minimum availability during cluster maintenance. (Sleakops already handles this) -- **Resource Quotas**: Sets appropriate limits to prevent resource exhaustion. (You can do this from Sleakops by defining limits on your Workloads and Nodepools) -- **Network Policies**: Ensures inter-pod communication. (Sleakops already handles this) diff --git a/tutorials/s3-batch.mdx b/tutorials/s3-batch.mdx deleted file mode 100644 index dc568e60a..000000000 --- a/tutorials/s3-batch.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: S3 Batch -sidebar_label: S3 Batch -sidebar_position: 7 -description: S3 Batch -tags: - - S3 - - batch-operations - - data-migration - - cross-account - - aws - - storage -image: /img/tutorials/s3-batch/s3-batch.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Learn how to use S3 Batch Operations to copy large volumes of objects between S3 buckets, including cross-account configurations. This guide will help you migrate data efficiently and scalably. - -## 1. Enable and configure an inventory or manifest (list of objects) - -### Create an S3 Inventory (optional, but recommended) - -- In the **Amazon S3** console, select the source bucket. -- In the "Management" (or "Administration") section, create an **S3 Inventory** that generates a periodic report (CSV or Parquet) of all objects. -- Verify that the inventory includes "Object version" information (if applicable) and "ETag". - -### Or use a custom manifest (custom CSV) - -- Alternatively, you can create your own CSV file with the following structure on each line: - -```csv -s3://SOURCE_BUCKET_NAME/object1.txt -s3://SOURCE_BUCKET_NAME/object2.txt -... -``` - -- Upload this CSV file (manifest) to an S3 bucket that you have access to. - -:::info Note -This inventory or CSV is the "manifest" that S3 Batch will use to know which objects to copy. -::: - -## 2. Configure permissions and roles in source and destination accounts - -### S3 Batch Execution Role - -- In the **source** account, create an IAM Role that allows S3 Batch Operations (service `batchoperations.s3.amazonaws.com`) to read the source bucket and write to the destination bucket at the same time. -- Make sure the policy includes the **`s3:GetObject`** action for the source bucket and **`s3:PutObject`** for the destination bucket. - -### Policy on the destination bucket (cross-account) - -- If the destination bucket is in another account, add a bucket policy that allows the `s3:PutObject` action for the ARN of the IAM role from the previous step. - -## 3. Create the S3 Batch Operations Job - -### Basic Job Configuration - -1. **Enter the S3 console** and select **Batch Operations** in the side menu. -2. **Create a new Job** with the following basic configuration: - -- **Manifest**: Indicate where the inventory or CSV (manifest) containing the list of objects is located. -- **Operation**: Select **Copy**. -- **Destination Bucket**: Choose the destination bucket (in the other account). -- **IAM Role**: Select the role created for this purpose (step 2.1). - -### Additional options (optional) - -- **Storage Class**: Select the storage class you want for the destination bucket (Standard, IA, etc.). -- **Object Tags**: If you want to replicate or modify tags in the process. -- **Retention/Legal Hold**: If compliance applies. - -### Review and create Job - -- Verify that the settings are correct and launch the Job. - -## 4. Monitor the process - -1. In the **S3 Batch Operations** console, locate your Job and review the status. -2. Depending on the volume of objects, copying can take from minutes to several hours/days (for millions of files). -3. Review progress reports and possible errors (for example, objects with access denied). - -## 5. Validate the transfer - -1. **Object count**: Verify that the total number of files in the destination bucket matches what is expected. -2. **Error logs**: Check error output or review CloudTrail/S3 Logs for objects that were not copied correctly. -3. **Re-run for failed objects**: You can generate a new manifest with only the failed objects and launch another Job. - -## Summary of key points - -- **Manifest**: Properly prepare the inventory or list of objects. -- **Permissions**: Ensure you have an IAM role with policies that allow `GetObject` in source and `PutObject` in destination (cross-account). -- **Batch Job**: Configure the "Copy" operation with the correct role. -- **Monitoring**: Review S3 Batch logs and reports, and retry failed objects if necessary. diff --git a/tutorials/s3-replication.mdx b/tutorials/s3-replication.mdx deleted file mode 100644 index 98b6d972b..000000000 --- a/tutorials/s3-replication.mdx +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: S3 Replication -sidebar_label: S3 Replication -sidebar_position: 9 -description: S3 replication configuration between accounts -tags: - - S3 - - replication - - AWS - - cross-account - - data-sync - - backup - - storage ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -Steps to configure the S3 replication service to replicate files from one bucket to another in different accounts. - -As a requirement, versioning must be active in both buckets. - - - s3 - - -## 1. Create IAM Role in the account where the source bucket is located - -### Trust Policy - -You need a trust policy that allows the S3 service to assume the role: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "Service": "s3.amazonaws.com" - }, - "Action": "sts:AssumeRole" - } - ] -} -``` - -### Permissions Policy - -A permissions policy that allows: - -- Read objects and metadata from the source bucket (Account A). -- Put objects in the destination bucket (Account B). - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "ReadSourceBucket", - "Effect": "Allow", - "Action": [ - "s3:GetObject", - "s3:GetObjectAcl", - "s3:GetObjectVersion", - "s3:GetObjectVersionAcl" - ], - "Resource": "arn:aws:s3:::/*" - }, - { - "Sid": "WriteDestBucket", - "Effect": "Allow", - "Action": [ - "s3:PutObject", - "s3:PutObjectAcl", - "s3:ReplicateObject", - "s3:ReplicateDelete", - "s3:ReplicateTags", - "s3:GetObjectVersionTagging", - "s3:PutObjectVersionTagging" - ], - "Resource": "arn:aws:s3:::/*" - } - ] -} -``` - -## 2. Add policy to the destination bucket - -In the destination bucket details, go to the permissions tab and add the following policy: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "AllowReplicationFromAccountA", - "Effect": "Allow", - "Principal": { - "AWS": "arn:aws:iam:::role/" - }, - "Action": [ - "s3:PutObject", - "s3:PutObjectAcl", - "s3:ReplicateObject", - "s3:ReplicateDelete", - "s3:ReplicateTags" - ], - "Resource": ["arn:aws:s3:::/*"] - } - ] -} -``` - -## 3. Configure the replication rule in the source bucket - -- In the source bucket details, go to the "Management" (or "Properties" depending on console version) tab and look for the **Replication** section. -- Create a new replication rule and define: - - **Rule name**: A descriptive name. - - **Status**: Enabled. - - **Source bucket**: The current bucket (already selected). - - **Prefix/Filter**: You can choose to replicate the entire bucket or only a specific prefix. - - **Destination**: - - **Bucket**: specify the **ARN** of the destination bucket in Account B. - - **IAM role**: choose the role you created in the first step, which allows replication. - -## Optional - -- If the "Transfer to destination bucket owner" option is activated, the action must be added to both AllowReplicationFromAccountA (destination bucket policy) and WriteDestBucket (IAM role): - `"s3:ObjectOwnerOverrideToBucketOwner"` - -## Ways to copy existing files - -There are 3 different ways to copy existing files from the bucket: - -### 1. Do it along with replication - -When activating replication, it gives you an option to copy all existing files. - -### 2. Use the S3 migration option provided by Sleakops - -In the detail of the S3 type dependency, you can find this function that guides you step by step on what needs to be done. - - - s3-2 - - -### 3. Use the Batch Operation service - -Once the replication rule is created, following these guides: - -- [Batch Operations IAM role - policies](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-iam-role-policies.html) -- [Replication metrics and - events](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-metrics-events.html) - -Add to the S3ReplicationRolePolicy the following actions: - -- `"s3:PutObjectTagging"` to `"Sid": "WriteDestBucket"` -- `"s3:GetObjectTagging"` and `"s3:ListBucket"` to `"Sid": "ReadSourceBucket"` - -```json -{ - "Sid": "ReadReportBucket", - "Effect": "Allow", - "Action": ["s3:GetObject", "s3:GetObjectVersion"], - "Resource": ["arn:aws:s3:::bucket-reports/*"] -} -``` - -And add the `"s3:InitiateReplication"` permission to both WriteDestBucket and SourceBucket. diff --git a/tutorials/third-party-integration-vpn.mdx b/tutorials/third-party-integration-vpn.mdx deleted file mode 100644 index 4494bcb3c..000000000 --- a/tutorials/third-party-integration-vpn.mdx +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Third Party VPN Integration -sidebar_label: Third Party VPN Integration -sidebar_position: 8 -description: Comparison of VPN alternatives in AWS -tags: - - VPN - - AWS - - third-party - - networking - - connectivity - - cost-analysis - - transit-gateway -image: /img/tutorials/third-party-integration-vpn/third-party-integration-vpn.png ---- - -import Zoom from "react-medium-image-zoom"; -import "react-medium-image-zoom/dist/styles.css"; -import { FiExternalLink } from "react-icons/fi"; - -The choice between these three alternatives is based on the balance between **costs**,** scalability** and **management complexity**: - -### Transit Gateway (\~$197/month in the described scenario) - -- Higher fixed cost per attachment. -- Excellent option for larger topologies, multiple VPCs and scalability with minimal routing complexity. - -### Site-to-Site VPN + EC2 (\~$80/month estimated) - -- Easy configuration (native AWS solution). -- Suitable for a moderate number of tunnels, although less flexible than TGW for large topologies. - -### VPN on EC2 (StrongSwan + Nginx) (\~$20–21/month with 1 instance, or \~$40–42/month for HA) - -- Significantly lower cost. -- Higher administration and maintenance complexity (instance management, patches, manual failover). -- Suitable if total traffic is low and if you have staff to operate/monitor the instance. - -## Transit Gateway - -Acts as a centralized router that allows interconnection between multiple VPCs, on-premises networks and third-party networks. - -VPN connections are established through IPsec tunnels, which can be configured to provide high availability and redundancy (two tunnels per VPN connection are generally configured to achieve automatic failover). - - - vpn - - -### Cost Analysis - - **Hypothesis:** - -- **3 attachments** in the Transit Gateway, corresponding for example to: - - 1. VPC (Dev) - 2. VPN (Prod) - 3. VPN (Contingency) - -- **730 hours** of monthly usage (24/7). -- **2 GB monthly transfer** per attachment, totaling **6 GB monthly**. -- AWS rates (in most regions): - - **$0.09/hour/attachment**. - - **$0.002/GB** of data transfer. - **Costs:** -- **Attachment costs**: \~$197.10/month -- **Data transfer cost**: \~$0.01/month - **Total sum**: \~$197.11/month (rounded to \~$197.22/month in the original example). - -## Site-to-Site VPN - -A Site-to-Site VPN connection offers two VPN tunnels between a virtual **private gateway** or **transit gateway** on the AWS side and a **customer gateway** on the remote side (on-premise). - -Two tunnels for automatic failover or maintenance that AWS usually does that could briefly disable one of the tunnels —> [Site-to-Site VPN tunnel endpoint replacement](https://docs.aws.amazon.com/vpn/latest/s2svpn/endpoint-replacements.html) - - - vpn-2 - - - vpn-3 - - -### Cost Analysis - - **Hypothesis:** - -- **3 connections (VPN)** (equivalent to the 3 "attachments" you mentioned: Dev, Main, Contingency). -- Each VPN is an AWS-managed Site-to-Site tunnel. -- **Site-to-Site VPN cost**: $0.05 per hour per VPN -- **730 hours** monthly (24/7). -- **2 GB monthly transfer** per VPN. - **Costs:** -- **VPN** (3 connections): \~$109.50 -- **Data transfer** (6 GB total): \~$0.54 -- **Network Load Balancer**: \~$20–25 - **Total sum**: \~$130–135 monthly. - -## VPN on EC2 - -In this solution, an EC2 instance is launched on which **StrongSwan** is installed to establish IPsec tunnels and **Nginx** as a proxy (normally to route traffic at the application layer towards an Application Load Balancer or other VPC resources). - - - vpn-4 - - -### Cost Analysis - - **Hypothesis:** - -- **3 tunnels (VPN)** configured on the same instance (or on two instances for redundancy). -- **EC2 instance** of small size, for example, **t3.small** (with approx. cost $0.02–0.023/h). - **Costs:** -- **EC2 + EBS**: \~$18–20/month (1 instance) -- **Data transfer**: \~$0.54/month - **Total sum**: \~$20–21/month (In case of 2 instances for HA => \~$40–42/month.) - -Configuration of nginx and ipsec to achieve the connection setup. - **nginx.conf** - -```nginx -load_module /usr/lib/nginx/modules/ngx_stream_module.so; -worker_processes 1; -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - keepalive_timeout 65; - server_tokens off; -} - -stream { - server { - listen 8180; - proxy_pass ****; - } -} -``` - - **iptables.conf** - -```bash -*mangle -:PREROUTING ACCEPT [8165:7991805] -:INPUT ACCEPT [7883:7958068] -:FORWARD ACCEPT [282:33737] -:OUTPUT ACCEPT [5933:572312] -:POSTROUTING ACCEPT [6215:606049] -COMMIT - *nat -:PREROUTING ACCEPT [159:9540] -:INPUT ACCEPT [159:9540] -:OUTPUT ACCEPT [168:10720] -:POSTROUTING ACCEPT [168:10720] --A PREROUTING -i eth0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination :22 --A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination :443 --A POSTROUTING -p tcp -m tcp --dport 22 -j SNAT --to-source --A POSTROUTING -p tcp -m tcp --dport 443 -j SNAT --to-source -COMMIT - *filter -:INPUT ACCEPT [6016:538920] -:FORWARD ACCEPT [123:22565] -:OUTPUT ACCEPT [4614:432344] --A FORWARD -d /32 -p tcp -m tcp --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT --A FORWARD -d /32 -p tcp -m tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT --A FORWARD -d /32 -p tcp -m tcp --dport 44301 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT --A FORWARD -d /32 -p tcp -m tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT --A FORWARD -d /32 -p tcp -m tcp --dport 8180 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -COMMIT -``` From 0338007be2003a5f679f0779fc861eb63064b8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Izquierdo?= <61392581+fuzilogik2019@users.noreply.github.com> Date: Wed, 1 Apr 2026 16:57:02 -0300 Subject: [PATCH 34/45] fix: added simlink to avoid using duplicated files (#163) --- docusaurus.config.js | 13 +++++ sync_content.js | 134 ++++++++++--------------------------------- 2 files changed, 42 insertions(+), 105 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index a3838feb0..110758479 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -110,6 +110,19 @@ const config = { // Configuración del plugin docusaurus-lunr-search plugins: [ + // Prevent webpack from resolving symlinks to their real paths. + // Required because content dirs (docs/, changelog/, i18n/) are symlinks + // pointing to content/. Without this, webpack uses the real path while + // the blog/docs plugin uses the symlink path, making blog post metadata + // undefined at render time. + function symlinkWebpackPlugin() { + return { + name: "symlink-webpack-plugin", + configureWebpack() { + return { resolve: { symlinks: false } }; + }, + }; + }, [ require.resolve("docusaurus-lunr-search"), { diff --git a/sync_content.js b/sync_content.js index 3e6a1aff4..95ee35c8c 100644 --- a/sync_content.js +++ b/sync_content.js @@ -1,6 +1,7 @@ #!/usr/bin/env node /** - * Synchronizes content from the CMS-friendly structure to Docusaurus i18n structure. + * Synchronizes content from the CMS-friendly structure to Docusaurus i18n structure + * using symlinks, so that Docusaurus hot reload works during development. * * CMS structure (multiple_folders - Sveltia CMS compatible): * content/docs/en/... @@ -9,16 +10,14 @@ * content/tutorials/es/... * * Docusaurus structure (what Docusaurus expects): - * docs/... (default locale = en) - * i18n/es/docusaurus-plugin-content-docs/current/... (Spanish docs) - * tutorials/... (default locale = en) - * i18n/es/docusaurus-plugin-content-docs-tutorials/current/... (Spanish tutorials) + * docs/ -> content/docs/en + * i18n/es/docusaurus-plugin-content-docs/current/ -> content/docs/es + * tutorials/ -> content/tutorials/en + * i18n/es/docusaurus-plugin-content-docs-tutorials/current/ -> content/tutorials/es + * changelog/ -> content/changelog/en + * i18n/es/docusaurus-plugin-content-blog-changelog/ -> content/changelog/es * - * This script syncs content FROM the CMS structure TO the Docusaurus structure. - * It also handles CMS temporary folders (hex IDs like 24ef675958d5) by extracting - * their contents to the parent directory. - * - * Run this before building the site. + * Run this before starting the site. */ const fs = require("fs"); @@ -26,9 +25,6 @@ const path = require("path"); const ROOT = __dirname; -// Regex to match CMS temporary folder names (12 hex characters) -const CMS_TEMP_FOLDER_REGEX = /^[0-9a-f]{12}$/i; - // Mapping: source (CMS) -> destination (Docusaurus) const SYNC_MAP = [ { @@ -64,80 +60,31 @@ const SYNC_MAP = [ ]; /** - * Check if a folder name looks like a CMS temporary ID + * Create a symlink from dest pointing to src. + * Removes any existing file, directory, or symlink at dest first. */ -function isCmsTempFolder(name) { - return CMS_TEMP_FOLDER_REGEX.test(name); -} +function createSymlink(src, dest) { + const srcAbs = path.resolve(ROOT, src); + const destAbs = path.resolve(ROOT, dest); -/** - * Recursively copy directory contents - * If a folder is a CMS temp folder (hex ID), extract its contents to the parent dest - */ -function copyDirSync(src, dest, stats = { count: 0, flattened: [] }) { - if (!fs.existsSync(src)) { - return stats; + if (!fs.existsSync(srcAbs)) { + console.log(` ⏭️ Skipping (source not found): ${src}`); + return; } - // Create destination if it doesn't exist - fs.mkdirSync(dest, { recursive: true }); - - const entries = fs.readdirSync(src, { withFileTypes: true }); - - for (const entry of entries) { - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); - - if (entry.isDirectory()) { - // If this is a CMS temp folder, flatten it - copy contents to current dest - if (isCmsTempFolder(entry.name)) { - // Copy contents of temp folder directly to dest (flattening) - const tempContents = fs.readdirSync(srcPath, { withFileTypes: true }); - for (const tempEntry of tempContents) { - const tempSrcPath = path.join(srcPath, tempEntry.name); - const flatDestPath = path.join(dest, tempEntry.name); - - if (tempEntry.isDirectory()) { - copyDirSync(tempSrcPath, flatDestPath, stats); - } else { - fs.copyFileSync(tempSrcPath, flatDestPath); - stats.count++; - stats.flattened.push({ - from: path.relative(ROOT, tempSrcPath), - to: path.relative(ROOT, flatDestPath), - }); - } - } - } else { - // Normal directory - recurse - copyDirSync(srcPath, destPath, stats); - } - } else { - fs.copyFileSync(srcPath, destPath); - stats.count++; - } + // Remove existing dest (dir, file, or broken symlink) + try { + fs.lstatSync(destAbs); // throws if nothing exists + fs.rmSync(destAbs, { recursive: true, force: true }); + } catch (_) { + // dest doesn't exist, nothing to remove } - return stats; -} - -/** - * Remove directory contents (but keep the directory) - */ -function clearDirSync(dir) { - if (!fs.existsSync(dir)) { - return; - } + // Ensure parent directory exists + fs.mkdirSync(path.dirname(destAbs), { recursive: true }); - const entries = fs.readdirSync(dir, { withFileTypes: true }); - for (const entry of entries) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - fs.rmSync(fullPath, { recursive: true, force: true }); - } else { - fs.unlinkSync(fullPath); - } - } + fs.symlinkSync(srcAbs, destAbs, "dir"); + console.log(` ✓ ${dest} → ${src}`); } /** @@ -194,34 +141,11 @@ function syncTutorialImages() { function main() { console.log( - "🔄 Syncing content from CMS structure to Docusaurus structure...\n", + "🔗 Linking content from CMS structure to Docusaurus structure...\n", ); - let allFlattened = []; - for (const mapping of SYNC_MAP) { - const srcPath = path.join(ROOT, mapping.source); - const destPath = path.join(ROOT, mapping.dest); - - if (!fs.existsSync(srcPath)) { - console.log(` ⏭️ Skipping ${mapping.description} (source not found)`); - continue; - } - - // Clear destination and copy fresh - clearDirSync(destPath); - const stats = copyDirSync(srcPath, destPath, { count: 0, flattened: [] }); - console.log(` ✓ ${mapping.description}: ${stats.count} files synced`); - allFlattened = allFlattened.concat(stats.flattened); - } - - if (allFlattened.length > 0) { - console.log( - `\n📦 Flattened ${allFlattened.length} file(s) from CMS temp folders:`, - ); - for (const item of allFlattened) { - console.log(` ${item.from} → ${item.to}`); - } + createSymlink(mapping.source, mapping.dest); } // Sync tutorial images from CMS folders to static/img/tutorials From 27244be591e91b800a2c548040f4923dde6f07ac Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:38:57 -0300 Subject: [PATCH 35/45] =?UTF-8?q?Create=20=F0=9F=93=96=20Documentation=20R?= =?UTF-8?q?oot=20=E2=80=9Ctest=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/test.mdx | 7 +++++++ content/docs/es/test.mdx | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 content/docs/en/test.mdx create mode 100644 content/docs/es/test.mdx diff --git a/content/docs/en/test.mdx b/content/docs/en/test.mdx new file mode 100644 index 000000000..0d26b7a1c --- /dev/null +++ b/content/docs/en/test.mdx @@ -0,0 +1,7 @@ +--- +title: Test +sidebar_label: Test +sidebar_position: 4 +--- + +Test diff --git a/content/docs/es/test.mdx b/content/docs/es/test.mdx new file mode 100644 index 000000000..b805e0436 --- /dev/null +++ b/content/docs/es/test.mdx @@ -0,0 +1,7 @@ +--- +title: Prueba +sidebar_label: Prueba +sidebar_position: 4 +--- + +Prueba From 90fb076eda21f8dbe7e7f27976824f2fbca10ab1 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Wed, 1 Apr 2026 19:12:21 -0300 Subject: [PATCH 36/45] =?UTF-8?q?Update=20=F0=9F=93=96=20Documentation=20R?= =?UTF-8?q?oot=20=E2=80=9Ctest=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/test.mdx | 2 +- content/docs/es/test.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/en/test.mdx b/content/docs/en/test.mdx index 0d26b7a1c..e9ae652a1 100644 --- a/content/docs/en/test.mdx +++ b/content/docs/en/test.mdx @@ -1,7 +1,7 @@ --- title: Test sidebar_label: Test -sidebar_position: 4 +sidebar_position: null --- Test diff --git a/content/docs/es/test.mdx b/content/docs/es/test.mdx index b805e0436..31daf423d 100644 --- a/content/docs/es/test.mdx +++ b/content/docs/es/test.mdx @@ -1,7 +1,7 @@ --- title: Prueba sidebar_label: Prueba -sidebar_position: 4 +sidebar_position: null --- Prueba From 28cc31d1644ace4e3427f88ce436652406f9cdcb Mon Sep 17 00:00:00 2001 From: Matias Izquierdo Date: Wed, 1 Apr 2026 19:33:58 -0300 Subject: [PATCH 37/45] chore: sidebar organization and clean frontmatter bugfixes --- clean_frontmatter.js | 87 ++++++++++++------- .../changelog/en/2023-08-23-version-1.0.0.md | 1 + .../changelog/en/2023-08-29-version-1.0.1.md | 1 + .../changelog/en/2023-09-04-version-1.0.2.md | 1 + .../changelog/en/2023-09-25-version-1.0.3.md | 1 + .../changelog/en/2023-10-11-version-1.0.4.md | 1 + .../changelog/en/2023-10-27-version-1.0.5.md | 1 + .../changelog/en/2023-11-06-version-1.1.0.md | 1 + .../changelog/en/2023-12-05-version-1.1.1.md | 1 + .../changelog/en/2024-01-05-version-1.2.0.md | 1 + .../changelog/en/2024-01-12-version-1.2.1.md | 1 + .../changelog/en/2024-01-25-version-1.2.2.md | 1 + .../changelog/en/2024-02-05-version-1.2.3.md | 1 + .../changelog/en/2024-02-15-version-1.2.4.md | 1 + .../changelog/en/2024-03-01-version-1.3.0.md | 1 + .../changelog/en/2024-03-06-version-1.4.0.md | 1 + .../changelog/en/2024-04-11-version-1.4.1.md | 1 + .../changelog/en/2024-04-25-version-1.4.2.md | 1 + .../changelog/en/2024-05-13-version-1.4.3.md | 1 + .../changelog/en/2024-05-23-version-1.5.0.md | 1 + .../changelog/en/2024-06-24-version-1.5.1.md | 1 + .../changelog/en/2024-08-12-version-1.6.0.md | 1 + .../changelog/en/2024-08-22-version-1.6.1.md | 1 + .../changelog/en/2024-09-19-version-1.6.2.md | 1 + .../changelog/en/2024-09-27-version-1.6.3.md | 1 + .../changelog/en/2024-10-14-version-1.7.0.md | 1 + .../changelog/en/2024-10-30-version-1.7.1.md | 1 + .../changelog/en/2024-11-05-version-1.7.2.md | 1 + .../changelog/en/2024-11-14-version-1.7.3.md | 1 + .../changelog/en/2024-12-05-version-1.7.4.md | 1 + .../changelog/en/2024-12-09-version-1.7.5.md | 1 + .../changelog/en/2025-01-06-version-1.7.6.md | 1 + .../changelog/en/2025-02-05-version-1.7.7.md | 1 + .../changelog/en/2025-02-10-version-1.7.8.md | 1 + .../changelog/en/2025-02-17-version-1.7.9.md | 1 + .../changelog/en/2025-04-01-version-1.7.10.md | 1 + .../changelog/en/2025-04-24-version-1.7.11.md | 1 + .../changelog/en/2025-05-14-version-1.7.12.md | 1 + .../changelog/en/2025-06-02-version-1.7.13.md | 1 + .../changelog/en/2025-06-26-version-1.7.14.md | 1 + .../changelog/en/2025-07-07-version-1.7.15.md | 1 + .../changelog/en/2025-07-21-version-1.7.16.md | 1 + .../changelog/en/2025-10-01-version-2.0.0.md | 1 + .../changelog/en/2025-10-15-version-2.0.1.md | 1 + .../changelog/en/2025-11-10-version-2.1.0.md | 1 + .../changelog/en/2025-11-13-version-2.2.0.md | 1 + .../changelog/en/2025-11-18-version-2.3.0.md | 1 + .../changelog/en/2025-12-01-version-2.3.1.md | 1 + .../changelog/en/2025-12-19-version-2.3.2.md | 1 + .../changelog/en/2026-01-20-version-2.4.0.md | 1 + .../changelog/en/2026-01-28-version-2.5.0.md | 1 + .../changelog/en/2026-02-04-version-2.5.1.md | 1 + .../changelog/en/2026-02-23-version-2.6.0.md | 1 + .../changelog/en/2026-03-17-version-2.7.0.md | 1 + .../changelog/en/2026-03-26-version-2.8.0.md | 1 + .../changelog/es/2023-08-23-version-1.0.0.md | 1 + .../changelog/es/2023-08-29-version-1.0.1.md | 1 + .../changelog/es/2023-09-04-version-1.0.2.md | 1 + .../changelog/es/2023-09-25-version-1.0.3.md | 1 + .../changelog/es/2023-10-11-version-1.0.4.md | 1 + .../changelog/es/2023-10-27-version-1.0.5.md | 1 + .../changelog/es/2023-11-06-version-1.1.0.md | 1 + .../changelog/es/2023-12-05-version-1.1.1.md | 1 + .../changelog/es/2024-01-05-version-1.2.0.md | 1 + .../changelog/es/2024-01-12-version-1.2.1.md | 1 + .../changelog/es/2024-01-25-version-1.2.2.md | 1 + .../changelog/es/2024-02-05-version-1.2.3.md | 1 + .../changelog/es/2024-02-15-version-1.2.4.md | 1 + .../changelog/es/2024-03-01-version-1.3.0.md | 1 + .../changelog/es/2024-03-06-version-1.4.0.md | 1 + .../changelog/es/2024-04-11-version-1.4.1.md | 1 + .../changelog/es/2024-04-25-version-1.4.2.md | 1 + .../changelog/es/2024-05-13-version-1.4.3.md | 1 + .../changelog/es/2024-05-23-version-1.5.0.md | 1 + .../changelog/es/2024-06-24-version-1.5.1.md | 1 + .../changelog/es/2024-08-12-version-1.6.0.md | 1 + .../changelog/es/2024-08-22-version-1.6.1.md | 1 + .../changelog/es/2024-09-19-version-1.6.2.md | 1 + .../changelog/es/2024-09-27-version-1.6.3.md | 1 + .../changelog/es/2024-10-14-version-1.7.0.md | 1 + .../changelog/es/2024-10-30-version-1.7.1.md | 1 + .../changelog/es/2024-11-05-version-1.7.2.md | 1 + .../changelog/es/2024-11-14-version-1.7.3.md | 1 + .../changelog/es/2024-12-05-version-1.7.4.md | 1 + .../changelog/es/2024-12-09-version-1.7.5.md | 1 + .../changelog/es/2025-01-06-version-1.7.6.md | 1 + .../changelog/es/2025-02-05-version-1.7.7.md | 1 + .../changelog/es/2025-02-10-version-1.7.8.md | 1 + .../changelog/es/2025-02-17-version-1.7.9.md | 1 + .../changelog/es/2025-04-01-version-1.7.10.md | 1 + .../changelog/es/2025-04-24-version-1.7.11.md | 1 + .../changelog/es/2025-05-14-version-1.7.12.md | 1 + .../changelog/es/2025-06-02-version-1.7.13.md | 1 + .../changelog/es/2025-06-26-version-1.7.14.md | 1 + .../changelog/es/2025-07-07-version-1.7.15.md | 1 + .../changelog/es/2025-07-21-version-1.7.16.md | 1 + .../changelog/es/2025-10-01-version-2.0.0.md | 1 + .../changelog/es/2025-10-15-version-2.0.1.md | 1 + .../changelog/es/2025-11-10-version-2.1.0.md | 1 + .../changelog/es/2025-11-13-version-2.2.0.md | 1 + .../changelog/es/2025-11-18-version-2.3.0.md | 1 + .../changelog/es/2025-12-01-version-2.3.1.md | 1 + .../changelog/es/2025-12-19-version-2.3.2.md | 1 + .../changelog/es/2026-01-20-version-2.4.0.md | 1 + .../changelog/es/2026-01-28-version-2.5.0.md | 1 + .../changelog/es/2026-02-04-version-2.5.1.md | 1 + .../changelog/es/2026-02-23-version-2.6.0.md | 1 + .../changelog/es/2026-03-17-version-2.7.0.md | 1 + .../changelog/es/2026-03-26-version-2.8.0.md | 1 + content/docs/en/cluster/addons/kubecost.mdx | 1 + content/docs/en/cluster/addons/loki.mdx | 1 + content/docs/en/cluster/addons/otel.mdx | 1 + content/docs/en/cluster/addons/prometheus.mdx | 1 + content/docs/en/domain/delegation.mdx | 1 + content/docs/en/domain/setup.mdx | 1 + content/docs/en/project/dependency/faqs.mdx | 1 + content/docs/en/project/vargroup/index.mdx | 1 + content/docs/en/project/workload/job.mdx | 1 + content/docs/en/provider/schemas.mdx | 1 + content/docs/en/test.mdx | 2 +- content/docs/es/cluster/addons/kubecost.mdx | 1 + content/docs/es/cluster/addons/loki.mdx | 1 + content/docs/es/cluster/addons/otel.mdx | 1 + content/docs/es/cluster/addons/prometheus.mdx | 1 + content/docs/es/domain/delegation.mdx | 1 + content/docs/es/project/dependency/faqs.mdx | 1 + content/docs/es/project/vargroup/index.mdx | 1 + content/docs/es/project/workload/job.mdx | 1 + content/docs/es/provider/schemas.mdx | 1 + .../es/quickstart/django_celery/index.mdx | 1 + content/docs/es/quickstart/n8n/index.mdx | 1 + content/docs/es/test.mdx | 2 +- sidebars.js | 52 +---------- 133 files changed, 188 insertions(+), 84 deletions(-) diff --git a/clean_frontmatter.js b/clean_frontmatter.js index 8549d8ee3..b194d9049 100644 --- a/clean_frontmatter.js +++ b/clean_frontmatter.js @@ -6,7 +6,7 @@ * This script: * - Removes `image: ''` (empty image fields) * - Removes `sidebar_label: ''` (empty sidebar labels) - * - Removes `sidebar_position: null` (null positions) + * - Replaces `sidebar_position: null` with the file's alphabetical index in its directory * - Removes `title: ''` inside author objects * - Removes `tags: []` (empty tags arrays) * - Removes `pagination_prev: ''` (empty pagination) @@ -18,22 +18,28 @@ const fs = require("fs"); const path = require("path"); -// Directories to process +// Directories to process. +// reverse: true sorts files descending so newest entries get the lowest +// sidebar_position (appear first). Used for changelog where higher versions +// should appear at the top of the sidebar. const DIRS_TO_CLEAN = [ - path.join(__dirname, "content/tutorials/en"), - path.join(__dirname, "content/tutorials/es"), - path.join(__dirname, "content/changelog/en"), - path.join(__dirname, "content/changelog/es"), - path.join(__dirname, "content/docs/en"), - path.join(__dirname, "content/docs/es"), + { dir: path.join(__dirname, "content/tutorials/en"), reverse: false }, + { dir: path.join(__dirname, "content/tutorials/es"), reverse: false }, + { dir: path.join(__dirname, "content/changelog/en"), reverse: true }, + { dir: path.join(__dirname, "content/changelog/es"), reverse: true }, + { dir: path.join(__dirname, "content/docs/en"), reverse: false }, + { dir: path.join(__dirname, "content/docs/es"), reverse: false }, ]; /** - * Clean frontmatter by removing invalid empty fields + * Clean frontmatter by removing invalid empty fields. + * If sidebar_position is null, it is replaced with filePosition (1-based index + * of the file sorted alphabetically within its directory). * @param {string} content - The file content + * @param {number} filePosition - 1-based position of this file in its directory * @returns {string} - Cleaned content */ -function cleanFrontmatter(content) { +function cleanFrontmatter(content, filePosition) { // Match the frontmatter section const frontmatterMatch = content.match(/^(---\s*\n)([\s\S]*?)(\n---)/); @@ -53,8 +59,16 @@ function cleanFrontmatter(content) { // Remove `sidebar_label: ''` or `sidebar_label: ""` frontmatter = frontmatter.replace(/^sidebar_label:\s*['"]?['"]?\s*$/gm, ""); - // Remove `sidebar_position: null` - frontmatter = frontmatter.replace(/^sidebar_position:\s*null\s*$/gm, ""); + // If sidebar_position is null or missing, assign the file's alphabetical + // position within its directory. If already set to a valid number, keep it. + if (/^sidebar_position:\s*null\s*$/m.test(frontmatter)) { + frontmatter = frontmatter.replace( + /^sidebar_position:\s*null\s*$/gm, + `sidebar_position: ${filePosition}`, + ); + } else if (!/^sidebar_position:/m.test(frontmatter)) { + frontmatter += `\nsidebar_position: ${filePosition}`; + } // Remove `title: ''` lines (inside author objects) - careful with indentation frontmatter = frontmatter.replace(/^\s+title:\s*['"]?['"]?\s*$/gm, ""); @@ -78,41 +92,52 @@ function cleanFrontmatter(content) { } /** - * Process all MDX files in a directory + * Process all MDX files in a directory. * @param {string} dir - Directory path + * @param {boolean} reverse - If true, sort files descending so newest/highest + * entries get position 1 (used for changelog). */ -function processDirectory(dir) { +function processDirectory(dir, reverse = false) { if (!fs.existsSync(dir)) { console.log(` Directory not found: ${dir}`); return; } - const files = fs.readdirSync(dir); + const entries = fs.readdirSync(dir, { withFileTypes: true }); - for (const file of files) { - const filePath = path.join(dir, file); - const stat = fs.statSync(filePath); - - if (stat.isDirectory()) { - processDirectory(filePath); - } else if (file.endsWith(".mdx") || file.endsWith(".md")) { - const original = fs.readFileSync(filePath, "utf-8"); - const cleaned = cleanFrontmatter(original); - - if (original !== cleaned) { - fs.writeFileSync(filePath, cleaned); - console.log(` ✓ Cleaned: ${file}`); - } + // Recurse into subdirectories (inherit the same sort order) + for (const entry of entries) { + if (entry.isDirectory()) { + processDirectory(path.join(dir, entry.name), reverse); } } + + // Collect and sort md/mdx files to assign stable positions + const mdFiles = entries + .filter((e) => e.isFile() && (e.name.endsWith(".mdx") || e.name.endsWith(".md"))) + .map((e) => e.name) + .sort(); + + if (reverse) mdFiles.reverse(); + + mdFiles.forEach((file, index) => { + const filePath = path.join(dir, file); + const original = fs.readFileSync(filePath, "utf-8"); + const cleaned = cleanFrontmatter(original, index + 1); + + if (original !== cleaned) { + fs.writeFileSync(filePath, cleaned); + console.log(` ✓ Cleaned: ${file}`); + } + }); } function main() { console.log("🧹 Cleaning frontmatter in MDX/MD files..."); - for (const dir of DIRS_TO_CLEAN) { + for (const { dir, reverse } of DIRS_TO_CLEAN) { console.log(`\nProcessing: ${dir}`); - processDirectory(dir); + processDirectory(dir, reverse); } console.log("\n✅ Frontmatter cleanup complete!"); diff --git a/content/changelog/en/2023-08-23-version-1.0.0.md b/content/changelog/en/2023-08-23-version-1.0.0.md index edc755c96..50de69fbc 100644 --- a/content/changelog/en/2023-08-23-version-1.0.0.md +++ b/content/changelog/en/2023-08-23-version-1.0.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 54 --- `major release` · 23/08/2023 diff --git a/content/changelog/en/2023-08-29-version-1.0.1.md b/content/changelog/en/2023-08-29-version-1.0.1.md index 27869a2c9..1fc779a60 100644 --- a/content/changelog/en/2023-08-29-version-1.0.1.md +++ b/content/changelog/en/2023-08-29-version-1.0.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 53 --- `patch release` · 29/08/2023 diff --git a/content/changelog/en/2023-09-04-version-1.0.2.md b/content/changelog/en/2023-09-04-version-1.0.2.md index 486f74d1a..4a8ac96ae 100644 --- a/content/changelog/en/2023-09-04-version-1.0.2.md +++ b/content/changelog/en/2023-09-04-version-1.0.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 52 --- `patch release` · 04/09/2023 diff --git a/content/changelog/en/2023-09-25-version-1.0.3.md b/content/changelog/en/2023-09-25-version-1.0.3.md index cab913be5..2b26fd4de 100644 --- a/content/changelog/en/2023-09-25-version-1.0.3.md +++ b/content/changelog/en/2023-09-25-version-1.0.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 51 --- `patch release` · 25/09/2023 diff --git a/content/changelog/en/2023-10-11-version-1.0.4.md b/content/changelog/en/2023-10-11-version-1.0.4.md index e940aacba..1cac9b374 100644 --- a/content/changelog/en/2023-10-11-version-1.0.4.md +++ b/content/changelog/en/2023-10-11-version-1.0.4.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 50 --- `patch release` · 11/10/2023 diff --git a/content/changelog/en/2023-10-27-version-1.0.5.md b/content/changelog/en/2023-10-27-version-1.0.5.md index 0627d559d..b9eec4dba 100644 --- a/content/changelog/en/2023-10-27-version-1.0.5.md +++ b/content/changelog/en/2023-10-27-version-1.0.5.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 49 --- `patch release` · 27/10/2023 diff --git a/content/changelog/en/2023-11-06-version-1.1.0.md b/content/changelog/en/2023-11-06-version-1.1.0.md index e7e1756a3..177df5c88 100644 --- a/content/changelog/en/2023-11-06-version-1.1.0.md +++ b/content/changelog/en/2023-11-06-version-1.1.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 48 --- `minor release` · 06/11/2023 diff --git a/content/changelog/en/2023-12-05-version-1.1.1.md b/content/changelog/en/2023-12-05-version-1.1.1.md index db17efe83..625f24b79 100644 --- a/content/changelog/en/2023-12-05-version-1.1.1.md +++ b/content/changelog/en/2023-12-05-version-1.1.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 47 --- `patch release` · 05/12/2023 diff --git a/content/changelog/en/2024-01-05-version-1.2.0.md b/content/changelog/en/2024-01-05-version-1.2.0.md index 75eee5317..3dfc0a259 100644 --- a/content/changelog/en/2024-01-05-version-1.2.0.md +++ b/content/changelog/en/2024-01-05-version-1.2.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 46 --- `minor release` · 05/01/2024 diff --git a/content/changelog/en/2024-01-12-version-1.2.1.md b/content/changelog/en/2024-01-12-version-1.2.1.md index de96876ad..11880cdcd 100644 --- a/content/changelog/en/2024-01-12-version-1.2.1.md +++ b/content/changelog/en/2024-01-12-version-1.2.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 45 --- `patch release` · 12/01/2024 diff --git a/content/changelog/en/2024-01-25-version-1.2.2.md b/content/changelog/en/2024-01-25-version-1.2.2.md index a58d2d79c..4b8c9986c 100644 --- a/content/changelog/en/2024-01-25-version-1.2.2.md +++ b/content/changelog/en/2024-01-25-version-1.2.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 44 --- `patch release` · 25/01/2024 diff --git a/content/changelog/en/2024-02-05-version-1.2.3.md b/content/changelog/en/2024-02-05-version-1.2.3.md index 978ec18e6..7374f2994 100644 --- a/content/changelog/en/2024-02-05-version-1.2.3.md +++ b/content/changelog/en/2024-02-05-version-1.2.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 43 --- `patch release` · 05/02/2024 diff --git a/content/changelog/en/2024-02-15-version-1.2.4.md b/content/changelog/en/2024-02-15-version-1.2.4.md index 8c43d9439..341b1f982 100644 --- a/content/changelog/en/2024-02-15-version-1.2.4.md +++ b/content/changelog/en/2024-02-15-version-1.2.4.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 42 --- `patch release` · 15/02/2024 diff --git a/content/changelog/en/2024-03-01-version-1.3.0.md b/content/changelog/en/2024-03-01-version-1.3.0.md index 6d93b494f..619da8ad8 100644 --- a/content/changelog/en/2024-03-01-version-1.3.0.md +++ b/content/changelog/en/2024-03-01-version-1.3.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 41 --- `minor release` · 01/03/2024 diff --git a/content/changelog/en/2024-03-06-version-1.4.0.md b/content/changelog/en/2024-03-06-version-1.4.0.md index c51384371..e0ff7e44e 100644 --- a/content/changelog/en/2024-03-06-version-1.4.0.md +++ b/content/changelog/en/2024-03-06-version-1.4.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 40 --- `minor release` · 03/06/2024 diff --git a/content/changelog/en/2024-04-11-version-1.4.1.md b/content/changelog/en/2024-04-11-version-1.4.1.md index fe651d030..30d1a7e8d 100644 --- a/content/changelog/en/2024-04-11-version-1.4.1.md +++ b/content/changelog/en/2024-04-11-version-1.4.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 39 --- `patch release` · 04/11/2024 diff --git a/content/changelog/en/2024-04-25-version-1.4.2.md b/content/changelog/en/2024-04-25-version-1.4.2.md index c777a3042..7899c7c6a 100644 --- a/content/changelog/en/2024-04-25-version-1.4.2.md +++ b/content/changelog/en/2024-04-25-version-1.4.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 38 --- `patch release` · 04/25/2024 diff --git a/content/changelog/en/2024-05-13-version-1.4.3.md b/content/changelog/en/2024-05-13-version-1.4.3.md index f57413fa1..e0bd2791b 100644 --- a/content/changelog/en/2024-05-13-version-1.4.3.md +++ b/content/changelog/en/2024-05-13-version-1.4.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 37 --- `patch release` · 05/13/2024 diff --git a/content/changelog/en/2024-05-23-version-1.5.0.md b/content/changelog/en/2024-05-23-version-1.5.0.md index 0887c6263..823dd1610 100644 --- a/content/changelog/en/2024-05-23-version-1.5.0.md +++ b/content/changelog/en/2024-05-23-version-1.5.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 36 --- `minor release` · 05/23/2024 diff --git a/content/changelog/en/2024-06-24-version-1.5.1.md b/content/changelog/en/2024-06-24-version-1.5.1.md index f8546a879..1135d91b0 100644 --- a/content/changelog/en/2024-06-24-version-1.5.1.md +++ b/content/changelog/en/2024-06-24-version-1.5.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 35 --- `patch release` · 06/24/2024 diff --git a/content/changelog/en/2024-08-12-version-1.6.0.md b/content/changelog/en/2024-08-12-version-1.6.0.md index 636c882f2..9398c0c59 100644 --- a/content/changelog/en/2024-08-12-version-1.6.0.md +++ b/content/changelog/en/2024-08-12-version-1.6.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 34 --- `minor release` · 08/12/2024 diff --git a/content/changelog/en/2024-08-22-version-1.6.1.md b/content/changelog/en/2024-08-22-version-1.6.1.md index fbc799d43..5c1e279d6 100644 --- a/content/changelog/en/2024-08-22-version-1.6.1.md +++ b/content/changelog/en/2024-08-22-version-1.6.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 33 --- `patch release` · 08/22/2024 diff --git a/content/changelog/en/2024-09-19-version-1.6.2.md b/content/changelog/en/2024-09-19-version-1.6.2.md index 547a12983..726adec62 100644 --- a/content/changelog/en/2024-09-19-version-1.6.2.md +++ b/content/changelog/en/2024-09-19-version-1.6.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 32 --- `patch release` · 09/19/2024 diff --git a/content/changelog/en/2024-09-27-version-1.6.3.md b/content/changelog/en/2024-09-27-version-1.6.3.md index 6f1e148ca..c8363b7e5 100644 --- a/content/changelog/en/2024-09-27-version-1.6.3.md +++ b/content/changelog/en/2024-09-27-version-1.6.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 31 --- `patch release` · 27/09/2024 diff --git a/content/changelog/en/2024-10-14-version-1.7.0.md b/content/changelog/en/2024-10-14-version-1.7.0.md index 5e596f550..cd6884c5e 100644 --- a/content/changelog/en/2024-10-14-version-1.7.0.md +++ b/content/changelog/en/2024-10-14-version-1.7.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 30 --- `minor release` · 14/10/2024 diff --git a/content/changelog/en/2024-10-30-version-1.7.1.md b/content/changelog/en/2024-10-30-version-1.7.1.md index 2c4238f5d..9fb043eef 100644 --- a/content/changelog/en/2024-10-30-version-1.7.1.md +++ b/content/changelog/en/2024-10-30-version-1.7.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 29 --- `patch release` · 30/10/2024 diff --git a/content/changelog/en/2024-11-05-version-1.7.2.md b/content/changelog/en/2024-11-05-version-1.7.2.md index d21789ed1..f1099ba06 100644 --- a/content/changelog/en/2024-11-05-version-1.7.2.md +++ b/content/changelog/en/2024-11-05-version-1.7.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 28 --- `patch release` · 05/11/2024 diff --git a/content/changelog/en/2024-11-14-version-1.7.3.md b/content/changelog/en/2024-11-14-version-1.7.3.md index 50f2fa6de..8c5b0fe96 100644 --- a/content/changelog/en/2024-11-14-version-1.7.3.md +++ b/content/changelog/en/2024-11-14-version-1.7.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 27 --- `patch release` · 14/11/2024 diff --git a/content/changelog/en/2024-12-05-version-1.7.4.md b/content/changelog/en/2024-12-05-version-1.7.4.md index 5cbdb9bf1..db98b89d1 100644 --- a/content/changelog/en/2024-12-05-version-1.7.4.md +++ b/content/changelog/en/2024-12-05-version-1.7.4.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 26 --- `patch release` · 05/12/2024 diff --git a/content/changelog/en/2024-12-09-version-1.7.5.md b/content/changelog/en/2024-12-09-version-1.7.5.md index ec6bd02f1..4335b92a5 100644 --- a/content/changelog/en/2024-12-09-version-1.7.5.md +++ b/content/changelog/en/2024-12-09-version-1.7.5.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 25 --- `patch release` · 09/12/2024 diff --git a/content/changelog/en/2025-01-06-version-1.7.6.md b/content/changelog/en/2025-01-06-version-1.7.6.md index bd2ac0edb..d0ffd64d9 100644 --- a/content/changelog/en/2025-01-06-version-1.7.6.md +++ b/content/changelog/en/2025-01-06-version-1.7.6.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 24 --- `patch release` · 06/01/2025 diff --git a/content/changelog/en/2025-02-05-version-1.7.7.md b/content/changelog/en/2025-02-05-version-1.7.7.md index ecf3af95e..e9fac2055 100644 --- a/content/changelog/en/2025-02-05-version-1.7.7.md +++ b/content/changelog/en/2025-02-05-version-1.7.7.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 23 --- `patch release` · 05/02/2025 diff --git a/content/changelog/en/2025-02-10-version-1.7.8.md b/content/changelog/en/2025-02-10-version-1.7.8.md index bd208fc73..620389979 100644 --- a/content/changelog/en/2025-02-10-version-1.7.8.md +++ b/content/changelog/en/2025-02-10-version-1.7.8.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 22 --- `patch release` · 10/02/2025 diff --git a/content/changelog/en/2025-02-17-version-1.7.9.md b/content/changelog/en/2025-02-17-version-1.7.9.md index cc0b45be2..108f087df 100644 --- a/content/changelog/en/2025-02-17-version-1.7.9.md +++ b/content/changelog/en/2025-02-17-version-1.7.9.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 21 --- `patch release` · 17/02/2025 diff --git a/content/changelog/en/2025-04-01-version-1.7.10.md b/content/changelog/en/2025-04-01-version-1.7.10.md index 7dacf7f37..2a7f27cdd 100644 --- a/content/changelog/en/2025-04-01-version-1.7.10.md +++ b/content/changelog/en/2025-04-01-version-1.7.10.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 20 --- `patch release` · 01/04/2025 diff --git a/content/changelog/en/2025-04-24-version-1.7.11.md b/content/changelog/en/2025-04-24-version-1.7.11.md index 0d6ce8b18..7c598de25 100644 --- a/content/changelog/en/2025-04-24-version-1.7.11.md +++ b/content/changelog/en/2025-04-24-version-1.7.11.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 19 --- `patch release` · 24/04/2025 diff --git a/content/changelog/en/2025-05-14-version-1.7.12.md b/content/changelog/en/2025-05-14-version-1.7.12.md index 2ce65acf4..b31791690 100644 --- a/content/changelog/en/2025-05-14-version-1.7.12.md +++ b/content/changelog/en/2025-05-14-version-1.7.12.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 18 --- `patch release` · 14/05/2025 diff --git a/content/changelog/en/2025-06-02-version-1.7.13.md b/content/changelog/en/2025-06-02-version-1.7.13.md index 41d257063..890827a69 100644 --- a/content/changelog/en/2025-06-02-version-1.7.13.md +++ b/content/changelog/en/2025-06-02-version-1.7.13.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 17 --- `patch release` · 02/06/2025 diff --git a/content/changelog/en/2025-06-26-version-1.7.14.md b/content/changelog/en/2025-06-26-version-1.7.14.md index 0528904a6..60417f506 100644 --- a/content/changelog/en/2025-06-26-version-1.7.14.md +++ b/content/changelog/en/2025-06-26-version-1.7.14.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 16 --- `patch release` · 26/06/2025 diff --git a/content/changelog/en/2025-07-07-version-1.7.15.md b/content/changelog/en/2025-07-07-version-1.7.15.md index de9de9174..b708c9893 100644 --- a/content/changelog/en/2025-07-07-version-1.7.15.md +++ b/content/changelog/en/2025-07-07-version-1.7.15.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 15 --- `patch release` · 07/07/2025 diff --git a/content/changelog/en/2025-07-21-version-1.7.16.md b/content/changelog/en/2025-07-21-version-1.7.16.md index d86912db4..b2f16cf8a 100644 --- a/content/changelog/en/2025-07-21-version-1.7.16.md +++ b/content/changelog/en/2025-07-21-version-1.7.16.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 14 --- `patch release` · 21/07/2025 diff --git a/content/changelog/en/2025-10-01-version-2.0.0.md b/content/changelog/en/2025-10-01-version-2.0.0.md index 4725b14f1..fc8f14e37 100644 --- a/content/changelog/en/2025-10-01-version-2.0.0.md +++ b/content/changelog/en/2025-10-01-version-2.0.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 13 --- `major release` · 10/01/2025 diff --git a/content/changelog/en/2025-10-15-version-2.0.1.md b/content/changelog/en/2025-10-15-version-2.0.1.md index 587f9c53b..5d4238d9f 100644 --- a/content/changelog/en/2025-10-15-version-2.0.1.md +++ b/content/changelog/en/2025-10-15-version-2.0.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 12 --- `patch release` · 10/15/2025 diff --git a/content/changelog/en/2025-11-10-version-2.1.0.md b/content/changelog/en/2025-11-10-version-2.1.0.md index f027079a6..3d9524904 100644 --- a/content/changelog/en/2025-11-10-version-2.1.0.md +++ b/content/changelog/en/2025-11-10-version-2.1.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 11 --- `minor release` · 11/05/2025 diff --git a/content/changelog/en/2025-11-13-version-2.2.0.md b/content/changelog/en/2025-11-13-version-2.2.0.md index a4c80290b..30c6f7ecb 100644 --- a/content/changelog/en/2025-11-13-version-2.2.0.md +++ b/content/changelog/en/2025-11-13-version-2.2.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 10 --- `minor release` · 10/25/2025 diff --git a/content/changelog/en/2025-11-18-version-2.3.0.md b/content/changelog/en/2025-11-18-version-2.3.0.md index 93c13d615..769bc768e 100644 --- a/content/changelog/en/2025-11-18-version-2.3.0.md +++ b/content/changelog/en/2025-11-18-version-2.3.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 9 --- `minor release` · 11/18/2025 diff --git a/content/changelog/en/2025-12-01-version-2.3.1.md b/content/changelog/en/2025-12-01-version-2.3.1.md index fd36534e7..9cd807c1f 100644 --- a/content/changelog/en/2025-12-01-version-2.3.1.md +++ b/content/changelog/en/2025-12-01-version-2.3.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 8 --- `patch release` · 12/01/2025 diff --git a/content/changelog/en/2025-12-19-version-2.3.2.md b/content/changelog/en/2025-12-19-version-2.3.2.md index e8c520892..ce39840bf 100644 --- a/content/changelog/en/2025-12-19-version-2.3.2.md +++ b/content/changelog/en/2025-12-19-version-2.3.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 7 --- `patch release` · December 19, 2025 diff --git a/content/changelog/en/2026-01-20-version-2.4.0.md b/content/changelog/en/2026-01-20-version-2.4.0.md index 57586d85a..c9836e0f4 100644 --- a/content/changelog/en/2026-01-20-version-2.4.0.md +++ b/content/changelog/en/2026-01-20-version-2.4.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 6 --- `minor release` · 01/08/2026 diff --git a/content/changelog/en/2026-01-28-version-2.5.0.md b/content/changelog/en/2026-01-28-version-2.5.0.md index a48d84722..1a9fec2cb 100644 --- a/content/changelog/en/2026-01-28-version-2.5.0.md +++ b/content/changelog/en/2026-01-28-version-2.5.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 5 --- `minor release` · 01/22/2026 diff --git a/content/changelog/en/2026-02-04-version-2.5.1.md b/content/changelog/en/2026-02-04-version-2.5.1.md index 0c3f4e16c..569b15871 100644 --- a/content/changelog/en/2026-02-04-version-2.5.1.md +++ b/content/changelog/en/2026-02-04-version-2.5.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 4 --- `patch release` · 02/04/2026 diff --git a/content/changelog/en/2026-02-23-version-2.6.0.md b/content/changelog/en/2026-02-23-version-2.6.0.md index 893c6b0dd..a9c4ffc20 100644 --- a/content/changelog/en/2026-02-23-version-2.6.0.md +++ b/content/changelog/en/2026-02-23-version-2.6.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 3 --- `minor release` · February 23, 2026 diff --git a/content/changelog/en/2026-03-17-version-2.7.0.md b/content/changelog/en/2026-03-17-version-2.7.0.md index d9fb6ae28..250ec330a 100644 --- a/content/changelog/en/2026-03-17-version-2.7.0.md +++ b/content/changelog/en/2026-03-17-version-2.7.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 2 --- `minor release` · March 17, 2026 diff --git a/content/changelog/en/2026-03-26-version-2.8.0.md b/content/changelog/en/2026-03-26-version-2.8.0.md index 184ac344b..93610aa58 100644 --- a/content/changelog/en/2026-03-26-version-2.8.0.md +++ b/content/changelog/en/2026-03-26-version-2.8.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 1 --- `minor release` · March 26, 2026 diff --git a/content/changelog/es/2023-08-23-version-1.0.0.md b/content/changelog/es/2023-08-23-version-1.0.0.md index b5ca2ba98..e18c303df 100644 --- a/content/changelog/es/2023-08-23-version-1.0.0.md +++ b/content/changelog/es/2023-08-23-version-1.0.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 54 --- `major release` · 23/08/2023 diff --git a/content/changelog/es/2023-08-29-version-1.0.1.md b/content/changelog/es/2023-08-29-version-1.0.1.md index 314b25941..000986ecc 100644 --- a/content/changelog/es/2023-08-29-version-1.0.1.md +++ b/content/changelog/es/2023-08-29-version-1.0.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 53 --- `patch release` · 29/08/2023 diff --git a/content/changelog/es/2023-09-04-version-1.0.2.md b/content/changelog/es/2023-09-04-version-1.0.2.md index 36400bd9c..7bc889f24 100644 --- a/content/changelog/es/2023-09-04-version-1.0.2.md +++ b/content/changelog/es/2023-09-04-version-1.0.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 52 --- `patch release` · 04/09/2023 diff --git a/content/changelog/es/2023-09-25-version-1.0.3.md b/content/changelog/es/2023-09-25-version-1.0.3.md index 5c30df4c6..6adaa21db 100644 --- a/content/changelog/es/2023-09-25-version-1.0.3.md +++ b/content/changelog/es/2023-09-25-version-1.0.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 51 --- `patch release` · 25/09/2023 diff --git a/content/changelog/es/2023-10-11-version-1.0.4.md b/content/changelog/es/2023-10-11-version-1.0.4.md index c738da4e3..972f1f1a0 100644 --- a/content/changelog/es/2023-10-11-version-1.0.4.md +++ b/content/changelog/es/2023-10-11-version-1.0.4.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 50 --- `patch release` · 11/10/2023 diff --git a/content/changelog/es/2023-10-27-version-1.0.5.md b/content/changelog/es/2023-10-27-version-1.0.5.md index 488ec9cda..6e96ac2e4 100644 --- a/content/changelog/es/2023-10-27-version-1.0.5.md +++ b/content/changelog/es/2023-10-27-version-1.0.5.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 49 --- `patch release` · 27/10/2023 diff --git a/content/changelog/es/2023-11-06-version-1.1.0.md b/content/changelog/es/2023-11-06-version-1.1.0.md index a8bae7d4c..945af9164 100644 --- a/content/changelog/es/2023-11-06-version-1.1.0.md +++ b/content/changelog/es/2023-11-06-version-1.1.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 48 --- `minor release` · 06/11/2023 diff --git a/content/changelog/es/2023-12-05-version-1.1.1.md b/content/changelog/es/2023-12-05-version-1.1.1.md index 6f9d0a672..a07aeb574 100644 --- a/content/changelog/es/2023-12-05-version-1.1.1.md +++ b/content/changelog/es/2023-12-05-version-1.1.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 47 --- `patch release` · 05/12/2023 diff --git a/content/changelog/es/2024-01-05-version-1.2.0.md b/content/changelog/es/2024-01-05-version-1.2.0.md index a195a297a..6b182d9c4 100644 --- a/content/changelog/es/2024-01-05-version-1.2.0.md +++ b/content/changelog/es/2024-01-05-version-1.2.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 46 --- `minor release` · 05/01/2024 diff --git a/content/changelog/es/2024-01-12-version-1.2.1.md b/content/changelog/es/2024-01-12-version-1.2.1.md index 82a03fe45..3061d23ba 100644 --- a/content/changelog/es/2024-01-12-version-1.2.1.md +++ b/content/changelog/es/2024-01-12-version-1.2.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 45 --- `patch release` · 12/01/2024 diff --git a/content/changelog/es/2024-01-25-version-1.2.2.md b/content/changelog/es/2024-01-25-version-1.2.2.md index 89a850fd6..ac9c06304 100644 --- a/content/changelog/es/2024-01-25-version-1.2.2.md +++ b/content/changelog/es/2024-01-25-version-1.2.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 44 --- `patch release` · 25/01/2024 diff --git a/content/changelog/es/2024-02-05-version-1.2.3.md b/content/changelog/es/2024-02-05-version-1.2.3.md index 9dbf56d13..34267aa41 100644 --- a/content/changelog/es/2024-02-05-version-1.2.3.md +++ b/content/changelog/es/2024-02-05-version-1.2.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 43 --- `patch release` · 05/02/2024 diff --git a/content/changelog/es/2024-02-15-version-1.2.4.md b/content/changelog/es/2024-02-15-version-1.2.4.md index 9f143687d..24fbea8df 100644 --- a/content/changelog/es/2024-02-15-version-1.2.4.md +++ b/content/changelog/es/2024-02-15-version-1.2.4.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 42 --- `patch release` · 15/02/2024 diff --git a/content/changelog/es/2024-03-01-version-1.3.0.md b/content/changelog/es/2024-03-01-version-1.3.0.md index d45af96af..cc32bddb7 100644 --- a/content/changelog/es/2024-03-01-version-1.3.0.md +++ b/content/changelog/es/2024-03-01-version-1.3.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 41 --- `minor release` · 01/03/2024 diff --git a/content/changelog/es/2024-03-06-version-1.4.0.md b/content/changelog/es/2024-03-06-version-1.4.0.md index d4768ac92..653301e4e 100644 --- a/content/changelog/es/2024-03-06-version-1.4.0.md +++ b/content/changelog/es/2024-03-06-version-1.4.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 40 --- `minor release` · 06/03/2024 diff --git a/content/changelog/es/2024-04-11-version-1.4.1.md b/content/changelog/es/2024-04-11-version-1.4.1.md index 85607d63c..257919b4e 100644 --- a/content/changelog/es/2024-04-11-version-1.4.1.md +++ b/content/changelog/es/2024-04-11-version-1.4.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 39 --- `patch release` · 11/04/2024 diff --git a/content/changelog/es/2024-04-25-version-1.4.2.md b/content/changelog/es/2024-04-25-version-1.4.2.md index 3b009c561..1cbccc4c4 100644 --- a/content/changelog/es/2024-04-25-version-1.4.2.md +++ b/content/changelog/es/2024-04-25-version-1.4.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 38 --- `patch release` · 25/04/2024 diff --git a/content/changelog/es/2024-05-13-version-1.4.3.md b/content/changelog/es/2024-05-13-version-1.4.3.md index 2d6f645db..2972977da 100644 --- a/content/changelog/es/2024-05-13-version-1.4.3.md +++ b/content/changelog/es/2024-05-13-version-1.4.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 37 --- `patch release` · 13/05/2024 diff --git a/content/changelog/es/2024-05-23-version-1.5.0.md b/content/changelog/es/2024-05-23-version-1.5.0.md index 1abccf9d7..1657004d3 100644 --- a/content/changelog/es/2024-05-23-version-1.5.0.md +++ b/content/changelog/es/2024-05-23-version-1.5.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 36 --- `minor release` · 23/05/2024 diff --git a/content/changelog/es/2024-06-24-version-1.5.1.md b/content/changelog/es/2024-06-24-version-1.5.1.md index 40a880b03..8848f1484 100644 --- a/content/changelog/es/2024-06-24-version-1.5.1.md +++ b/content/changelog/es/2024-06-24-version-1.5.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 35 --- `patch release` · 24/06/2024 diff --git a/content/changelog/es/2024-08-12-version-1.6.0.md b/content/changelog/es/2024-08-12-version-1.6.0.md index 66838fbbe..a899e6297 100644 --- a/content/changelog/es/2024-08-12-version-1.6.0.md +++ b/content/changelog/es/2024-08-12-version-1.6.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 34 --- `minor release` · 12/08/2024 diff --git a/content/changelog/es/2024-08-22-version-1.6.1.md b/content/changelog/es/2024-08-22-version-1.6.1.md index 9c15c9425..0ee20f1ce 100644 --- a/content/changelog/es/2024-08-22-version-1.6.1.md +++ b/content/changelog/es/2024-08-22-version-1.6.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 33 --- `patch release` · 22/08/2024 diff --git a/content/changelog/es/2024-09-19-version-1.6.2.md b/content/changelog/es/2024-09-19-version-1.6.2.md index e10b4643c..868d4af18 100644 --- a/content/changelog/es/2024-09-19-version-1.6.2.md +++ b/content/changelog/es/2024-09-19-version-1.6.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 32 --- `patch release` · 19/09/2024 diff --git a/content/changelog/es/2024-09-27-version-1.6.3.md b/content/changelog/es/2024-09-27-version-1.6.3.md index 3dd55c8ec..6f19ee382 100644 --- a/content/changelog/es/2024-09-27-version-1.6.3.md +++ b/content/changelog/es/2024-09-27-version-1.6.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 31 --- `patch release` · 27/09/2024 diff --git a/content/changelog/es/2024-10-14-version-1.7.0.md b/content/changelog/es/2024-10-14-version-1.7.0.md index a6e51f3ce..95611cb65 100644 --- a/content/changelog/es/2024-10-14-version-1.7.0.md +++ b/content/changelog/es/2024-10-14-version-1.7.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 30 --- `minor release` · 14/10/2024 diff --git a/content/changelog/es/2024-10-30-version-1.7.1.md b/content/changelog/es/2024-10-30-version-1.7.1.md index 779df5ae3..a14f2c4b3 100644 --- a/content/changelog/es/2024-10-30-version-1.7.1.md +++ b/content/changelog/es/2024-10-30-version-1.7.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 29 --- `patch release` · 30/10/2024 diff --git a/content/changelog/es/2024-11-05-version-1.7.2.md b/content/changelog/es/2024-11-05-version-1.7.2.md index 5e76a6be8..4a79f31c4 100644 --- a/content/changelog/es/2024-11-05-version-1.7.2.md +++ b/content/changelog/es/2024-11-05-version-1.7.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 28 --- `patch release` · 05/11/2024 diff --git a/content/changelog/es/2024-11-14-version-1.7.3.md b/content/changelog/es/2024-11-14-version-1.7.3.md index d1cacb695..52ff4422d 100644 --- a/content/changelog/es/2024-11-14-version-1.7.3.md +++ b/content/changelog/es/2024-11-14-version-1.7.3.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 27 --- `patch release` · 14/11/2024 diff --git a/content/changelog/es/2024-12-05-version-1.7.4.md b/content/changelog/es/2024-12-05-version-1.7.4.md index 36041e369..d18742706 100644 --- a/content/changelog/es/2024-12-05-version-1.7.4.md +++ b/content/changelog/es/2024-12-05-version-1.7.4.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 26 --- `patch release` · 05/12/2024 diff --git a/content/changelog/es/2024-12-09-version-1.7.5.md b/content/changelog/es/2024-12-09-version-1.7.5.md index 37d6824bf..47963aba2 100644 --- a/content/changelog/es/2024-12-09-version-1.7.5.md +++ b/content/changelog/es/2024-12-09-version-1.7.5.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 25 --- `patch release` · 09/12/2024 diff --git a/content/changelog/es/2025-01-06-version-1.7.6.md b/content/changelog/es/2025-01-06-version-1.7.6.md index c55080c5f..5317d4193 100644 --- a/content/changelog/es/2025-01-06-version-1.7.6.md +++ b/content/changelog/es/2025-01-06-version-1.7.6.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 24 --- `patch release` · 06/01/2025 diff --git a/content/changelog/es/2025-02-05-version-1.7.7.md b/content/changelog/es/2025-02-05-version-1.7.7.md index 36becfe2d..9aadf2710 100644 --- a/content/changelog/es/2025-02-05-version-1.7.7.md +++ b/content/changelog/es/2025-02-05-version-1.7.7.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 23 --- `patch release` · 05/02/2025 diff --git a/content/changelog/es/2025-02-10-version-1.7.8.md b/content/changelog/es/2025-02-10-version-1.7.8.md index 05155f43a..f3d1cc189 100644 --- a/content/changelog/es/2025-02-10-version-1.7.8.md +++ b/content/changelog/es/2025-02-10-version-1.7.8.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 22 --- `patch release` · 10/02/2025 diff --git a/content/changelog/es/2025-02-17-version-1.7.9.md b/content/changelog/es/2025-02-17-version-1.7.9.md index 631405d1c..6ca48d3e6 100644 --- a/content/changelog/es/2025-02-17-version-1.7.9.md +++ b/content/changelog/es/2025-02-17-version-1.7.9.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 21 --- `patch release` · 17/02/2025 diff --git a/content/changelog/es/2025-04-01-version-1.7.10.md b/content/changelog/es/2025-04-01-version-1.7.10.md index 0e5b88f04..46b8dfcad 100644 --- a/content/changelog/es/2025-04-01-version-1.7.10.md +++ b/content/changelog/es/2025-04-01-version-1.7.10.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 20 --- `patch release` · 01/04/2025 diff --git a/content/changelog/es/2025-04-24-version-1.7.11.md b/content/changelog/es/2025-04-24-version-1.7.11.md index e3d9319c2..8d3c1d8e5 100644 --- a/content/changelog/es/2025-04-24-version-1.7.11.md +++ b/content/changelog/es/2025-04-24-version-1.7.11.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 19 --- `patch release` · 24/04/2025 diff --git a/content/changelog/es/2025-05-14-version-1.7.12.md b/content/changelog/es/2025-05-14-version-1.7.12.md index cb290aa19..0b3ea6dfa 100644 --- a/content/changelog/es/2025-05-14-version-1.7.12.md +++ b/content/changelog/es/2025-05-14-version-1.7.12.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 18 --- `patch release` · 14/05/2025 diff --git a/content/changelog/es/2025-06-02-version-1.7.13.md b/content/changelog/es/2025-06-02-version-1.7.13.md index b17f166ce..86480d359 100644 --- a/content/changelog/es/2025-06-02-version-1.7.13.md +++ b/content/changelog/es/2025-06-02-version-1.7.13.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 17 --- `patch release` · 02/06/2025 diff --git a/content/changelog/es/2025-06-26-version-1.7.14.md b/content/changelog/es/2025-06-26-version-1.7.14.md index cf84ac7b4..965e64900 100644 --- a/content/changelog/es/2025-06-26-version-1.7.14.md +++ b/content/changelog/es/2025-06-26-version-1.7.14.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 16 --- `patch release` · 26/06/2025 diff --git a/content/changelog/es/2025-07-07-version-1.7.15.md b/content/changelog/es/2025-07-07-version-1.7.15.md index 429c549e3..4acca0c8f 100644 --- a/content/changelog/es/2025-07-07-version-1.7.15.md +++ b/content/changelog/es/2025-07-07-version-1.7.15.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 15 --- `patch release` · 07/07/2025 diff --git a/content/changelog/es/2025-07-21-version-1.7.16.md b/content/changelog/es/2025-07-21-version-1.7.16.md index d018f5703..aaac47395 100644 --- a/content/changelog/es/2025-07-21-version-1.7.16.md +++ b/content/changelog/es/2025-07-21-version-1.7.16.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 14 --- `patch release` · 21/07/2025 diff --git a/content/changelog/es/2025-10-01-version-2.0.0.md b/content/changelog/es/2025-10-01-version-2.0.0.md index 712be32cc..f66bf27e2 100644 --- a/content/changelog/es/2025-10-01-version-2.0.0.md +++ b/content/changelog/es/2025-10-01-version-2.0.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 13 --- `major release` · 01/10/2025 diff --git a/content/changelog/es/2025-10-15-version-2.0.1.md b/content/changelog/es/2025-10-15-version-2.0.1.md index e2b077ebf..bcb2fe243 100644 --- a/content/changelog/es/2025-10-15-version-2.0.1.md +++ b/content/changelog/es/2025-10-15-version-2.0.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 12 --- `patch release` · 15/10/2025 diff --git a/content/changelog/es/2025-11-10-version-2.1.0.md b/content/changelog/es/2025-11-10-version-2.1.0.md index 4d8834770..24d84194c 100644 --- a/content/changelog/es/2025-11-10-version-2.1.0.md +++ b/content/changelog/es/2025-11-10-version-2.1.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 11 --- `minor release` · 10/11/2025 diff --git a/content/changelog/es/2025-11-13-version-2.2.0.md b/content/changelog/es/2025-11-13-version-2.2.0.md index 4d591a90b..8a39ac574 100644 --- a/content/changelog/es/2025-11-13-version-2.2.0.md +++ b/content/changelog/es/2025-11-13-version-2.2.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 10 --- `minor release` · 13/11/2025 diff --git a/content/changelog/es/2025-11-18-version-2.3.0.md b/content/changelog/es/2025-11-18-version-2.3.0.md index 51408d6be..47ab9bf92 100644 --- a/content/changelog/es/2025-11-18-version-2.3.0.md +++ b/content/changelog/es/2025-11-18-version-2.3.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 9 --- `minor release` · 18/11/2025 diff --git a/content/changelog/es/2025-12-01-version-2.3.1.md b/content/changelog/es/2025-12-01-version-2.3.1.md index dab4d5c59..2d66d0998 100644 --- a/content/changelog/es/2025-12-01-version-2.3.1.md +++ b/content/changelog/es/2025-12-01-version-2.3.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 8 --- `patch release` · 01/12/2025 diff --git a/content/changelog/es/2025-12-19-version-2.3.2.md b/content/changelog/es/2025-12-19-version-2.3.2.md index 305345787..deb39af33 100644 --- a/content/changelog/es/2025-12-19-version-2.3.2.md +++ b/content/changelog/es/2025-12-19-version-2.3.2.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 7 --- `patch release` · December 19, 2025 diff --git a/content/changelog/es/2026-01-20-version-2.4.0.md b/content/changelog/es/2026-01-20-version-2.4.0.md index bde392697..5c18e1899 100644 --- a/content/changelog/es/2026-01-20-version-2.4.0.md +++ b/content/changelog/es/2026-01-20-version-2.4.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 6 --- `minor release` · 01/08/2026 diff --git a/content/changelog/es/2026-01-28-version-2.5.0.md b/content/changelog/es/2026-01-28-version-2.5.0.md index def661e30..2ff72ce1b 100644 --- a/content/changelog/es/2026-01-28-version-2.5.0.md +++ b/content/changelog/es/2026-01-28-version-2.5.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 5 --- `minor release` · 22/01/2026 diff --git a/content/changelog/es/2026-02-04-version-2.5.1.md b/content/changelog/es/2026-02-04-version-2.5.1.md index 3cb6f572c..8f08fe990 100644 --- a/content/changelog/es/2026-02-04-version-2.5.1.md +++ b/content/changelog/es/2026-02-04-version-2.5.1.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 4 --- `patch release` · 04/02/2026 diff --git a/content/changelog/es/2026-02-23-version-2.6.0.md b/content/changelog/es/2026-02-23-version-2.6.0.md index 253cbe0a3..74e3fff87 100644 --- a/content/changelog/es/2026-02-23-version-2.6.0.md +++ b/content/changelog/es/2026-02-23-version-2.6.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 3 --- `minor release` · February 23, 2026 diff --git a/content/changelog/es/2026-03-17-version-2.7.0.md b/content/changelog/es/2026-03-17-version-2.7.0.md index 2976e071f..990cf0033 100644 --- a/content/changelog/es/2026-03-17-version-2.7.0.md +++ b/content/changelog/es/2026-03-17-version-2.7.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 2 --- `release menor` · 17 de marzo de 2026 diff --git a/content/changelog/es/2026-03-26-version-2.8.0.md b/content/changelog/es/2026-03-26-version-2.8.0.md index bee2f7268..b5ef136c4 100644 --- a/content/changelog/es/2026-03-26-version-2.8.0.md +++ b/content/changelog/es/2026-03-26-version-2.8.0.md @@ -4,6 +4,7 @@ authors: - name: SleakOps Team tags: - release +sidebar_position: 1 --- `lanzamiento menor` · 26 de marzo de 2026 diff --git a/content/docs/en/cluster/addons/kubecost.mdx b/content/docs/en/cluster/addons/kubecost.mdx index 1602615e0..fb92251fd 100644 --- a/content/docs/en/cluster/addons/kubecost.mdx +++ b/content/docs/en/cluster/addons/kubecost.mdx @@ -2,6 +2,7 @@ sidebar_label: Kubecost pagination_back: cluster/addons/grafana pagination_next: environment/index +sidebar_position: 5 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/addons/loki.mdx b/content/docs/en/cluster/addons/loki.mdx index 101fba06f..06c88795b 100644 --- a/content/docs/en/cluster/addons/loki.mdx +++ b/content/docs/en/cluster/addons/loki.mdx @@ -2,6 +2,7 @@ sidebar_label: Loki pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/addons/otel.mdx b/content/docs/en/cluster/addons/otel.mdx index 103ddb813..d57e9b6d8 100644 --- a/content/docs/en/cluster/addons/otel.mdx +++ b/content/docs/en/cluster/addons/otel.mdx @@ -2,6 +2,7 @@ sidebar_label: Open Telemetry pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost +sidebar_position: 7 --- import Zoom from "react-medium-image-zoom"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/cluster/addons/prometheus.mdx b/content/docs/en/cluster/addons/prometheus.mdx index 88630cc84..06259c5a5 100644 --- a/content/docs/en/cluster/addons/prometheus.mdx +++ b/content/docs/en/cluster/addons/prometheus.mdx @@ -2,6 +2,7 @@ sidebar_label: Prometheus pagination_back: cluster/addons pagination_next: cluster/addons/grafana +sidebar_position: 8 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/domain/delegation.mdx b/content/docs/en/domain/delegation.mdx index 32011a50b..571a4f889 100644 --- a/content/docs/en/domain/delegation.mdx +++ b/content/docs/en/domain/delegation.mdx @@ -1,5 +1,6 @@ --- sidebar_label: Domain Delegation Guide +sidebar_position: 1 --- # Domain Delegation Guide diff --git a/content/docs/en/domain/setup.mdx b/content/docs/en/domain/setup.mdx index 49de8ddf4..2358b0346 100644 --- a/content/docs/en/domain/setup.mdx +++ b/content/docs/en/domain/setup.mdx @@ -1,5 +1,6 @@ --- sidebar_label: Setup your Domains +sidebar_position: 3 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/dependency/faqs.mdx b/content/docs/en/project/dependency/faqs.mdx index 1e1c0e293..9ebbfe0d9 100644 --- a/content/docs/en/project/dependency/faqs.mdx +++ b/content/docs/en/project/dependency/faqs.mdx @@ -1,5 +1,6 @@ --- title: FAQs +sidebar_position: 3 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/vargroup/index.mdx b/content/docs/en/project/vargroup/index.mdx index 262ee5b6f..2063d3777 100644 --- a/content/docs/en/project/vargroup/index.mdx +++ b/content/docs/en/project/vargroup/index.mdx @@ -1,5 +1,6 @@ --- title: Variable Groups +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/workload/job.mdx b/content/docs/en/project/workload/job.mdx index a2a240d04..24837e132 100644 --- a/content/docs/en/project/workload/job.mdx +++ b/content/docs/en/project/workload/job.mdx @@ -1,5 +1,6 @@ --- title: Job +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/provider/schemas.mdx b/content/docs/en/provider/schemas.mdx index 277810b0c..080429538 100644 --- a/content/docs/en/provider/schemas.mdx +++ b/content/docs/en/provider/schemas.mdx @@ -1,6 +1,7 @@ --- pagination_next: cluster/index pagination_back: cluster/index +sidebar_position: 5 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/test.mdx b/content/docs/en/test.mdx index e9ae652a1..7ed05ffd2 100644 --- a/content/docs/en/test.mdx +++ b/content/docs/en/test.mdx @@ -1,7 +1,7 @@ --- title: Test sidebar_label: Test -sidebar_position: null +sidebar_position: 8 --- Test diff --git a/content/docs/es/cluster/addons/kubecost.mdx b/content/docs/es/cluster/addons/kubecost.mdx index 23a9cf968..561bba3e7 100644 --- a/content/docs/es/cluster/addons/kubecost.mdx +++ b/content/docs/es/cluster/addons/kubecost.mdx @@ -2,6 +2,7 @@ sidebar_label: Kubecost pagination_back: cluster/addons/grafana pagination_next: environment/index +sidebar_position: 5 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/addons/loki.mdx b/content/docs/es/cluster/addons/loki.mdx index d52d8765d..f61f21373 100644 --- a/content/docs/es/cluster/addons/loki.mdx +++ b/content/docs/es/cluster/addons/loki.mdx @@ -2,6 +2,7 @@ sidebar_label: Loki pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/addons/otel.mdx b/content/docs/es/cluster/addons/otel.mdx index 103ddb813..d57e9b6d8 100644 --- a/content/docs/es/cluster/addons/otel.mdx +++ b/content/docs/es/cluster/addons/otel.mdx @@ -2,6 +2,7 @@ sidebar_label: Open Telemetry pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost +sidebar_position: 7 --- import Zoom from "react-medium-image-zoom"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/cluster/addons/prometheus.mdx b/content/docs/es/cluster/addons/prometheus.mdx index 19cca90d7..ef21ced71 100644 --- a/content/docs/es/cluster/addons/prometheus.mdx +++ b/content/docs/es/cluster/addons/prometheus.mdx @@ -2,6 +2,7 @@ sidebar_label: Prometheus pagination_back: cluster/addons pagination_next: cluster/addons/grafana +sidebar_position: 8 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/domain/delegation.mdx b/content/docs/es/domain/delegation.mdx index c71ccd55c..4d5753cff 100644 --- a/content/docs/es/domain/delegation.mdx +++ b/content/docs/es/domain/delegation.mdx @@ -1,5 +1,6 @@ --- sidebar_label: Guía de Delegación de Dominios +sidebar_position: 1 --- # Guía de Delegación de Dominios diff --git a/content/docs/es/project/dependency/faqs.mdx b/content/docs/es/project/dependency/faqs.mdx index e34e1b07b..b2d97642f 100644 --- a/content/docs/es/project/dependency/faqs.mdx +++ b/content/docs/es/project/dependency/faqs.mdx @@ -1,5 +1,6 @@ --- title: FAQs +sidebar_position: 3 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/vargroup/index.mdx b/content/docs/es/project/vargroup/index.mdx index 41f910a48..df5fff83d 100644 --- a/content/docs/es/project/vargroup/index.mdx +++ b/content/docs/es/project/vargroup/index.mdx @@ -1,5 +1,6 @@ --- title: Variable Groups +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/workload/job.mdx b/content/docs/es/project/workload/job.mdx index 44cab0c96..a492c448b 100644 --- a/content/docs/es/project/workload/job.mdx +++ b/content/docs/es/project/workload/job.mdx @@ -1,5 +1,6 @@ --- title: Job +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/provider/schemas.mdx b/content/docs/es/provider/schemas.mdx index 548ba50df..0cd43dd09 100644 --- a/content/docs/es/provider/schemas.mdx +++ b/content/docs/es/provider/schemas.mdx @@ -1,5 +1,6 @@ --- pagination_next: cluster/index +sidebar_position: 5 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/quickstart/django_celery/index.mdx b/content/docs/es/quickstart/django_celery/index.mdx index 3f8aec98a..16232cd43 100644 --- a/content/docs/es/quickstart/django_celery/index.mdx +++ b/content/docs/es/quickstart/django_celery/index.mdx @@ -2,6 +2,7 @@ id: django-celery title: Django + Celery sidebar_label: Django + Celery +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; diff --git a/content/docs/es/quickstart/n8n/index.mdx b/content/docs/es/quickstart/n8n/index.mdx index eaaabe9bc..325d26fa8 100644 --- a/content/docs/es/quickstart/n8n/index.mdx +++ b/content/docs/es/quickstart/n8n/index.mdx @@ -2,6 +2,7 @@ id: n8n-worker title: n8n + Modo Worker sidebar_label: n8n + Modo Worker +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; diff --git a/content/docs/es/test.mdx b/content/docs/es/test.mdx index 31daf423d..c1e18dd83 100644 --- a/content/docs/es/test.mdx +++ b/content/docs/es/test.mdx @@ -1,7 +1,7 @@ --- title: Prueba sidebar_label: Prueba -sidebar_position: null +sidebar_position: 8 --- Prueba diff --git a/sidebars.js b/sidebars.js index 68fa4aead..a7d751476 100644 --- a/sidebars.js +++ b/sidebars.js @@ -2,57 +2,7 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { - tutorialSidebar: [ - 'index', - 'basicconcepts', - 'gettingstarted', - { - type: 'category', - label: 'Providers', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'provider' }], - }, - { - type: 'category', - label: 'Cluster', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'cluster' }], - }, - { - type: 'category', - label: 'Environment', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'environment' }], - }, - { - type: 'category', - label: 'Project', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'project' }], - }, - 'connect_to_git', - { - type: 'category', - label: 'Domain', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'domain' }], - }, - { - type: 'category', - label: 'Network Resources', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'network' }], - }, - { - type: 'category', - label: 'User', - link: { type: 'generated-index' }, - items: [{ type: 'autogenerated', dirName: 'user' }], - }, - 'responsability-model', - 'cli', - 'changelog', - ], + tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], }; module.exports = sidebars; From ef744abae0c01cd30dd77b4271128623aac9bc53 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Wed, 1 Apr 2026 19:40:31 -0300 Subject: [PATCH 38/45] =?UTF-8?q?Create=20=F0=9F=93=96=20Documentation=20R?= =?UTF-8?q?oot=20=E2=80=9Ctest2=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/test2.mdx | 7 +++++++ content/docs/es/test2.mdx | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 content/docs/en/test2.mdx create mode 100644 content/docs/es/test2.mdx diff --git a/content/docs/en/test2.mdx b/content/docs/en/test2.mdx new file mode 100644 index 000000000..c886cd927 --- /dev/null +++ b/content/docs/en/test2.mdx @@ -0,0 +1,7 @@ +--- +title: Test2 +sidebar_label: Test2 +sidebar_position: null +--- + +Test2 diff --git a/content/docs/es/test2.mdx b/content/docs/es/test2.mdx new file mode 100644 index 000000000..c886cd927 --- /dev/null +++ b/content/docs/es/test2.mdx @@ -0,0 +1,7 @@ +--- +title: Test2 +sidebar_label: Test2 +sidebar_position: null +--- + +Test2 From 8518d157ab7a26aa814317e7bc516ce08187e3cd Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Wed, 1 Apr 2026 19:58:44 -0300 Subject: [PATCH 39/45] =?UTF-8?q?Delete=20=F0=9F=93=96=20Documentation=20R?= =?UTF-8?q?oot=20=E2=80=9Ctest2=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/test.mdx | 7 ------- content/docs/en/test2.mdx | 7 ------- content/docs/es/test.mdx | 7 ------- content/docs/es/test2.mdx | 7 ------- 4 files changed, 28 deletions(-) delete mode 100644 content/docs/en/test.mdx delete mode 100644 content/docs/en/test2.mdx delete mode 100644 content/docs/es/test.mdx delete mode 100644 content/docs/es/test2.mdx diff --git a/content/docs/en/test.mdx b/content/docs/en/test.mdx deleted file mode 100644 index 7ed05ffd2..000000000 --- a/content/docs/en/test.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Test -sidebar_label: Test -sidebar_position: 8 ---- - -Test diff --git a/content/docs/en/test2.mdx b/content/docs/en/test2.mdx deleted file mode 100644 index c886cd927..000000000 --- a/content/docs/en/test2.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Test2 -sidebar_label: Test2 -sidebar_position: null ---- - -Test2 diff --git a/content/docs/es/test.mdx b/content/docs/es/test.mdx deleted file mode 100644 index c1e18dd83..000000000 --- a/content/docs/es/test.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Prueba -sidebar_label: Prueba -sidebar_position: 8 ---- - -Prueba diff --git a/content/docs/es/test2.mdx b/content/docs/es/test2.mdx deleted file mode 100644 index c886cd927..000000000 --- a/content/docs/es/test2.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Test2 -sidebar_label: Test2 -sidebar_position: null ---- - -Test2 From c18b624aa346bb0c9ee76e1c9fb287b09132778a Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:41:18 -0300 Subject: [PATCH 40/45] =?UTF-8?q?Create=20=F0=9F=93=96=20Documentation=20R?= =?UTF-8?q?oot=20=E2=80=9Ctest=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/test.mdx | 7 +++++++ content/docs/es/test.mdx | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 content/docs/en/test.mdx create mode 100644 content/docs/es/test.mdx diff --git a/content/docs/en/test.mdx b/content/docs/en/test.mdx new file mode 100644 index 000000000..dcf16d9a3 --- /dev/null +++ b/content/docs/en/test.mdx @@ -0,0 +1,7 @@ +--- +title: test +sidebar_label: test +sidebar_position: null +--- + +test diff --git a/content/docs/es/test.mdx b/content/docs/es/test.mdx new file mode 100644 index 000000000..dcf16d9a3 --- /dev/null +++ b/content/docs/es/test.mdx @@ -0,0 +1,7 @@ +--- +title: test +sidebar_label: test +sidebar_position: null +--- + +test From eb50f60785000097acb3e2c3dac75a19642e3a40 Mon Sep 17 00:00:00 2001 From: sleakops-generic <132616587+sleakops-generic@users.noreply.github.com> Date: Mon, 6 Apr 2026 06:14:32 -0300 Subject: [PATCH 41/45] =?UTF-8?q?Delete=20=F0=9F=93=96=20Documentation=20R?= =?UTF-8?q?oot=20=E2=80=9Ctest=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/test.mdx | 7 ------- content/docs/es/test.mdx | 7 ------- 2 files changed, 14 deletions(-) delete mode 100644 content/docs/en/test.mdx delete mode 100644 content/docs/es/test.mdx diff --git a/content/docs/en/test.mdx b/content/docs/en/test.mdx deleted file mode 100644 index dcf16d9a3..000000000 --- a/content/docs/en/test.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: test -sidebar_label: test -sidebar_position: null ---- - -test diff --git a/content/docs/es/test.mdx b/content/docs/es/test.mdx deleted file mode 100644 index dcf16d9a3..000000000 --- a/content/docs/es/test.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: test -sidebar_label: test -sidebar_position: null ---- - -test From 5051868121c29169efa7b2c3c25f0c880c4d2d2d Mon Sep 17 00:00:00 2001 From: Matias Izquierdo Date: Mon, 6 Apr 2026 06:38:59 -0300 Subject: [PATCH 42/45] chore: minor changes to icons on cms --- static/admin/config.yml | 59 +++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/static/admin/config.yml b/static/admin/config.yml index 2a1adf4ca..4ce1459ca 100644 --- a/static/admin/config.yml +++ b/static/admin/config.yml @@ -20,7 +20,8 @@ collections: # Documentation Root - archivos directamente en content/docs// - name: docs-root - label: "📖 Documentation Root" + label: "Documentation Root" + icon: home folder: content/docs path: "{{slug}}" create: true @@ -30,7 +31,7 @@ collections: identifier_field: title index_file: name: index - label: "📄 Index" + label: "Index" fields: - { name: title, label: Title, widget: string, i18n: true } - { @@ -51,7 +52,8 @@ collections: # Cluster - name: docs-cluster - label: "🖥️ Cluster" + label: "Cluster" + icon: dns folder: content/docs path: "cluster/{{slug}}" create: true @@ -79,7 +81,8 @@ collections: # Cluster > Addons - name: docs-cluster-addons - label: "🖥️ Cluster > Addons" + label: "Cluster > Addons" + icon: dns folder: content/docs path: "cluster/addons/{{slug}}" create: true @@ -107,7 +110,8 @@ collections: # Cluster > Nodepools - name: docs-cluster-nodepools - label: "🖥️ Cluster > Nodepools" + label: "Cluster > Nodepools" + icon: dns folder: content/docs path: "cluster/nodepools/{{slug}}" create: true @@ -135,7 +139,8 @@ collections: # Domain - name: docs-domain - label: "🌐 Domain" + label: "Domain" + icon: language folder: content/docs path: "domain/{{slug}}" create: true @@ -163,7 +168,8 @@ collections: # Environment - name: docs-environment - label: "🔧 Environment" + label: "Environment" + icon: circle folder: content/docs path: "environment/{{slug}}" create: true @@ -191,7 +197,8 @@ collections: # Network - name: docs-network - label: "🔗 Network" + label: "Network" + icon: flowchart folder: content/docs path: "network/{{slug}}" create: true @@ -219,7 +226,8 @@ collections: # Project - name: docs-project - label: "📦 Project" + label: "Project" + icon: view_cozy folder: content/docs path: "project/{{slug}}" create: true @@ -247,7 +255,8 @@ collections: # Project > Build - name: docs-project-build - label: "📦 Project > Build" + label: "Project > Build" + icon: view_cozy folder: content/docs path: "project/build/{{slug}}" create: true @@ -275,7 +284,8 @@ collections: # Project > Chart - name: docs-project-chart - label: "📦 Project > Chart" + label: "Project > Chart" + icon: view_cozy folder: content/docs path: "project/chart/{{slug}}" create: true @@ -303,7 +313,8 @@ collections: # Project > Dependency - name: docs-project-dependency - label: "📦 Project > Dependency" + label: "Project > Dependency" + icon: view_cozy folder: content/docs path: "project/dependency/{{slug}}" create: true @@ -331,7 +342,8 @@ collections: # Project > Deployment - name: docs-project-deployment - label: "📦 Project > Deployment" + label: "Project > Deployment" + icon: rocket_launch folder: content/docs path: "project/deployment/{{slug}}" create: true @@ -359,7 +371,8 @@ collections: # Project > Vargroup - name: docs-project-vargroup - label: "📦 Project > Vargroup" + label: "Project > Vargroup" + icon: view_cozy folder: content/docs path: "project/vargroup/{{slug}}" create: true @@ -387,7 +400,8 @@ collections: # Project > Workload - name: docs-project-workload - label: "📦 Project > Workload" + label: "Project > Workload" + icon: view_cozy folder: content/docs path: "project/workload/{{slug}}" create: true @@ -415,7 +429,8 @@ collections: # Provider - name: docs-provider - label: "☁️ Provider" + label: "Provider" + icon: cloud folder: content/docs path: "provider/{{slug}}" create: true @@ -443,7 +458,8 @@ collections: # Quickstart - name: docs-quickstart - label: "🚀 Quickstart" + label: "Quickstart" + icon: bolt folder: content/docs path: "quickstart/{{slug}}" create: true @@ -471,7 +487,8 @@ collections: # User - name: docs-user - label: "👤 User" + label: "User" + icon: person folder: content/docs path: "user/{{slug}}" create: true @@ -502,7 +519,8 @@ collections: # ============================================ - name: tutorials - label: "📚 Tutorials" + label: "Tutorials" + icon: menu_book folder: content/tutorials path: "{{slug}}" media_folder: "/static/img/tutorials/{{slug}}" @@ -567,7 +585,8 @@ collections: # ============================================ - name: changelog - label: "📝 Changelog" + label: "Changelog" + icon: history folder: content/changelog path: "{{slug}}" create: true From b093dd96feb03ad985ba55ad94fc976787b8fe74 Mon Sep 17 00:00:00 2001 From: Matias Izquierdo Date: Mon, 6 Apr 2026 07:58:53 -0300 Subject: [PATCH 43/45] chore: reordered all documents --- content/docs/en/cli.mdx | 2 +- content/docs/en/cluster/access-cluster.mdx | 3 + content/docs/en/cluster/addons/ebs.mdx | 3 + content/docs/en/cluster/addons/efs.mdx | 3 + content/docs/en/cluster/addons/grafana.mdx | 3 + content/docs/en/cluster/addons/index.mdx | 3 + content/docs/en/cluster/addons/kubecost.mdx | 2 +- content/docs/en/cluster/addons/loki.mdx | 2 +- content/docs/en/cluster/addons/otel.mdx | 2 +- content/docs/en/cluster/addons/prometheus.mdx | 2 +- content/docs/en/cluster/index.mdx | 2 +- .../cluster/nodepools/creating-nodepool.mdx | 3 + content/docs/en/cluster/nodepools/index.mdx | 3 + .../en/cluster/nodepools/instance-types.mdx | 3 + .../cluster/nodepools/managing-nodepool.mdx | 3 + content/docs/en/cluster/shutdown-cluster.mdx | 3 + content/docs/en/connect_to_git.mdx | 2 +- content/docs/en/domain/index.mdx | 2 +- content/docs/en/domain/setup.mdx | 2 +- content/docs/en/environment/index.mdx | 2 +- content/docs/en/network/index.mdx | 2 +- content/docs/en/project/access_config.mdx | 2 +- content/docs/en/project/build/build.mdx | 3 + content/docs/en/project/build_resources.mdx | 2 +- .../en/project/chart/chart_dependencies.mdx | 3 + .../docs/en/project/chart/extra_templates.mdx | 3 + content/docs/en/project/chart/index.mdx | 3 + .../en/project/configure_your_dockerfile.mdx | 2 +- .../project/dependency/aurora-mysql-aws.mdx | 3 + .../dependency/aurora-postgresql-aws.mdx | 3 + content/docs/en/project/dependency/faqs.mdx | 2 +- content/docs/en/project/dependency/index.mdx | 2 +- .../en/project/dependency/mariadb-aws.mdx | 3 + .../en/project/dependency/memcached-aws.mdx | 3 + .../docs/en/project/dependency/msk-aws.mdx | 3 + .../docs/en/project/dependency/mysql-aws.mdx | 3 + .../en/project/dependency/opensearch-aws.mdx | 3 + .../docs/en/project/dependency/oracle-aws.mdx | 3 + .../en/project/dependency/postgresql-aws.mdx | 3 + .../docs/en/project/dependency/redis-aws.mdx | 3 + .../en/project/dependency/s3bucket-aws.mdx | 3 + .../docs/en/project/dependency/sqs-aws.mdx | 3 + content/docs/en/project/deployment/index.mdx | 3 + .../project/deployment/more_on_deployment.mdx | 3 + .../docs/en/project/deployment/release.mdx | 3 + content/docs/en/project/dockertron.mdx | 2 +- content/docs/en/project/index.mdx | 2 +- content/docs/en/project/vargroup/index.mdx | 2 +- content/docs/en/project/volumes.mdx | 3 + content/docs/en/project/workload/hook.mdx | 3 + content/docs/en/project/workload/index.mdx | 3 + content/docs/en/provider/accounts.mdx | 2 +- .../docs/en/provider/deleting-a-provider.mdx | 2 +- content/docs/en/provider/schemas.mdx | 2 +- .../en/user/aws_console_authentication.mdx | 3 + content/docs/en/user/index.mdx | 2 +- content/docs/en/user/vpn.mdx | 3 + content/docs/es/cli.mdx | 2 +- content/docs/es/cluster/access-cluster.mdx | 3 + content/docs/es/cluster/addons/ebs.mdx | 3 + content/docs/es/cluster/addons/efs.mdx | 3 + content/docs/es/cluster/addons/grafana.mdx | 3 + content/docs/es/cluster/addons/index.mdx | 3 + content/docs/es/cluster/addons/kubecost.mdx | 2 +- content/docs/es/cluster/addons/loki.mdx | 2 +- content/docs/es/cluster/addons/otel.mdx | 2 +- content/docs/es/cluster/addons/prometheus.mdx | 2 +- content/docs/es/cluster/index.mdx | 2 +- .../cluster/nodepools/creating-nodepool.mdx | 3 + content/docs/es/cluster/nodepools/index.mdx | 3 + .../es/cluster/nodepools/instance-types.mdx | 3 + .../cluster/nodepools/managing-nodepool.mdx | 3 + content/docs/es/cluster/shutdown-cluster.mdx | 3 + content/docs/es/connect_to_git.mdx | 2 +- content/docs/es/domain/index.mdx | 2 +- content/docs/es/domain/setup.mdx | 2 +- content/docs/es/environment/index.mdx | 2 +- content/docs/es/network/index.mdx | 2 +- content/docs/es/project/access_config.mdx | 2 +- content/docs/es/project/build/build.mdx | 3 + content/docs/es/project/build/index.mdx | 3 + content/docs/es/project/build_resources.mdx | 2 +- .../es/project/chart/chart_dependencies.mdx | 3 + .../docs/es/project/chart/extra_templates.mdx | 3 + content/docs/es/project/chart/index.mdx | 3 + .../es/project/configure_your_dockerfile.mdx | 2 +- .../project/dependency/aurora-mysql-aws.mdx | 3 + .../dependency/aurora-postgresql-aws.mdx | 3 + content/docs/es/project/dependency/faqs.mdx | 2 +- content/docs/es/project/dependency/index.mdx | 2 +- .../es/project/dependency/mariadb-aws.mdx | 3 + .../es/project/dependency/memcached-aws.mdx | 3 + .../docs/es/project/dependency/msk-aws.mdx | 3 + .../docs/es/project/dependency/mysql-aws.mdx | 3 + .../es/project/dependency/opensearch-aws.mdx | 3 + .../docs/es/project/dependency/oracle-aws.mdx | 160 ++++++++++++++++++ .../es/project/dependency/postgresql-aws.mdx | 3 + .../docs/es/project/dependency/redis-aws.mdx | 3 + .../es/project/dependency/s3bucket-aws.mdx | 3 + .../docs/es/project/dependency/sqs-aws.mdx | 3 + content/docs/es/project/deployment/index.mdx | 3 + .../project/deployment/more_on_deployment.mdx | 3 + .../docs/es/project/deployment/release.mdx | 3 + content/docs/es/project/dockertron.mdx | 2 +- content/docs/es/project/index.mdx | 2 +- content/docs/es/project/vargroup/index.mdx | 2 +- content/docs/es/project/volumes.mdx | 3 + content/docs/es/project/workload/hook.mdx | 3 + content/docs/es/project/workload/index.mdx | 3 + content/docs/es/provider/accounts.mdx | 2 +- .../docs/es/provider/deleting-a-provider.mdx | 2 +- content/docs/es/provider/schemas.mdx | 2 +- .../es/user/aws_console_authentication.mdx | 3 + content/docs/es/user/index.mdx | 2 +- content/docs/es/user/vpn.mdx | 3 + 115 files changed, 410 insertions(+), 46 deletions(-) create mode 100644 content/docs/es/project/dependency/oracle-aws.mdx diff --git a/content/docs/en/cli.mdx b/content/docs/en/cli.mdx index fab2e60b4..035c82beb 100644 --- a/content/docs/en/cli.mdx +++ b/content/docs/en/cli.mdx @@ -1,7 +1,7 @@ --- title: CLI sidebar_label: Sleakops CLI -sidebar_position: 11 +sidebar_position: 10 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/access-cluster.mdx b/content/docs/en/cluster/access-cluster.mdx index 96859eefa..0c4bc797c 100644 --- a/content/docs/en/cluster/access-cluster.mdx +++ b/content/docs/en/cluster/access-cluster.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; # Access your Cluster diff --git a/content/docs/en/cluster/addons/ebs.mdx b/content/docs/en/cluster/addons/ebs.mdx index 14ab06099..09841fdc1 100644 --- a/content/docs/en/cluster/addons/ebs.mdx +++ b/content/docs/en/cluster/addons/ebs.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 5 +--- import { FiExternalLink } from "react-icons/fi"; # EBS (Elastic Block Store) diff --git a/content/docs/en/cluster/addons/efs.mdx b/content/docs/en/cluster/addons/efs.mdx index fb5552205..3103fc55e 100644 --- a/content/docs/en/cluster/addons/efs.mdx +++ b/content/docs/en/cluster/addons/efs.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import { FiExternalLink } from "react-icons/fi"; # EFS (Elastic File System) diff --git a/content/docs/en/cluster/addons/grafana.mdx b/content/docs/en/cluster/addons/grafana.mdx index c267692a1..c47299768 100644 --- a/content/docs/en/cluster/addons/grafana.mdx +++ b/content/docs/en/cluster/addons/grafana.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 7 +--- import Zoom from "react-medium-image-zoom"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/cluster/addons/index.mdx b/content/docs/en/cluster/addons/index.mdx index 0823f28c5..b4a3f9ea1 100644 --- a/content/docs/en/cluster/addons/index.mdx +++ b/content/docs/en/cluster/addons/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 4 +--- import Zoom from "react-medium-image-zoom"; # Addons diff --git a/content/docs/en/cluster/addons/kubecost.mdx b/content/docs/en/cluster/addons/kubecost.mdx index fb92251fd..c52b7e264 100644 --- a/content/docs/en/cluster/addons/kubecost.mdx +++ b/content/docs/en/cluster/addons/kubecost.mdx @@ -2,7 +2,7 @@ sidebar_label: Kubecost pagination_back: cluster/addons/grafana pagination_next: environment/index -sidebar_position: 5 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/addons/loki.mdx b/content/docs/en/cluster/addons/loki.mdx index 06c88795b..88b8ba694 100644 --- a/content/docs/en/cluster/addons/loki.mdx +++ b/content/docs/en/cluster/addons/loki.mdx @@ -2,7 +2,7 @@ sidebar_label: Loki pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost -sidebar_position: 6 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/addons/otel.mdx b/content/docs/en/cluster/addons/otel.mdx index d57e9b6d8..73710fc13 100644 --- a/content/docs/en/cluster/addons/otel.mdx +++ b/content/docs/en/cluster/addons/otel.mdx @@ -2,7 +2,7 @@ sidebar_label: Open Telemetry pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost -sidebar_position: 7 +sidebar_position: 3 --- import Zoom from "react-medium-image-zoom"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/cluster/addons/prometheus.mdx b/content/docs/en/cluster/addons/prometheus.mdx index 06259c5a5..065462d06 100644 --- a/content/docs/en/cluster/addons/prometheus.mdx +++ b/content/docs/en/cluster/addons/prometheus.mdx @@ -2,7 +2,7 @@ sidebar_label: Prometheus pagination_back: cluster/addons pagination_next: cluster/addons/grafana -sidebar_position: 8 +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/cluster/index.mdx b/content/docs/en/cluster/index.mdx index 22f677447..33b86e296 100644 --- a/content/docs/en/cluster/index.mdx +++ b/content/docs/en/cluster/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 5 title: Cluster pagination_next: environment/index --- diff --git a/content/docs/en/cluster/nodepools/creating-nodepool.mdx b/content/docs/en/cluster/nodepools/creating-nodepool.mdx index 17d4859eb..f94bb2434 100644 --- a/content/docs/en/cluster/nodepools/creating-nodepool.mdx +++ b/content/docs/en/cluster/nodepools/creating-nodepool.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; # Creating a Node Pool diff --git a/content/docs/en/cluster/nodepools/index.mdx b/content/docs/en/cluster/nodepools/index.mdx index 06f84244f..ce4fa1726 100644 --- a/content/docs/en/cluster/nodepools/index.mdx +++ b/content/docs/en/cluster/nodepools/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 3 +--- import Zoom from "react-medium-image-zoom"; # Node Pools diff --git a/content/docs/en/cluster/nodepools/instance-types.mdx b/content/docs/en/cluster/nodepools/instance-types.mdx index 70d7baa88..6e34e931d 100644 --- a/content/docs/en/cluster/nodepools/instance-types.mdx +++ b/content/docs/en/cluster/nodepools/instance-types.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/cluster/nodepools/managing-nodepool.mdx b/content/docs/en/cluster/nodepools/managing-nodepool.mdx index f2eb37a32..ace7f10b9 100644 --- a/content/docs/en/cluster/nodepools/managing-nodepool.mdx +++ b/content/docs/en/cluster/nodepools/managing-nodepool.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 3 +--- import Zoom from "react-medium-image-zoom"; # Managing a Node Pool diff --git a/content/docs/en/cluster/shutdown-cluster.mdx b/content/docs/en/cluster/shutdown-cluster.mdx index 5c1529e66..bebaef712 100644 --- a/content/docs/en/cluster/shutdown-cluster.mdx +++ b/content/docs/en/cluster/shutdown-cluster.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/connect_to_git.mdx b/content/docs/en/connect_to_git.mdx index 65fb8a872..7244b7bf0 100644 --- a/content/docs/en/connect_to_git.mdx +++ b/content/docs/en/connect_to_git.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Connect to Git -sidebar_position: 9 +sidebar_position: 12 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/domain/index.mdx b/content/docs/en/domain/index.mdx index 9e425a674..327eede72 100644 --- a/content/docs/en/domain/index.mdx +++ b/content/docs/en/domain/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Domain -sidebar_position: 5 +sidebar_position: 8 --- # Domain Levels & Strategies diff --git a/content/docs/en/domain/setup.mdx b/content/docs/en/domain/setup.mdx index 2358b0346..cb7795bd5 100644 --- a/content/docs/en/domain/setup.mdx +++ b/content/docs/en/domain/setup.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Setup your Domains -sidebar_position: 3 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/environment/index.mdx b/content/docs/en/environment/index.mdx index 869cd1ad8..f23a83000 100644 --- a/content/docs/en/environment/index.mdx +++ b/content/docs/en/environment/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Environment -sidebar_position: 8 +sidebar_position: 6 pagination_next: project/index --- diff --git a/content/docs/en/network/index.mdx b/content/docs/en/network/index.mdx index e60d9ab76..113f86bd3 100644 --- a/content/docs/en/network/index.mdx +++ b/content/docs/en/network/index.mdx @@ -2,7 +2,7 @@ id: network-resources title: Network Resources sidebar_label: Network Resources -sidebar_position: 6 +sidebar_position: 9 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/access_config.mdx b/content/docs/en/project/access_config.mdx index 9fd1bd443..a2bfadd93 100644 --- a/content/docs/en/project/access_config.mdx +++ b/content/docs/en/project/access_config.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dependency Access Configuration -sidebar_position: 7 +sidebar_position: 10 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/build/build.mdx b/content/docs/en/project/build/build.mdx index 0038e5595..222ac8fd6 100644 --- a/content/docs/en/project/build/build.mdx +++ b/content/docs/en/project/build/build.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import { FiExternalLink } from "react-icons/fi"; # Build diff --git a/content/docs/en/project/build_resources.mdx b/content/docs/en/project/build_resources.mdx index 76abfd442..38cda0667 100644 --- a/content/docs/en/project/build_resources.mdx +++ b/content/docs/en/project/build_resources.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Deploy Build Resources -sidebar_position: 6 +sidebar_position: 8 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/chart/chart_dependencies.mdx b/content/docs/en/project/chart/chart_dependencies.mdx index 2c6dbc856..28d662c4d 100644 --- a/content/docs/en/project/chart/chart_dependencies.mdx +++ b/content/docs/en/project/chart/chart_dependencies.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/chart/extra_templates.mdx b/content/docs/en/project/chart/extra_templates.mdx index 0dca88c1c..5670ca10f 100644 --- a/content/docs/en/project/chart/extra_templates.mdx +++ b/content/docs/en/project/chart/extra_templates.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/chart/index.mdx b/content/docs/en/project/chart/index.mdx index 67f23f5f5..27377352b 100644 --- a/content/docs/en/project/chart/index.mdx +++ b/content/docs/en/project/chart/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 11 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/configure_your_dockerfile.mdx b/content/docs/en/project/configure_your_dockerfile.mdx index ae3094f14..5a8c4314c 100644 --- a/content/docs/en/project/configure_your_dockerfile.mdx +++ b/content/docs/en/project/configure_your_dockerfile.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Configure your Dockerfile -sidebar_position: 5 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/dependency/aurora-mysql-aws.mdx b/content/docs/en/project/dependency/aurora-mysql-aws.mdx index c905059fc..8cfd4f611 100644 --- a/content/docs/en/project/dependency/aurora-mysql-aws.mdx +++ b/content/docs/en/project/dependency/aurora-mysql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/aurora-postgresql-aws.mdx b/content/docs/en/project/dependency/aurora-postgresql-aws.mdx index 2ac49844f..6686c1750 100644 --- a/content/docs/en/project/dependency/aurora-postgresql-aws.mdx +++ b/content/docs/en/project/dependency/aurora-postgresql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 3 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/faqs.mdx b/content/docs/en/project/dependency/faqs.mdx index 9ebbfe0d9..1410f0262 100644 --- a/content/docs/en/project/dependency/faqs.mdx +++ b/content/docs/en/project/dependency/faqs.mdx @@ -1,6 +1,6 @@ --- title: FAQs -sidebar_position: 3 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/dependency/index.mdx b/content/docs/en/project/dependency/index.mdx index 29559a8f3..498627654 100644 --- a/content/docs/en/project/dependency/index.mdx +++ b/content/docs/en/project/dependency/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Project -sidebar_position: 7 +sidebar_position: 3 pagination_next: project/workload/webservice --- diff --git a/content/docs/en/project/dependency/mariadb-aws.mdx b/content/docs/en/project/dependency/mariadb-aws.mdx index a3145a544..972183f1b 100644 --- a/content/docs/en/project/dependency/mariadb-aws.mdx +++ b/content/docs/en/project/dependency/mariadb-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 4 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import "react-medium-image-zoom/dist/styles.css"; diff --git a/content/docs/en/project/dependency/memcached-aws.mdx b/content/docs/en/project/dependency/memcached-aws.mdx index d40b9cf71..60a70301e 100644 --- a/content/docs/en/project/dependency/memcached-aws.mdx +++ b/content/docs/en/project/dependency/memcached-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 5 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/msk-aws.mdx b/content/docs/en/project/dependency/msk-aws.mdx index b87eeaf3d..e852fbd21 100644 --- a/content/docs/en/project/dependency/msk-aws.mdx +++ b/content/docs/en/project/dependency/msk-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/mysql-aws.mdx b/content/docs/en/project/dependency/mysql-aws.mdx index b4cf77940..9399ae845 100644 --- a/content/docs/en/project/dependency/mysql-aws.mdx +++ b/content/docs/en/project/dependency/mysql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 7 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/opensearch-aws.mdx b/content/docs/en/project/dependency/opensearch-aws.mdx index 63a1e218d..21bf24319 100644 --- a/content/docs/en/project/dependency/opensearch-aws.mdx +++ b/content/docs/en/project/dependency/opensearch-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 8 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/oracle-aws.mdx b/content/docs/en/project/dependency/oracle-aws.mdx index 6c7e68824..287ac0ec8 100644 --- a/content/docs/en/project/dependency/oracle-aws.mdx +++ b/content/docs/en/project/dependency/oracle-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 9 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/postgresql-aws.mdx b/content/docs/en/project/dependency/postgresql-aws.mdx index 8c53e44b0..90eb15559 100644 --- a/content/docs/en/project/dependency/postgresql-aws.mdx +++ b/content/docs/en/project/dependency/postgresql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 10 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/redis-aws.mdx b/content/docs/en/project/dependency/redis-aws.mdx index db4b24d0b..edad790f3 100644 --- a/content/docs/en/project/dependency/redis-aws.mdx +++ b/content/docs/en/project/dependency/redis-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 11 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/s3bucket-aws.mdx b/content/docs/en/project/dependency/s3bucket-aws.mdx index 55c8d28c0..85cb0e7a9 100644 --- a/content/docs/en/project/dependency/s3bucket-aws.mdx +++ b/content/docs/en/project/dependency/s3bucket-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 12 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/dependency/sqs-aws.mdx b/content/docs/en/project/dependency/sqs-aws.mdx index e9adc1818..3c1a17904 100644 --- a/content/docs/en/project/dependency/sqs-aws.mdx +++ b/content/docs/en/project/dependency/sqs-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 13 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/deployment/index.mdx b/content/docs/en/project/deployment/index.mdx index bc044b867..a917019f3 100644 --- a/content/docs/en/project/deployment/index.mdx +++ b/content/docs/en/project/deployment/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 7 +--- import Zoom from 'react-medium-image-zoom'; import 'react-medium-image-zoom/dist/styles.css'; diff --git a/content/docs/en/project/deployment/more_on_deployment.mdx b/content/docs/en/project/deployment/more_on_deployment.mdx index 04cc0a3cb..86947578f 100644 --- a/content/docs/en/project/deployment/more_on_deployment.mdx +++ b/content/docs/en/project/deployment/more_on_deployment.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- # More on Deployments :::info diff --git a/content/docs/en/project/deployment/release.mdx b/content/docs/en/project/deployment/release.mdx index 4b142ac1b..b25a16325 100644 --- a/content/docs/en/project/deployment/release.mdx +++ b/content/docs/en/project/deployment/release.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import { FiExternalLink } from "react-icons/fi"; # Release diff --git a/content/docs/en/project/dockertron.mdx b/content/docs/en/project/dockertron.mdx index 863f5f466..8cfc196de 100644 --- a/content/docs/en/project/dockertron.mdx +++ b/content/docs/en/project/dockertron.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dockertron -sidebar_position: 4 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/index.mdx b/content/docs/en/project/index.mdx index 9ba389609..89aa45e64 100644 --- a/content/docs/en/project/index.mdx +++ b/content/docs/en/project/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 10 +sidebar_position: 7 sidebar_label: Project pagination_next: project/dependency/index --- diff --git a/content/docs/en/project/vargroup/index.mdx b/content/docs/en/project/vargroup/index.mdx index 2063d3777..131b9dc53 100644 --- a/content/docs/en/project/vargroup/index.mdx +++ b/content/docs/en/project/vargroup/index.mdx @@ -1,6 +1,6 @@ --- title: Variable Groups -sidebar_position: 1 +sidebar_position: 5 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/project/volumes.mdx b/content/docs/en/project/volumes.mdx index 0c425c113..8bed8ce72 100644 --- a/content/docs/en/project/volumes.mdx +++ b/content/docs/en/project/volumes.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 9 +--- import Zoom from 'react-medium-image-zoom'; import 'react-medium-image-zoom/dist/styles.css'; diff --git a/content/docs/en/project/workload/hook.mdx b/content/docs/en/project/workload/hook.mdx index b25c0e132..e51970ccc 100644 --- a/content/docs/en/project/workload/hook.mdx +++ b/content/docs/en/project/workload/hook.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 5 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/project/workload/index.mdx b/content/docs/en/project/workload/index.mdx index 48446903a..c04dd8b56 100644 --- a/content/docs/en/project/workload/index.mdx +++ b/content/docs/en/project/workload/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 4 +--- import { FiExternalLink, FiCornerRightDown } from "react-icons/fi"; # Workloads diff --git a/content/docs/en/provider/accounts.mdx b/content/docs/en/provider/accounts.mdx index 8b3abf151..b64b52a83 100644 --- a/content/docs/en/provider/accounts.mdx +++ b/content/docs/en/provider/accounts.mdx @@ -1,7 +1,7 @@ --- title: Accounts sidebar_label: Accounts -sidebar_position: 1 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/provider/deleting-a-provider.mdx b/content/docs/en/provider/deleting-a-provider.mdx index d0068410d..7ea482a9a 100644 --- a/content/docs/en/provider/deleting-a-provider.mdx +++ b/content/docs/en/provider/deleting-a-provider.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Deleting a Provider -sidebar_position: 2 +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/provider/schemas.mdx b/content/docs/en/provider/schemas.mdx index 080429538..5bf95a021 100644 --- a/content/docs/en/provider/schemas.mdx +++ b/content/docs/en/provider/schemas.mdx @@ -1,7 +1,7 @@ --- pagination_next: cluster/index pagination_back: cluster/index -sidebar_position: 5 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/en/user/aws_console_authentication.mdx b/content/docs/en/user/aws_console_authentication.mdx index 3eb91b14d..df05bba5d 100644 --- a/content/docs/en/user/aws_console_authentication.mdx +++ b/content/docs/en/user/aws_console_authentication.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/en/user/index.mdx b/content/docs/en/user/index.mdx index 6deba2f88..07c5f3b0c 100644 --- a/content/docs/en/user/index.mdx +++ b/content/docs/en/user/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 12 +sidebar_position: 11 title: User --- diff --git a/content/docs/en/user/vpn.mdx b/content/docs/en/user/vpn.mdx index 7007ce5bc..96d2ddd1e 100644 --- a/content/docs/en/user/vpn.mdx +++ b/content/docs/en/user/vpn.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/cli.mdx b/content/docs/es/cli.mdx index 86fb0cfdd..b444b823e 100644 --- a/content/docs/es/cli.mdx +++ b/content/docs/es/cli.mdx @@ -1,7 +1,7 @@ --- title: CLI sidebar_label: CLI de Sleakops -sidebar_position: 11 +sidebar_position: 10 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/access-cluster.mdx b/content/docs/es/cluster/access-cluster.mdx index 45def4593..6ba4aac14 100644 --- a/content/docs/es/cluster/access-cluster.mdx +++ b/content/docs/es/cluster/access-cluster.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; # Accede a tu Clúster diff --git a/content/docs/es/cluster/addons/ebs.mdx b/content/docs/es/cluster/addons/ebs.mdx index 94f4244eb..046c42aff 100644 --- a/content/docs/es/cluster/addons/ebs.mdx +++ b/content/docs/es/cluster/addons/ebs.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 5 +--- import { FiExternalLink } from "react-icons/fi"; # EBS (Elastic Block Store) diff --git a/content/docs/es/cluster/addons/efs.mdx b/content/docs/es/cluster/addons/efs.mdx index 2026be848..c57cee84b 100644 --- a/content/docs/es/cluster/addons/efs.mdx +++ b/content/docs/es/cluster/addons/efs.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import { FiExternalLink } from "react-icons/fi"; # EFS (Elastic File System) diff --git a/content/docs/es/cluster/addons/grafana.mdx b/content/docs/es/cluster/addons/grafana.mdx index ea26887d1..1e14082eb 100644 --- a/content/docs/es/cluster/addons/grafana.mdx +++ b/content/docs/es/cluster/addons/grafana.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 7 +--- import Zoom from "react-medium-image-zoom"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/cluster/addons/index.mdx b/content/docs/es/cluster/addons/index.mdx index 07943f6c8..e2cbe5975 100644 --- a/content/docs/es/cluster/addons/index.mdx +++ b/content/docs/es/cluster/addons/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 4 +--- import Zoom from "react-medium-image-zoom"; # Addons diff --git a/content/docs/es/cluster/addons/kubecost.mdx b/content/docs/es/cluster/addons/kubecost.mdx index 561bba3e7..d3897b2b5 100644 --- a/content/docs/es/cluster/addons/kubecost.mdx +++ b/content/docs/es/cluster/addons/kubecost.mdx @@ -2,7 +2,7 @@ sidebar_label: Kubecost pagination_back: cluster/addons/grafana pagination_next: environment/index -sidebar_position: 5 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/addons/loki.mdx b/content/docs/es/cluster/addons/loki.mdx index f61f21373..b78908408 100644 --- a/content/docs/es/cluster/addons/loki.mdx +++ b/content/docs/es/cluster/addons/loki.mdx @@ -2,7 +2,7 @@ sidebar_label: Loki pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost -sidebar_position: 6 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/addons/otel.mdx b/content/docs/es/cluster/addons/otel.mdx index d57e9b6d8..73710fc13 100644 --- a/content/docs/es/cluster/addons/otel.mdx +++ b/content/docs/es/cluster/addons/otel.mdx @@ -2,7 +2,7 @@ sidebar_label: Open Telemetry pagination_back: cluster/addons/grafana pagination_next: cluster/addons/kubecost -sidebar_position: 7 +sidebar_position: 3 --- import Zoom from "react-medium-image-zoom"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/cluster/addons/prometheus.mdx b/content/docs/es/cluster/addons/prometheus.mdx index ef21ced71..82b952e84 100644 --- a/content/docs/es/cluster/addons/prometheus.mdx +++ b/content/docs/es/cluster/addons/prometheus.mdx @@ -2,7 +2,7 @@ sidebar_label: Prometheus pagination_back: cluster/addons pagination_next: cluster/addons/grafana -sidebar_position: 8 +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/cluster/index.mdx b/content/docs/es/cluster/index.mdx index d82651ca8..00f1d8876 100644 --- a/content/docs/es/cluster/index.mdx +++ b/content/docs/es/cluster/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 5 title: Cluster pagination_next: environment/index --- diff --git a/content/docs/es/cluster/nodepools/creating-nodepool.mdx b/content/docs/es/cluster/nodepools/creating-nodepool.mdx index 61903e5c9..c9f58bf44 100644 --- a/content/docs/es/cluster/nodepools/creating-nodepool.mdx +++ b/content/docs/es/cluster/nodepools/creating-nodepool.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; # Creando un Node Pool diff --git a/content/docs/es/cluster/nodepools/index.mdx b/content/docs/es/cluster/nodepools/index.mdx index 865e1f24d..0151db6f0 100644 --- a/content/docs/es/cluster/nodepools/index.mdx +++ b/content/docs/es/cluster/nodepools/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 3 +--- import Zoom from "react-medium-image-zoom"; # Node Pools diff --git a/content/docs/es/cluster/nodepools/instance-types.mdx b/content/docs/es/cluster/nodepools/instance-types.mdx index 659e75f02..73272677a 100644 --- a/content/docs/es/cluster/nodepools/instance-types.mdx +++ b/content/docs/es/cluster/nodepools/instance-types.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/cluster/nodepools/managing-nodepool.mdx b/content/docs/es/cluster/nodepools/managing-nodepool.mdx index ca14cc53c..9e8f3a74f 100644 --- a/content/docs/es/cluster/nodepools/managing-nodepool.mdx +++ b/content/docs/es/cluster/nodepools/managing-nodepool.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 3 +--- import Zoom from "react-medium-image-zoom"; # Gestionando un Node Pool diff --git a/content/docs/es/cluster/shutdown-cluster.mdx b/content/docs/es/cluster/shutdown-cluster.mdx index a39a5e176..b15aa2a3b 100644 --- a/content/docs/es/cluster/shutdown-cluster.mdx +++ b/content/docs/es/cluster/shutdown-cluster.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/connect_to_git.mdx b/content/docs/es/connect_to_git.mdx index 2445740c4..8b56a0f0e 100644 --- a/content/docs/es/connect_to_git.mdx +++ b/content/docs/es/connect_to_git.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Conectar a Git -sidebar_position: 9 +sidebar_position: 12 --- diff --git a/content/docs/es/domain/index.mdx b/content/docs/es/domain/index.mdx index af0cfba55..d1e1e9a05 100644 --- a/content/docs/es/domain/index.mdx +++ b/content/docs/es/domain/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dominio -sidebar_position: 5 +sidebar_position: 8 --- # Niveles de Dominio y Estrategias diff --git a/content/docs/es/domain/setup.mdx b/content/docs/es/domain/setup.mdx index e1a08aeac..5253d244f 100644 --- a/content/docs/es/domain/setup.mdx +++ b/content/docs/es/domain/setup.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Configura tus dominios -sidebar_position: 5 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/environment/index.mdx b/content/docs/es/environment/index.mdx index 413a17b7d..aedbb6c36 100644 --- a/content/docs/es/environment/index.mdx +++ b/content/docs/es/environment/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Entorno -sidebar_position: 8 +sidebar_position: 6 pagination_next: project/index --- diff --git a/content/docs/es/network/index.mdx b/content/docs/es/network/index.mdx index 53b0836d5..86adb6434 100644 --- a/content/docs/es/network/index.mdx +++ b/content/docs/es/network/index.mdx @@ -2,7 +2,7 @@ id: networking-y-recursos-de-red title: Networking y Recursos de Red sidebar_label: Networking y Recursos de Red -sidebar_position: 6 +sidebar_position: 9 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/access_config.mdx b/content/docs/es/project/access_config.mdx index 41046e16c..70660d8f9 100644 --- a/content/docs/es/project/access_config.mdx +++ b/content/docs/es/project/access_config.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Configuración de Acceso a Dependencias -sidebar_position: 7 +sidebar_position: 10 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/build/build.mdx b/content/docs/es/project/build/build.mdx index a8bd3e89f..5d3131fd6 100644 --- a/content/docs/es/project/build/build.mdx +++ b/content/docs/es/project/build/build.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/build/index.mdx b/content/docs/es/project/build/index.mdx index c77f6e931..8bdb25000 100644 --- a/content/docs/es/project/build/index.mdx +++ b/content/docs/es/project/build/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/build_resources.mdx b/content/docs/es/project/build_resources.mdx index e1ffd9f37..e3e8b0317 100644 --- a/content/docs/es/project/build_resources.mdx +++ b/content/docs/es/project/build_resources.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Recursos de Deploy Build -sidebar_position: 6 +sidebar_position: 8 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/chart/chart_dependencies.mdx b/content/docs/es/project/chart/chart_dependencies.mdx index a6022a5cd..173d4c47b 100644 --- a/content/docs/es/project/chart/chart_dependencies.mdx +++ b/content/docs/es/project/chart/chart_dependencies.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/chart/extra_templates.mdx b/content/docs/es/project/chart/extra_templates.mdx index 3e18abd9d..4c5129171 100644 --- a/content/docs/es/project/chart/extra_templates.mdx +++ b/content/docs/es/project/chart/extra_templates.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/chart/index.mdx b/content/docs/es/project/chart/index.mdx index 9b49676c9..2ed71a1fc 100644 --- a/content/docs/es/project/chart/index.mdx +++ b/content/docs/es/project/chart/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 11 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/configure_your_dockerfile.mdx b/content/docs/es/project/configure_your_dockerfile.mdx index 60874b79d..3351c5052 100644 --- a/content/docs/es/project/configure_your_dockerfile.mdx +++ b/content/docs/es/project/configure_your_dockerfile.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Configura tu Dockerfile -sidebar_position: 5 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/dependency/aurora-mysql-aws.mdx b/content/docs/es/project/dependency/aurora-mysql-aws.mdx index 1a5f70c4e..48aba58ae 100644 --- a/content/docs/es/project/dependency/aurora-mysql-aws.mdx +++ b/content/docs/es/project/dependency/aurora-mysql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/aurora-postgresql-aws.mdx b/content/docs/es/project/dependency/aurora-postgresql-aws.mdx index 65474c566..ef3155d9c 100644 --- a/content/docs/es/project/dependency/aurora-postgresql-aws.mdx +++ b/content/docs/es/project/dependency/aurora-postgresql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 3 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/faqs.mdx b/content/docs/es/project/dependency/faqs.mdx index b2d97642f..73960265f 100644 --- a/content/docs/es/project/dependency/faqs.mdx +++ b/content/docs/es/project/dependency/faqs.mdx @@ -1,6 +1,6 @@ --- title: FAQs -sidebar_position: 3 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/dependency/index.mdx b/content/docs/es/project/dependency/index.mdx index 8220c565a..3783b5588 100644 --- a/content/docs/es/project/dependency/index.mdx +++ b/content/docs/es/project/dependency/index.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dependencias -sidebar_position: 7 +sidebar_position: 3 pagination_next: project/workload/webservice --- diff --git a/content/docs/es/project/dependency/mariadb-aws.mdx b/content/docs/es/project/dependency/mariadb-aws.mdx index 2c8a305dc..664b6664f 100644 --- a/content/docs/es/project/dependency/mariadb-aws.mdx +++ b/content/docs/es/project/dependency/mariadb-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 4 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import "react-medium-image-zoom/dist/styles.css"; diff --git a/content/docs/es/project/dependency/memcached-aws.mdx b/content/docs/es/project/dependency/memcached-aws.mdx index 2c00dba19..b4c54edbd 100644 --- a/content/docs/es/project/dependency/memcached-aws.mdx +++ b/content/docs/es/project/dependency/memcached-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 5 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/msk-aws.mdx b/content/docs/es/project/dependency/msk-aws.mdx index bc5aba97a..9955940d1 100644 --- a/content/docs/es/project/dependency/msk-aws.mdx +++ b/content/docs/es/project/dependency/msk-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 6 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/mysql-aws.mdx b/content/docs/es/project/dependency/mysql-aws.mdx index 8f5cf9776..6138583d5 100644 --- a/content/docs/es/project/dependency/mysql-aws.mdx +++ b/content/docs/es/project/dependency/mysql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 7 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/opensearch-aws.mdx b/content/docs/es/project/dependency/opensearch-aws.mdx index ce7a9bd23..4637b6273 100644 --- a/content/docs/es/project/dependency/opensearch-aws.mdx +++ b/content/docs/es/project/dependency/opensearch-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 8 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/oracle-aws.mdx b/content/docs/es/project/dependency/oracle-aws.mdx new file mode 100644 index 000000000..42b9ed363 --- /dev/null +++ b/content/docs/es/project/dependency/oracle-aws.mdx @@ -0,0 +1,160 @@ +--- +sidebar_position: 9 +--- +import Zoom from "react-medium-image-zoom"; +import "react-medium-image-zoom/dist/styles.css"; +import { FiExternalLink } from "react-icons/fi"; + +# AWS Oracle + +SleakOps facilita la integración de bases de datos Oracle a través de Amazon RDS (Relational Database Service). Amazon RDS para Oracle es un servicio completamente administrado que simplifica la configuración, operación y escalado de bases de datos. Al aprovechar SleakOps para esta integración, puedes gestionar eficientemente bases de datos Oracle dentro de tu entorno EKS (Elastic Kubernetes Service), asegurando soluciones de almacenamiento de datos robustas, escalables y confiables para tus aplicaciones. + +## Preguntas Frecuentes + +
+ ### Licencia + Al crear una base de datos Oracle en Sleakops se utiliza License Included (LI). + Actualmente no se admite Bring Your Own License (BYOL); sin embargo, contacta + al soporte para más información. +
+ +
+ ### ¿Cómo gestiona SleakOps las credenciales de Oracle? + Cuando creas una dependencia de Oracle en SleakOps, se genera automáticamente + un Vargroup para tu base de datos. Este Grupo de Variables almacena de forma + segura las credenciales de Oracle y otros detalles importantes de + configuración, como el endpoint de la base de datos y la información de acceso + de usuarios. Podrás gestionarlos desde la sección + [Vargroups](/docs/project/vargroup). +
+ +
+ ### ¿Qué es el despliegue Multi-AZ y debería habilitarlo? + El despliegue Multi-AZ (Zona de Disponibilidad múltiple) garantiza alta + disponibilidad y soporte de failover replicando tu base de datos en otra zona + de disponibilidad. Se recomienda para entornos de producción para evitar + tiempos de inactividad. Ten en cuenta que aumenta los costos. +
+ +
+ + ### ¿Puedo cambiar la versión de Oracle después de que la base de datos esté desplegada? + + No, la versión del motor de base de datos no puede cambiarse después del + despliegue. Necesitarías crear una nueva instancia de Oracle con la versión + deseada y migrar tus datos, o cambiarlo manualmente desde la Consola de AWS. +
+ +
+ + ### ¿Qué sucede si necesito más almacenamiento para mi base de datos Oracle? + + Puedes ajustar el tamaño del almacenamiento al configurar tu base de datos. Si + necesitas más almacenamiento después del despliegue, puedes escalarlo + modificando la configuración en AWS, ya que SleakOps no lo admite por el + momento. +
+ +
+ +### ¿Cómo creo un dump de una base de datos Oracle? + +:::warning +El cliente solo está disponible para distribuciones Linux x86-64. +::: +:::tip +Sigue este enlace para instalar el [cliente ](https://www.oracle.com/es/database/technologies/instant-client/linux-x86-64-downloads.html) +::: +Para crear un dump de tu base de datos Oracle, usa el siguiente comando: +``` +exp ${ORACLE_USERNAME}/${ORACLE_PASSWORD}@${ORACLE_ENDPOINT}/${ORACLE_NAME} FILE=exp_file.dmp LOG=exp_file.log +``` +Reemplaza `ORACLE_USERNAME`, `ORACLE_ENDPOINT`, `ORACLE_NAME` y `ORACLE_PASSWORD` con los valores correspondientes. + +Para información adicional sobre la creación de un dump de Oracle, consulta la [documentación oficial de Oracle ](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-original-export-utility.html). + +Otra opción es crearlo directamente desde la Consola de AWS y luego importarlo. Ver [Restaurar a una instancia de DB](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). + +
+ +
+ +### ¿Cómo importo un dump existente? + +:::warning +El cliente solo está disponible para distribuciones Linux x86-64. +::: +:::tip +Sigue este enlace para instalar el [cliente ](https://www.oracle.com/es/database/technologies/instant-client/linux-x86-64-downloads.html) +::: +Puedes usar un cliente Oracle instalado en tu máquina local para importar el dump. +``` +imp ${ORACLE_USERNAME}/${ORACLE_PASSWORD}@${ORACLE_ENDPOINT}/${ORACLE_NAME} FROMUSER=cust_schema TOUSER=cust_schema FILE=exp_file.dmp LOG=imp_file.log +``` +Reemplaza `ORACLE_USERNAME`, `ORACLE_ENDPOINT`, `ORACLE_NAME` y `ORACLE_PASSWORD` con los valores correspondientes. + +Para información adicional sobre la importación de un dump de Oracle, consulta la [documentación oficial de Oracle ](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-original-import-utility.html). + +Otra opción es crearlo directamente desde la Consola de AWS y luego importarlo. Ver [Restaurar a una instancia de DB](https://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). + +
+ +
+ + ### ¿Qué debo hacer si tengo problemas de conexión con mi base de datos Oracle? + + - Verifica que el endpoint, el nombre de usuario y la contraseña de la base de datos sean correctos. - Comprueba que tus grupos de seguridad y reglas de firewall permitan el acceso. - Asegúrate de que la base de datos esté en ejecución y tenga suficientes recursos (CPU, memoria). De lo contrario, contáctanos. +
+ +:::info +Documentación de AWS: [Documentación de Amazon RDS Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) +::: + +## Configura tu Oracle + +### 1. Agrega Oracle como Dependencia + +Para integrar Oracle con SleakOps: + +1. En la consola de SleakOps, ve a la sección "Dependencies" +2. Elige "Oracle" de la lista de tipos de dependencias disponibles. + Para más detalles, consulta [Dependencias: Integración de Bases de Datos, Caché y Servicios de Mensajería](/docs/project/dependency). + +### 2. Configura tu Oracle. + +Accederás al siguiente formulario: + + + Oracle-create-p1 + + +Aquí los parámetros que SleakOps te permite personalizar durante la creación: + +| **Atributo** | **Descripción** | +| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Database Engine Version** | Selecciona la versión específica del motor de base de datos Oracle que deseas usar. Esto garantiza compatibilidad con los requisitos de tu aplicación. Ejemplo: `19.0.0.0.ru-2024-01.rur-2024-01.r1` | +| **Database Instance Class** | Define la clase de instancia que especifica la configuración de hardware para tu base de datos Oracle. Esto controla CPU, memoria y rendimiento de red. Ejemplo: `db.m6g.large`, `db.t3.medium`. Ver [detalle en AWS](https://aws.amazon.com/es/rds/instance-types/). | +| **Database Storage** | Especifica la cantidad de almacenamiento asignado para la base de datos. Ejemplo: 100 GB, 500 GB. | +| **Username** | Proporciona el nombre de usuario maestro para la base de datos Oracle. Este es el usuario principal con privilegios administrativos. Ejemplo: admin, root. | +| **Password** | Contraseña del usuario maestro para acceder a la base de datos. | +| **Multi-Availability Zone** | Habilita o deshabilita el despliegue Multi-AZ. Esto garantiza alta disponibilidad y soporte de failover replicando la base de datos en múltiples zonas de disponibilidad. Recomendado para entornos de producción. | +| **Automated Backup** | Configura copias de seguridad automáticas para la base de datos Oracle. Esto garantiza la protección de datos habilitando snapshots diarios y copias de seguridad de logs de transacciones. Configura el _Backup Retention Period_ y la _Backup Window_. Recomendado para entornos de producción. | +| **Backup Retention Period** | Establece el número de días para retener las copias de seguridad automáticas. | +| **Backup Window** | Período de tiempo durante el cual se realizará la copia de seguridad. | + +### 3. Personaliza el nombre de las variables para tu base de datos Oracle. + +Como se explicó, cuando se crea una dependencia, SleakOps genera un vargroup para almacenar todos los atributos necesarios. +En este paso puedes cambiar el nombre de los atributos en caso de que sea necesario. +SleakOps completa los valores automáticamente. +Después de este paso, tu dependencia queda creada. + + + Oracle-create-outputs + diff --git a/content/docs/es/project/dependency/postgresql-aws.mdx b/content/docs/es/project/dependency/postgresql-aws.mdx index b9bcdc07d..169b5a5d0 100644 --- a/content/docs/es/project/dependency/postgresql-aws.mdx +++ b/content/docs/es/project/dependency/postgresql-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 10 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/redis-aws.mdx b/content/docs/es/project/dependency/redis-aws.mdx index 348cc87d0..855d86c06 100644 --- a/content/docs/es/project/dependency/redis-aws.mdx +++ b/content/docs/es/project/dependency/redis-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 11 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/s3bucket-aws.mdx b/content/docs/es/project/dependency/s3bucket-aws.mdx index fb647dcf0..419ff64ed 100644 --- a/content/docs/es/project/dependency/s3bucket-aws.mdx +++ b/content/docs/es/project/dependency/s3bucket-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 12 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/dependency/sqs-aws.mdx b/content/docs/es/project/dependency/sqs-aws.mdx index e02e3a2ba..d2d60cca8 100644 --- a/content/docs/es/project/dependency/sqs-aws.mdx +++ b/content/docs/es/project/dependency/sqs-aws.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 13 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/deployment/index.mdx b/content/docs/es/project/deployment/index.mdx index 385314655..8b48bcc66 100644 --- a/content/docs/es/project/deployment/index.mdx +++ b/content/docs/es/project/deployment/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 7 +--- import Zoom from 'react-medium-image-zoom'; import 'react-medium-image-zoom/dist/styles.css'; diff --git a/content/docs/es/project/deployment/more_on_deployment.mdx b/content/docs/es/project/deployment/more_on_deployment.mdx index 1359f8ace..52f2b9608 100644 --- a/content/docs/es/project/deployment/more_on_deployment.mdx +++ b/content/docs/es/project/deployment/more_on_deployment.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- # Un poco mas sobre los Deployments: :::info diff --git a/content/docs/es/project/deployment/release.mdx b/content/docs/es/project/deployment/release.mdx index 8ca76bc18..81ec566c9 100644 --- a/content/docs/es/project/deployment/release.mdx +++ b/content/docs/es/project/deployment/release.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import { FiExternalLink } from "react-icons/fi"; # Release diff --git a/content/docs/es/project/dockertron.mdx b/content/docs/es/project/dockertron.mdx index 8c6857244..673c98fcf 100644 --- a/content/docs/es/project/dockertron.mdx +++ b/content/docs/es/project/dockertron.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Dockertron -sidebar_position: 4 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/index.mdx b/content/docs/es/project/index.mdx index d65b5029d..daee08189 100644 --- a/content/docs/es/project/index.mdx +++ b/content/docs/es/project/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 10 +sidebar_position: 7 sidebar_label: Projecto pagination_next: project/dependency/index --- diff --git a/content/docs/es/project/vargroup/index.mdx b/content/docs/es/project/vargroup/index.mdx index df5fff83d..155fd06cf 100644 --- a/content/docs/es/project/vargroup/index.mdx +++ b/content/docs/es/project/vargroup/index.mdx @@ -1,6 +1,6 @@ --- title: Variable Groups -sidebar_position: 1 +sidebar_position: 5 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/project/volumes.mdx b/content/docs/es/project/volumes.mdx index 3427cbdec..ac55adc82 100644 --- a/content/docs/es/project/volumes.mdx +++ b/content/docs/es/project/volumes.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 9 +--- import Zoom from 'react-medium-image-zoom'; import 'react-medium-image-zoom/dist/styles.css'; diff --git a/content/docs/es/project/workload/hook.mdx b/content/docs/es/project/workload/hook.mdx index 6059303dc..b688e341e 100644 --- a/content/docs/es/project/workload/hook.mdx +++ b/content/docs/es/project/workload/hook.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 5 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/project/workload/index.mdx b/content/docs/es/project/workload/index.mdx index 684b26778..35b09b2c9 100644 --- a/content/docs/es/project/workload/index.mdx +++ b/content/docs/es/project/workload/index.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 4 +--- import { FiExternalLink, FiCornerRightDown } from "react-icons/fi"; # Workloads diff --git a/content/docs/es/provider/accounts.mdx b/content/docs/es/provider/accounts.mdx index 7d0939704..eac33c939 100644 --- a/content/docs/es/provider/accounts.mdx +++ b/content/docs/es/provider/accounts.mdx @@ -1,7 +1,7 @@ --- title: Cuentas sidebar_label: Cuentas -sidebar_position: 1 +sidebar_position: 2 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/provider/deleting-a-provider.mdx b/content/docs/es/provider/deleting-a-provider.mdx index f76770aa4..1904794a7 100644 --- a/content/docs/es/provider/deleting-a-provider.mdx +++ b/content/docs/es/provider/deleting-a-provider.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Eliminar un Provider -sidebar_position: 2 +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/provider/schemas.mdx b/content/docs/es/provider/schemas.mdx index 0cd43dd09..f9abdb44a 100644 --- a/content/docs/es/provider/schemas.mdx +++ b/content/docs/es/provider/schemas.mdx @@ -1,6 +1,6 @@ --- pagination_next: cluster/index -sidebar_position: 5 +sidebar_position: 1 --- import Zoom from "react-medium-image-zoom"; diff --git a/content/docs/es/user/aws_console_authentication.mdx b/content/docs/es/user/aws_console_authentication.mdx index d3f4788ea..5dc02464a 100644 --- a/content/docs/es/user/aws_console_authentication.mdx +++ b/content/docs/es/user/aws_console_authentication.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; diff --git a/content/docs/es/user/index.mdx b/content/docs/es/user/index.mdx index 97599a1a9..2a769eb83 100644 --- a/content/docs/es/user/index.mdx +++ b/content/docs/es/user/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 12 +sidebar_position: 11 title: Usuarios --- diff --git a/content/docs/es/user/vpn.mdx b/content/docs/es/user/vpn.mdx index 0359570cb..0a5cae9d5 100644 --- a/content/docs/es/user/vpn.mdx +++ b/content/docs/es/user/vpn.mdx @@ -1,3 +1,6 @@ +--- +sidebar_position: 2 +--- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; import { FiExternalLink } from "react-icons/fi"; From 075f7efae3ba01420e7a23ad816233afeb001b78 Mon Sep 17 00:00:00 2001 From: Matias Izquierdo Date: Mon, 6 Apr 2026 08:14:23 -0300 Subject: [PATCH 44/45] chore: minor name fix to dependency index --- content/docs/en/project/dependency/index.mdx | 62 ++++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/content/docs/en/project/dependency/index.mdx b/content/docs/en/project/dependency/index.mdx index 498627654..8b8e20cc3 100644 --- a/content/docs/en/project/dependency/index.mdx +++ b/content/docs/en/project/dependency/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_label: Project +sidebar_label: Dependency sidebar_position: 3 pagination_next: project/workload/webservice --- @@ -12,7 +12,7 @@ import { FiExternalLink } from "react-icons/fi"; A Dependency in the context of SleakOps refers to any external infrastructure or service that your application relies on to function effectively. These dependencies include a variety of AWS services and resources that your application integrates with to enhance its capabilities and performance. -## FAQs +## FAQs
@@ -33,72 +33,70 @@ Here’s the updated list of dependencies included in SleakOps: - **RabbitMQ**: A widely used open-source message broker that facilitates reliable messaging and integration between application components. These dependencies integrate seamlessly with SleakOps, providing a comprehensive suite of AWS and open-source services to enhance your application's functionality, performance, and scalability. +
- -### Can I modify dependency configurations after initial setup? - -Yes, you can update dependency configurations at any time. Make sure to save any changes in the SleakOps interface to apply the updates. + + ### Can I modify dependency configurations after initial setup? + + Yes, you can update dependency configurations at any time. Make sure to save + any changes in the SleakOps interface to apply the updates.
- -### Can the same dependency be used for multiple Projects? - -At the moment this is not possible, you need one dependency per each project. + ### Can the same dependency be used for multiple Projects? + At the moment this is not possible, you need one dependency per each project.
- -### How do I delete a Dependency? - -By accessing the *Dependency Listing* and clicking the delete option. + ### How do I delete a Dependency? + By accessing the *Dependency Listing* and clicking the delete option.
- -### What happens when I delete a dependency? - -By deleting a dependency, SleakOps will remove all the information related to it and all what is related to it will stop working. To solve that SleakOps create a Deployment in PENDING_APPROVAL status, that must be run manually ASAP to stop the downtime. -In case you delete a database, SleakOps will generate a final snapshot before its deletion. + ### What happens when I delete a dependency? + By deleting a dependency, SleakOps will remove all the information related to + it and all what is related to it will stop working. To solve that SleakOps + create a Deployment in PENDING_APPROVAL status, that must be run manually ASAP + to stop the downtime. In case you delete a database, SleakOps will generate a + final snapshot before its deletion.
## Lets add a Dependency for your Project + ### 1. Navigate to create Dependency section + Into the _Left Pane_, access _Dependencies_ option and then, at the top right corner, click on the _Create_ button. -dependency-list + dependency-list ### 2. Select the kind of dependency you want to create + -dependency-type-list + /> ### 3. Select the kind of dependency you want to create + In Sleakops all dependecies start with the same step. So, complete these attributes and click _Next_ to continue. -| **Setting** | **Description** | -| --- | --- | -| **Name** | Identify your Project. | +| **Setting** | **Description** | +| ----------- | ------------------------------------- | +| **Name** | Identify your Project. | | **Project** | Select between the existent projects. | -dependency-create + dependency-create ### 4. Follow each dependency guide + To move forward choose between the following guides. [S3 Bucket](/docs/project/dependency/s3bucket-aws). From b3388bc6bbcf9d8152c59081f313b2f72ab09425 Mon Sep 17 00:00:00 2001 From: Matias Izquierdo Date: Mon, 6 Apr 2026 08:16:04 -0300 Subject: [PATCH 45/45] chore: removed changelog from docs directory --- content/docs/en/changelog.mdx | 847 ---------------------------------- content/docs/es/changelog.mdx | 838 --------------------------------- 2 files changed, 1685 deletions(-) delete mode 100644 content/docs/en/changelog.mdx delete mode 100644 content/docs/es/changelog.mdx diff --git a/content/docs/en/changelog.mdx b/content/docs/en/changelog.mdx deleted file mode 100644 index beb0de120..000000000 --- a/content/docs/en/changelog.mdx +++ /dev/null @@ -1,847 +0,0 @@ ---- -sidebar_position: 14 ---- -# Changelog - - -## **Version 2.4.0** - -🗓️ *01/08/2026* - -**🚀 New Features:** - -- **Workload Auto-Diagnostics:** With the help of AI, you can now quickly and easily discover what's happening with your Workloads. With just one click from the console, you'll get a complete diagnosis. -- **Grace Period for Workloads:** Support for configuring grace period in Workloads. -- **Cost Tags Notifications:** Added notifications for configuring cost tags. -- **Cascade Deletion:** Improvements in cascade deletion flow with active Dependencies. -- **File-based Variable Groups:** Improvements in the Variable Groups form for file types. -- **Project Selector:** Improvements in forms with Project selector. -- **Activity Logs Navigation:** Added links to navigate between Activity Logs and resources. -- **Sidebar:** Visual improvements to the sidebar. -- **Billing Screen:** Improvements to the billing screen. -- **Domain Editing:** Ability to modify domains in existing Environments. -- **Variable Names:** Handling of variable name length in Variable Groups. -- **Environment Names:** Adjustments to default Environment names. -- **Dependency Monitoring:** Improvements in Dependency monitoring. -- **Small Resolutions:** UI improvements for low resolutions or small screens. -- **Modified Variables:** Improvements in the Variable Groups form to mark which variables were modified. -- **Target Port in Web Services:** Support for configuring targetPort for services in Web Services. - - -**🐞 Bug Fixes:** - -- **Environment Names:** Handling of Environment name length. -- **Persistent Filters:** Project and Environment filters now persist between screens. -- **Project Icons:** Improved icons for Projects. -- **Addons with Custom Attributes:** Fixed editing of addons with custom attributes. -- **RDS Replicas:** Validation of RDS replica length. -- **Web Services URL:** Fixed URL auto-generation when editing a Web Service. -- **Project Selector:** Fixed visibility of the Project selector. -- **Nodepool Forms:** Fixed errors in Nodepool editing and creation forms. -- **State Transition:** Fixed transition from pending to completed state. -- **SSL Certificate:** Fixed alerts for SSL certificate validation. -- **Cloning with Versions:** Fixed cloning with Dependency versions. -- **Notification Emails:** Fixed visual errors in notification emails. -- **Cloning URL:** Fixed Web Services URL in cloning flow. -- **Delete Project with RDS:** Fixed deletion of a Project with an RDS that has deletion protection enabled. - - - -## **Version 2.3.2** - -🗓️ _12/19/2025_ - -**🚀 New Features:** - -- **SleakOps CLI:** Improvements and new features, including the ability to open a Workload shell locally. -- **S3 with CloudFront:** Improvements in S3 integration with CloudFront. -- **Python in Lambdas:** Updated Python versions for Lambdas. -- **Charts in Projects:** Improvements to the chart configuration screen in Projects. -- **Subnet Tags:** Improvements in subnet tag handling for autodiscovery. -- **DB Restoration:** Improvements in the database restoration flow from a snapshot. -- **Ingress in Web Services:** Support for configuring URL and ingress annotations in Web Services. -- **API Performance:** Optimization of API performance. -- **Domain Errors:** Improvements in domain error handling. -- **Addon Buttons:** Visual improvements to addon buttons. -- **Notifications:** Visual improvements when displaying notifications. -- **Button Options:** Visual improvements to button options (settings, copy, etc.). -- **RDS Versions:** Updated available RDS versions. -- **Infrastructure Modules:** Optimization of execution times for infrastructure modules. - -**🐞 Bug Fixes:** - -- **Role Deletion:** Handling of role deletion when deleting a Project. -- **Multi-Provider Billing:** Fixed billing screen with multiple providers. -- **Registration and Login:** Handling of registration and login flow with different subscription states. -- **Nodepool Form:** Error handling in the Nodepool form. -- **Account Switching:** Error handling when switching between accounts. -- **Variable Characters:** Handling of invalid characters in variable names in Variable Groups. -- **Cluster Access:** Handling of Cluster access for different user types. -- **VPN Access:** Error handling when obtaining VPN access for different user types. -- **Listing Texts:** Fixed texts in listings and forms. -- **AWS Connection:** Fixed texts in the step-by-step guide for connecting with AWS. -- **Pending Deployments:** Alert indicator for deployments pending approval. -- **Postgres Upgrade:** Error handling in PostgreSQL upgrade from 14 to 17. -- **RDS Security Group:** Fixed security group for public and private RDS replicas. -- **Support Chat:** Fixed delegation in support chat. - -## **Version 2.3.1** - -🗓️ _12/01/2025_ - -**🚀 New Features:** - -- **Image Analysis in Support:** Support for image analysis in the support bot. -- **Documentation:** New documentation for Dockertron and chart management. -- **Custom Values in Addons:** Ability to use custom values when installing an addon. -- **Nodegroup Change:** Ability to change the nodegroup of non-production clusters. -- **Support Flow:** Conversation flow for support between bot and human. - -**🐞 Bug Fixes:** - -- **Confirmation Modals:** Fixed position of deletion confirmation modals. -- **Builds Table:** Fixed data and column errors in the builds table. -- **Dashboard Notifications:** Fixed notification messages in the dashboard. -- **Workload Names:** Adjusted name sizes for Workloads. -- **Chart Dependency:** Fixed chart dependency flow. -- **Console Alerts:** Fixed notification alerts in the console. - -## **Version 2.3.0** - -🗓️ _11/18/2025_ - -**🚀 New Features:** - -- **Environment Cloning:** New function to clone Environments. -- **Project Cloning:** New function to clone Projects. -- **Dependency Cloning:** New function to clone Dependencies. -- **Workload Cloning:** New function to clone Workloads. -- **Variable Group Cloning:** New function to clone Variable Groups. -- **Cluster Monitoring Filters:** Added filters for navigating Cluster events in Cluster Monitoring. -- **Variable Group Search:** Ability to search Variable Groups by internal key names from the general search. - -**🐞 Bug Fixes:** - -- **Selected Account:** The selected account now persists when switching users. -- **Web Services Shutdown:** Improved Web Services shutdown. - -## **Version 2.2.0** - -🗓️ _11/13/2025_ - -**🚀 New Features:** - -- **Code Viewer:** New component for viewing code within the console. - -**🐞 Bug Fixes:** - -- **Deleted Users:** Fixed errors with deleted users. -- **Update Branches:** Fixed the flow for updating branches in Project. -- **Incomplete Information:** Fixed the flow when Project information is incomplete. -- **Extra Policies:** Fixed the flow for configuring extra policies in Project. - -## **Version 2.1.0** - -🗓️ _11/10/2025_ - -**🚀 New Features:** - -- **Cluster Update:** Support for Cluster update from 1.31 to 1.32. -- **Dependency Tour:** New guided tour for the Dependency screen. -- **Workload Tour:** New guided tour for the Workload screen. -- **Variable Group Tour:** New guided tour for the Variable Group screen. -- **Cluster Tour:** New guided tour for the Cluster screen. -- **Project Tour:** New guided tour for the Project screen. -- **Cluster Update Optimization:** Optimization of Cluster update tasks. -- **Screen Loading:** Improvements in loading drawers and secondary screens. -- **Schedule Update:** New flow to schedule Cluster updates. -- **Onboarding:** New onboarding flow for new users. -- **Nodepool Configuration:** Support for more Nodepool configuration parameters (instance types, fallbacks, etc.). -- **Upgrade Monitoring:** New service monitoring flow during Cluster upgrade with error reporting. -- **Build Logs:** Improvements in build logs with more context. - -**🐞 Bug Fixes:** - -- **SSL Certificate for S3:** Fixed SSL certificate errors for S3 with CloudFront. -- **Activity Logs:** Fixed names in some Activity Logs. -- **User Creation:** Fixed errors in the user creation flow. -- **Support Tickets:** Fixed support ticket status. -- **Build with CLI:** Fixed parameters when building using the CLI. -- **Nightly Shutdown:** Fixed Cluster status with nightly shutdown enabled. -- **Screen Resolutions:** Adjustments for some resolutions on the main console screen. -- **Delete Web Services:** Fixed errors when deleting a Web Service from the table. - -## **Version 2.0.1** - -🗓️ _10/15/2025_ - -**🚀 New Features:** - -- **Builds and Deploys Table:** Improvements to the data shown in the builds and deploys table. - -**🐞 Bug Fixes:** - -- **Nightly Shutdown Cron:** Fixed visualization of the nightly shutdown cron. -- **Cluster Status:** Fixed Cluster status update while updating. -- **Long Notifications:** Fixed visualization of long notifications. -- **Third-Party VPN:** Fixed VPN access for third parties. -- **Deploy Cancellation:** Fixed deploy cancellation flow. -- **Provider Creation:** Fixed text hierarchies in the Provider creation flow. -- **Missing Information:** Fixed redirection in the missing information flow for Project. -- **Viewer User:** Fixed navigation for viewer users. -- **Light Mode Toggles:** Improved toggle visibility in light mode. -- **Dependency MQ Password:** Fixed password auto-generation for Dependency MQ. -- **Icon Loading:** Improvements in icon loading. -- **Transition Screens:** Fixed transition screens during data loading. -- **Project Console Tables:** Improved table visualization on the "Project Console" screen. -- **Infrastructure Errors:** Fixed error messages when infrastructure module execution fails. -- **Mobile Account Selector:** Support for account selector on mobile devices. - -## **Version 2.0.0** - -🗓️ _01/10/2025_ - -**🚀 New Features:** - -- **Full Console Redesign:** Modernized UI for a cleaner, more intuitive experience. -- **Light Theme Support:** Complete support for light mode. -- **Support Bot:** Automated responses for common support questions. -- **Comprehensive Documentation:** Expanded guides covering all features. -- **Update lambdas:** Update python versions for lambdas. -- **Project Chart:** Promoted to stable. -- **Project Access:** Promoted to stable. -- **Dependency Aurora MySQL:** Promoted to stable. -- **Dependency Oracle:** Promoted to stable. -- **Dependency MariaDB:** Promoted to stable. -- **Dependency Aurora PostgreSQL:** Promoted to stable. -- **Dependency Editing:** Ability to edit existing dependencies. -- **Dockertron (beta):** AI-powered automatic dockerization. -- **Builds cancel:** Could cancel pending builds. -- **New MSK Dependency:** Support for Kafka via AWS MSK. -- **Enhanced Webservices:** Configure custom ingress annotations and optional healthchecks. -- **Advanced Nodepools:** New fallback strategies and instance mix (reserved, spot, on-demand) for better cost and performance control. - -**🐞 Bug Fixes:** - -- **GitLab self-hosted:** Fixed URL validation. -- **Cluster deletion:** Improved cascading deletion handling. - -## **Version 1.7.16** - -🗓️ _21/07/2025_ - -**🚀 New Features:** - -- **Projects with Public Repositories:** You can now create and manage projects linked to public repositories. -- **Exclude Builds from Metrics:** Builds can be excluded from the Grafana metrics dashboard for more accurate reporting. - -**🐞 Bug Fixes:** - -- **New Project Deployments:** Fixed issues preventing successful deployment of newly created projects. - -## **Version 1.7.15** - -🗓️ _07/07/2025_ - -**🚀 New Features:** - -- **Nodegroup Spot Resilience:** Spot nodegroups now prevent failures when no Spot instances are available. -- **File-based VariableGroups:** Added support for creating variablegroups of type file. -- **Agent Bot (beta):** Experimental agent bot released in beta. - -**🐞 Bug Fixes:** - -- **Dependent domain configuration:** Generate DNS records when parent domain already created. -- **Cluster status with nightly shutdown:** Fixed incorrect status display for clusters with nightly shutdown enabled. -- **VariableGroups filters:** Fiter by projects on variablegroups list -- **Delete cluster:** Fixed deletion cluster flow. -- **Support ticket status:** Fixed close support ticket status. - -## **Version 1.7.14** - -🗓️ _26/06/2025_ - -**🚀 New Features:** - -- **State Transition Improvements:** Smoother state changes for cluster addons and forms. -- **Support with Images:** Users can now upload images in the support chat. -- **Jobs from Cronjobs or Existing Jobs:** Ability to launch a Job from an existing cronjob or Job. -- **Infrastructure Errors:** Improved parsing and display of infrastructure errors for easier troubleshooting. - -**🐞 Bug Fixes:** - -- **Duplicate Volumes:** Fixed issue when creating volumes with the same name. -- **Duplicate Users:** Prevented creation of users with the same email. -- **Duplicate Dependencies:** Blocked creation of dependencies with duplicate names. -- **Dependency Monitoring:** Fixed date range issues on the dependency monitoring screen. - -## **Version 1.7.13** - -🗓️ _02/06/2025_ - -**🚀 New Features:** - -- **Dependency Monitoring:** Improved visualization and tracking of dependencies. -- **Service Control:** New toggle to turn webservices and workers on or off. -- **Builds with or without cache:** Option to run builds using cache or from scratch. -- **S3 Bucket Import with Versioning:** Added support for importing S3 Buckets with active versioning. -- **Variable Groups:** Enhanced interface for managing variable groups. -- **Dockerfile Validation:** New validations to ensure reliability of Dockerfiles. - -**🐞 Bug Fixes:** - -- **Job Logs:** Fixed broken log links for Jobs. -- **Branch Names:** Added support for branches with / in their names. -- **GitLab Pipelines:** Fixed issues affecting pipeline execution. - -## **Version 1.7.12** - -🗓️ _14/05/2025_ - -**🚀 New Features:** - -- **New Support Flow:** Introduced a support chatbot and ticketing system to provide better traceability and faster response times. -- **Subscription & Plan Management:** Enhanced tools for managing subscriptions and service plans. - -**🐞 Bug Fixes:** - -- **Form Improvements:** General enhancements to form usability and validation. -- **Project Console:** UI/UX improvements in the project console screen. - -## **Version 1.7.11** - -🗓️ _24/04/2025_ - -**🚀 New Features:** - -- **Kubernetes 1.31 & Karpenter 1.3:** SleakOps now provisions clusters on EKS 1.31 and upgrades the autoscaler to Karpenter 1.3. -- **Stronger Secret Management :** All secrets are now also stored encrypted in AWS Systems Manager Parameter Store, adding an extra layer of durability beyond the in-cluster copy. - -**🐞 Bug Fixes:** - -- **Dev-Cluster Workers:** Removed the PodDisruptionBudge improving worker reliability in development clusters when the cluster had the scheduler shutdown enabled. -- **Builds:** Builds are no longer triggered for every minor project edit. -- **Deployments:** Switched deployments jobs away from Fargate; build logs are now persisted for easier troubleshooting. -- **Web Service Details:** Refined the service detail page for clearer visibility of endpoints, status, and metrics. -- **Kubecost Add-on:** Stability improvements - -## **Version 1.7.10** - -🗓️ _01/04/2025_ - -**🚀 New Features:** - -- **Enhanced Permission Control:** Projects can now have additional associated permissions, whether they are AWS IAM Policies or custom permissions. -- **Dependency Details:** The configuration details of each dependency are now displayed within its detail view. -- **Cluster Update Screen Improvements:** EKS Insights analysis is now included directly in SleakOps to streamline cluster updates. -- **Build & Project Enhancements:** Additional information during builds and improved project validation workflows. - -**🐞 Bug Fixes:** - -- **Improved Text Input:** Resolved issues affecting text inputs in forms. -- **Cluster Access Data:** Fixed a bug when retrieving cluster connection data under a different selected account. -- **Domain List Filters:** Added filters by account to the domain listing. -- **Nodepool List Improvements:** Refined visuals for the nodepool list view. -- **Add-on Installation Updates:** The list of add-ons now refreshes properly after installation. -- **Variable Group Editing:** Fixed an issue with editing variable groups. -- **Subscription Attachment:** Addressed a bug that prevented new subscriptions from attaching correctly. -- **Cost Forecast:** Fixed forecasting issues for better cost estimations. - -## **Version 1.7.9** - -🗓️ _17/02/2025_ - -**🚀 New Features:** - -- **Cronjob Enhancements:** Configure cronjob policies and easily filter between active and inactive cronjobs. -- **Support Emails on Notifications:** When SleakOps generates a notification, users now receive it via email. -- **EKS Insights:** During cluster upgrades, SleakOps checks EKS Insights to ensure everything is running smoothly. - -**🐞 Bug Fixes:** - -- **Project Flow Improvements:** Enhanced various settings, forms, and other elements for smoother project management. -- **AWS Account Creation Flow:** Now supports inactive AWS accounts, providing clear guidance on how to manually activate them before resuming the process in SleakOps. - -## **Version 1.7.8** - -🗓️ _10/02/2025_ - -**🚀 New Features:** - -- **Kubernetes 1.30:** Updated EKS support to version 1.30. - -**🐞 Bug Fixes:** - -- **Minor UI Enhancements:** Improved the visual design for project and workload screens. - -## **Version 1.7.7** - -🗓️ _05/02/2025_ - -**🚀 New Features:** - -- **Import from External Buckets:** Quickly copy files from an external S3 Bucket into SleakOps via the new Import Bucket feature. -- **Project View Overhaul:** See logs and key info in a single screen for better visibility. -- **Executions Renamed to Workloads:** Updated terminology to align with internal cluster notation. -- **Cluster Deletion Optimization:** Added extra validation for a more secure and stable deletion process. - -**🐞 Bug Fixes:** - -- **Project Permissions for Jobs:** Fixed an issue where Jobs used cluster node permissions instead of Project permissions. -- **Docker Args Modification:** Builds now correctly apply any Docker Args changed just before they run. -- **VPN Profile Generation:** Resolved an issue preventing third-party user profiles from being generated successfully. - -## **Version 1.7.6** - -🗓️ _06/01/2025_ - -**🚀 New Features:** - -- **New Nodepool Configurations**: You can now set additional parameters, such as minimum instance sizes and more. -- **Job with Specific Images**: When creating a job, you can specify the exact image and tag you want to run (e.g., `postgres:16.4`). -- **(BETA) Chart Extension by Project**: SleakOps can now extend the charts used to deploy project workloads, allowing you to add dependencies. For more information, see the [Helm documentation](https://helm.sh/docs/helm/helm_dependency/). -- **CI/CD Improvements**: The file for configuring CI/CD has been simplified and optimized. - -**🐞 Bug Fixes:** - -- **Internal Web Service URL**: Fixed an issue that caused incorrect URLs for “internal” type web services. -- **Volume Deletion**: Resolved problems related to volume deletion under various retention policies. -- **UX/UI Enhancements**: Improvements in the interface for Projects, Volumes, and Variable Groups. - -## **Version 1.7.5** - -🗓️ _09/12/2024_ - -**🚀 New Features:** - -- **AWS Integration Error Handling:**: Implemented a mechanism to handle delays in AWS account activations created by SleakOps. -- **Add-on Links in Builds:** Added links for easily viewing logs and metrics during the build process. - -## **Version 1.7.4** - -🗓️ _05/12/2024_ - -**🚀 New Features:** - -- **Add-on Accessibility:** Added links in SleakOps for easy access to view logs, APM, or metrics for specific resources. -- **OpenTelemetry (Beta):** Introduced an add-on to enhance observability in applications deployed with SleakOps. With OpenTelemetry, you can have your own APM to monitor metrics like request rate, latency, and error rate of your application. -- **Add-on Availability Configurations:** Added various availability settings for each add-on. -- **Documentation:** Updated the add-on documentation and made it available in Spanish. - -**🐞 Bug Fixes:** - -- **Kubecost Integration Review:** Reviewed the Prometheus-Kubecost integration. Kubecost now correctly maps the names of deployed resources to their costs, greatly improving the accuracy of its estimates. It's now possible to enable approximate network traffic cost analysis within the cluster in Kubecost (Beta). - -## **Version 1.7.3** - -🗓️ _14/11/2024_ - -**🚀 New Features:** - -- **Oracle RDS Support (Beta):** You can now manage Oracle RDS instances as dependencies within SleakOps. -- **Aurora PostgreSQL Serverless Support (Beta):** Added the ability to create and manage Aurora PostgreSQL Serverless databases. - -**🐞 Bug Fixes:** - -- Various minor bug fixes. - -## **Version 1.7.2** - -🗓️ _05/11/2024_ - -**🚀 New Features:** - -- **S3 Bucket Deletion:** Introduced the ability to delete S3 buckets containing a large number of files. -- **VPN:** Updated the Pritunl module to the latest version for enhanced security and performance. -- **Subscription Management Improvements:** Enhanced the management of subscriptions for a better user experience. -- **User Registration:** Enabled the registration of new users to the platform. - -**🐞 Fixes:** - -- Various minor bug fixes. - -## **Version 1.7.1** - -🗓️ _30/10/2024_ - -**🚀 New Features:** - -- **Environment and Domain Creation:** Improved the process for creating environments and domains. You can now use a different domain than the one configured globally without any limitations. -- **Notifications:** Added a notification system to inform users about pending manual actions and scheduled infrastructure updates. -- **Documentation:** Updated documentation on managing domains, projects, dependencies, and environment variables. - -**🐞 Fixes:** - -- Various minor bug fixes. - -## **Version 1.7.0** - -🗓️ _14/10/2024_ - -**🚀 New Features:** - -- **Advanced Node Management:** Introduced node pool management to provide greater control over the types of nodes where workloads are executed. -- **Cluster Module Migration:** All modules created with the cluster now run on Graviton instances, enhancing performance and reducing costs. -- **Cluster Add-ons:** All add-ons now run on Graviton instances, further improving performance and lowering costs. -- **Isolated Build Nodes:** Builds are now executed on dedicated nodes separate from the application nodes, improving the stability of the nodes running applications. - -**🐞 Fixes:** - -- Various minor bug fixes. - -## **Version 1.6.3** - -🗓️ _27/09/2024_ - -**🚀 New Features:** - -- **Registration:** Implemented a new registration flow. - -**🐞 Fixes:** - -- Various minor bug fixes and improvements. - -## **Version 1.6.2** - -🗓️ _09/19/2024_ - -**🚀 New Features:** - -- **Upgrades:** Updated **Prometheus**, **Loki**, and **EBS CSI Driver** to the latest versions as of August 2024. -- **EBS CSI Driver Migration:** SleakOps now uses the AWS-managed EKS Addon for the EBS CSI Driver, replacing the self-managed version. -- **Prometheus and Loki with EBS:** Prometheus now utilizes EBS volumes for data persistence, preventing data loss even if the pods crash. -- **Loki with SimpleScalable: I**t adopts a **SimpleScalable** structure with **TSDB** storage for logs, enhancing performance. -- **SQS Dead-letter Queues:** Now supports the creation of **SQS queues** with associated dead-letter queues for improved error handling. - -**🐞 Fixes:** - -- Various minor bug fixes and improvements to the platform's workload flows. - -## **Version 1.6.1** - -🗓️ _08/22/2024_ - -**🚀 New Features:** - -- **Dependency Version Updates:** Updated versions of MQ, Elasticsearch, Memcache, and Redis dependencies. -- **Authentication Improvements:** Added support for storing authentication tokens via cookies instead of local storage. -- Added ACM validation record printing on the ACM detail screen, and ACM status is now included in the system. - -**🐞 Fixes:** - -- Issues with the provider flow have been resolved. - -## **Version 1.6.0** - -🗓️ _08/12/2024_ - -**🚀 New Features:** - -- **Support for ARM Instances and Additional RDS Versions:** Added ARM instances and extra versions in RDS. -- **EKS Updated to Version 1.29:** EKS has been updated to version 1.29. Changelogs for EKS updates are now displayed. -- **Improvements in Provider Creation and Editing:** Screens and fields for provider forms were updated, including changes in states and visual display. -- **Improved Repository Search:** Added support for asynchronous search in the repository selector and enhanced the search function for GitHub, GitLab, and Bitbucket. -- **Healthcheck Parameterization:** Healthcheck properties can now be parameterized with JSONSchema. -- **New Dashboard:** A new dashboard has been added to view consumption by namespace. - -**Fixes:** - -- Fixed an error when regenerating certificates, as well as issues with builds not running properly. -- Frontend errors related to listing and API problems that caused filtering errors have been corrected. - -## **Version 1.5.1** - -🗓️ _06/24/2024_ - -**🚀 New Features:** - -- **Advanced Resource Configuration:** Advanced options for resource configuration in project environments have been implemented. -- **Optimization of Data Collection Scripts:** Improved the efficiency of data collection scripts for faster workload. - -**🐞 Fixes:** - -- Several interface errors affecting system usability have been resolved. - -## **Version 1.5.0** - -🗓️ _05/23/2024_ - -**🚀 New Features:** - -- **Multiple Project Environments Creation:** You can now create multiple project environments using the same repository and branch. -- **Domain Validation for Aliases:** Improved domain creation validation for aliases by using an existing usable ACM for ingress. -- **Resource Configuration in Project Env:** Added the ability to configure build and deploy resources per project environment. -- **Deploy and Build Request Configuration:** Added the option to configure deploy and build requests in a ProjectEnv. -- **Grafana Dashboard:** A Grafana dashboard was incorporated to visualize consumption by namespace. -- **Loki Configuration:** Logs can now be searched by namespace with the new Loki configuration. -- **Data Collection:** Improved the billing collection script to be idempotent and executable for specific dates. - -**🐞 Fixes:** - -- Fixed an error when creating S3 dependencies and solved a critical problem with vargroups during cluster shutdown updates. -- Fixed a critical error when inviting collaborators. - -## **Version 1.4.3** - -🗓️ _05/13/2024_ - -**🚀 New Features:** - -- **Dashboard Management Improvements:** Dashboard loading was improved, allowing it to be viewed even if no account is selected. -- **Billing and Project Screen Improvements:** Improvements to the billing screen were made, including a new "others" section to account for previously unconsidered costs. The project environment screen was also improved. -- **Policy Updates:** CloudFormation policy has been updated to enhance management and security. - -**🐞 Fixes:** - -- Fixed a critical error that prevented the creation of providers. -- Reviewed and resolved an issue related to NewRelic integration. -- Fixed a problem with the refresh token when requesting the VPN URI. -- **ACM Validation Screen and Build Logs Errors:** Corrections made to the ACM validation table and logs display for builds in creation state. - -## **Version 1.4.2** - -🗓️ _04/25/2024_ - -**🚀 New Features:** - -- **New Metrics:** Added new metrics for S3 buckets and RabbitMQ, improving service monitoring. An OpenSearch metrics monitoring system was also implemented. -- **Monitoring Schema Reorganization:** Monitoring schema structures were reorganized for better management and visualization. The Dependencies monitoring screen now supports different resource types, providing a more detailed view. - -**🐞 Fixes:** - -- A critical issue with vargroups was resolved, ensuring their proper functioning. - -## **Version 1.4.1** - -🗓️ _04/11/2024_ - -**🚀 New Features:** - -- **Dependency and OpenSearch Monitoring:** A new monitoring page was created for dependencies, facilitating the tracking of their status. OpenSearch was included. -- **ECR Lifecycle Policy:** A lifecycle policy was configured for ECR, improving image management. - -**🐞 Fixes:** - -- Fixed the issue of duplicate names between cluster and node in Redis. -- Resolved various frontend errors that affected the user experience. -- Fixed the problem where an error was displayed when attempting to publish a vargroup without an associated service. -- Issues with performing multiple deployments and releases in a row were fixed. - -## **Version 1.4.0** - -🗓️ _03/06/2024_ - -**🚀 New Features:** - -- **Grafana Configuration:** The database for the Grafana addon was configured, along with DataSources and Dashboards. -- **Prometheus Metrics Persistence with Thanos:** Added support for persisting Prometheus metrics using Thanos. -- **New Volume API:** Implemented support for the new volume API, displaying statuses and applying configuration for deployments. -- The update option in addons has been disabled. -- Now, when a dependency is deleted, a deploy with "pending-approval" will be created instead of an automatic one. - -**🐞 Fixes:** - -- Fixed an issue where pre-hooks and new volumes were added during deploys, preventing them from being generated. -- Subdomains are now correctly marked as delegated if the parent domains are already delegated. - -## **Version 1.3.0** - -🗓️ _01/03/2024_ - -**🚀 New Features:** - -- **Project Details View:** A detailed project view is now available in the new interface. -- **RDS Metrics API:** A new API for displaying RDS metrics has been added, improving resource visibility. -- **Improved LogViewer:** LogViewer loading is now faster and more efficient. -- **Enhanced Onboarding:** A new onboarding process has been implemented for easier setup. -- **Redis Monitoring:** Redis monitoring has been added, improving infrastructure supervision. -- **RDS Replica Configuration:** The option to configure replicas in the RDS Dependency has been added for more flexibility. -- **Domain Deletion Status:** Domain deletion now creates a deploy with `pending-approval` status, rather than an automatic deploy. -- **Job Workload Improvements:** Job workload has been improved, allowing automatic retries in case of an initial failure. - -**🐞 Fixes:** - -- Bitbucket integration issues have been resolved. -- Undefined value issues in Vargroups have been fixed. - -## **Version 1.2.4** - -🗓️ _15/02/2024_ - -**🚀 New Features:** - -- **Cluster Switcher Optimization:** Cluster selector behavior has been optimized. -- **Login in AWS Subscription Flow:** The AWS subscription flow now includes the ability to log in directly. - -**🐞 Fixes:** - -- Callback issues for Git integrations and Docker file path for GitLab have been resolved. -- Minor billing screen-related bugs have been fixed. - -## **Version 1.2.3** - -🗓️ _05/02/2024_ - -**🚀 New Features:** - -- **Alias Decoupling in Web Services:** The creation of aliases is now separated from the web services form. -- **IAM Password Reset:** It is now possible to reset the IAM password for a user. - -**🐞 Fixes:** - -- A minor issue with release tasks has been corrected. - -## **Version 1.2.2** - -🗓️ _25/01/2024_ - -**🚀 New Features:** - -- **Domain Validation Button:** A "check validation" button has been added to the domain drawer for easier domain management. -- **Activity Log Table:** An activity log table has been created. -- **Access Key Encryption:** Access keys for code version providers (GIT) are now encrypted. - -**🐞 Fixes:** - -- An issue where the API didn't correctly recreate the ACM module during regeneration has been fixed. - -## **Version 1.2.1** - -🗓️ _12/01/2024_ - -**🚀 New Features:** - -- **Vargroup Form Optimization:** Usability improvements have been made to the Vargroup forms. -- **Provider and User Account Deletion:** Deleting a provider now also deletes associated user accounts. - -**🐞 Fixes:** - -- A bug in ACM certificate regeneration has been fixed. -- A provider deletion issue has been corrected. - -## **Version 1.2.0** - -🗓️ _05/01/2024_ - -**🚀 New Features:** - -- **Logs in Grafana:** A data source has been configured in Grafana to display logs from S3. -- **Cluster Update Button:** A button has been added to allow cluster updates from the interface. -- **User Activity Log:** An activity log for user actions has been created. -- **Domain Validation Deploy:** You can now create a deploy that runs once domains are validated. -- **Two-Factor Authentication:** Two-factor authentication (2FA) has been added to the login for enhanced security. - -**🐞 Fixes:** - -- An issue with builds using the same branch as the default has been fixed. -- Log reading has been improved for faster processing. -- Various frontend optimizations, including styles, search, and pending resource visibility, have been made. - -## **Version 1.1.1** - -🗓️ _05/12/2023_ - -**🚀 New Features:** - -- **Log Viewer in Jobs:** Added a log viewer in the job list, similar to what already exists for deployments. -- **Dashboard v2:** Improvements in the second version of the Dashboard, with more options and better organization of information. -- **Cluster Certificates:** Cluster certificates are now automatically deleted and updated to prevent expiration issues. - -## **Version 1.1.0** - -🗓️ _06/11/2023_ - -**🚀 New Features:** - -- **Vargroups Management:** Added the option to show vargroups in the forms for services, workers, hooks, and cronjobs. -- **Kubecost:** Integrated Kubecost with Prometheus-stack. - -**🐞 Fixes:** - -- Solved the issue with Karpenter on spot instances. -- Fixed user roles and user editing. -- Corrected problems when deleting an environment and the incorrect deletion of domains. -- Fixed the error when trying to manually start the cluster. -- Resolved an error in generating hooks. - -## **Version 1.0.5** - -🗓️ _27/10/2023_ - -**🐞 Fixes:** - -- Solved deployment issues and fixed Karpenter with spot instances. -- Fixed issues in deleting entities and validating service URLs. - -## **Version 1.0.4** - -🗓️ _11/10/2023_ - -**🚀 New Features:** - -- **Refactoring and Improvements:** Refactored the dashboard and improved log visualization and the management of entity deletion. - -**🐞 Fixes:** - -- Fixed user editing issues. -- Corrected cluster state management. -- Solved problems with environment domains. -- Fixed error handling in S3 responses with CloudFront. - -## **Version 1.0.3** - -🗓️ _25/09/2023_ - -**🚀 New Features:** - -- **Management Buttons and Form Improvements:** Added buttons for resource management and improved variable mapping forms. -- **Cronjobs and Domain Regeneration:** You can now stop or activate cronjobs and regenerate domains. - -**🐞 Fixes:** - -- Solved the issue of obtaining the VPN URI in Pritunl. -- Fixed the account selection issue for viewer users. -- Improved the handling of health check information sent to the backend. - -## **Version 1.0.2** - -🗓️ _04/09/2023_ - -**🚀 New Features:** - -- **Deployment Optimization:** Simplified the deployment process and project environment (ProjectEnv) editing, facilitating configuration and deployment. -- **Resource and Configuration Adjustments:** You can now create custom aliases for buckets. -- **Health Check Improvements:** The readiness probe for services in the development account is now optional. - -**🐞 Fixes:** - -- Solved issues related to VPN and security parameter configuration. - -## **Version 1.0.1** - -🗓️ _29/08/2023_ - -**🚀 New Features:** - -- **Subscription Management:** Login and token updates are controlled based on the subscription status. Additionally, a new API was implemented to register users and companies, validating pending subscriptions, with a new model to better manage subscriptions, integrating AwsClient. -- **Marketplace Onboarding:** Simplified process for creating users who come from a marketplace. - -## **Version 1.0.0** - -🗓️ _23/08/2023_ - -**🚀 New Features:** - -- **Volume Configuration:** You can now configure volumes in project environments directly from the form. -- **Nightly Shutdown with Timezone:** Added support for selecting time zones in the nightly shutdown. -- **Manual Cluster Startup:** New button to manually start clusters. -- **CloudFront Integration:** Support for using CloudFront to improve content delivery. -- **Automatic Backups:** You can configure automatic backups for dependencies. -- **Graviton Instances:** Support for using Graviton instances on nodes. -- **Encryption:** Implemented encryption in StackSettings for added security. - -**🐞 Fixes:** - -- Resolved an issue in the billing API and cost estimation. -- Fixed errors when deleting Providers and VPNs. -- You can now delete ACM certificates used by a Load Balancer without problems. diff --git a/content/docs/es/changelog.mdx b/content/docs/es/changelog.mdx deleted file mode 100644 index cb23e1030..000000000 --- a/content/docs/es/changelog.mdx +++ /dev/null @@ -1,838 +0,0 @@ ---- -sidebar_position: 14 ---- -# Registro de Cambios - - -## **Versión 2.4.0** - -🗓️ *08/01/2026* - -**🚀 Novedades:** - -- **Autodiagnóstico en Workloads:** Con la ayuda de IA, ahora puedes descubrir de manera fácil y rápida qué está pasando con tus Workloads. Con solo presionar un botón desde la consola, obtendrás un diagnóstico completo. -- **Grace Period en Workloads:** Soporte para configurar grace period en Workloads. -- **Notificaciones de Cost Tags:** Se agregan notificaciones para configurar etiquetas de costos. -- **Eliminación en Cascada:** Mejoras en el flujo de eliminación en cascada con Dependencies activas. -- **Variable Groups de Archivos:** Mejoras en el formulario de Variable Groups de tipo archivo. -- **Selector de Project:** Mejoras en formularios con selector de Project. -- **Navegación en Activity Logs:** Se agregan enlaces para navegar entre Activity Logs y recursos. -- **Sidebar:** Mejora visual del sidebar. -- **Pantalla de Billing:** Mejoras en la pantalla de facturación. -- **Edición de Dominios:** Posibilidad de modificar dominios en Environments ya creados. -- **Nombres de Variables:** Manejo de longitud de nombres de variables en Variable Groups. -- **Nombres de Environment:** Ajustes en nombres por defecto de Environment. -- **Monitoreo de Dependencies:** Mejoras en el monitoreo de Dependencies. -- **Resoluciones Pequeñas:** Mejoras de UI para resoluciones bajas o pantallas pequeñas. -- **Variables Modificadas:** Mejoras en el formulario de Variable Groups para marcar qué variables fueron modificadas. -- **Target Port en Web Services:** Soporte para configurar targetPort en servicios de Web Services. - -**🐞 Correcciones:** - -- **Nombres de Environments:** Manejo de longitud de nombres de Environments. -- **Filtros Persistentes:** Los filtros de Project y Environment ahora persisten entre pantallas. -- **Iconos de Projects:** Mejora en los iconos de Projects. -- **Addons con Atributos Custom:** Corrección en la edición de addons con atributos personalizados. -- **Réplicas RDS:** Validación de longitud de réplicas en RDS. -- **URL en Web Services:** Corrección en la autogeneración de URL al editar un Web Service. -- **Selector de Projects:** Corrección en la visibilidad del selector de Projects. -- **Formularios de Nodepool:** Corrección de errores en formularios de edición y creación de Nodepools. -- **Transición de Estados:** Corrección en la transición de estado de pendiente a finalizado. -- **Certificado SSL:** Corrección en alertas para validación de certificado SSL. -- **Clonado con Versiones:** Corrección en el clonado con versiones de Dependencies. -- **Email de Notificaciones:** Corrección de errores visuales en el email de notificaciones. -- **URL en Clonado:** Corrección de URL de Web Services en flujo de clonado. -- **Eliminación de Project con RDS:** Corrección al eliminar un Project con una RDS con protección de eliminación activa. - - -## **Versión 2.3.2** - -🗓️ _19/12/2025_ - -**🚀 Novedades:** - -- **SleakOps CLI:** Mejoras y nuevas funciones, incluyendo la posibilidad de abrir una shell de un Workload en local. -- **S3 con CloudFront:** Mejoras en la integración de S3 con CloudFront. -- **Python en Lambdas:** Actualización de versiones de Python para Lambdas. -- **Charts en Projects:** Mejoras en la pantalla de configuración de charts en Projects. -- **Tags de Subnet:** Mejoras en el manejo de tags de subnet para autodiscovery. -- **Restauración de DB:** Mejoras en el flujo de restauración de base de datos desde un snapshot. -- **Ingress en Web Services:** Soporte para configurar URL y annotations de ingress en Web Services. -- **Performance de APIs:** Optimización en el rendimiento de las APIs. -- **Errores en Domains:** Mejoras en el manejo de errores en dominios. -- **Botones de Addons:** Mejora visual en los botones de addons. -- **Notificaciones:** Mejora visual al mostrar notificaciones. -- **Opciones de Botones:** Mejora visual en opciones de botones (configuración, copiar, etc.). -- **Versiones de RDS:** Actualización de versiones disponibles de RDS. -- **Módulos de Infraestructura:** Optimización de tiempos en la ejecución de módulos de infraestructura. - -**🐞 Correcciones:** - -- **Eliminación de Roles:** Manejo en la eliminación de roles al eliminar un Project. -- **Billing Multi-Provider:** Corrección en pantalla de billing con múltiples proveedores. -- **Registro y Login:** Manejo del flujo de registro y login con diferentes estados de suscripciones. -- **Formulario de Nodepools:** Manejo de errores en el formulario de Nodepools. -- **Cambio de Cuentas:** Manejo de errores al cambiar entre cuentas. -- **Caracteres en Variables:** Manejo de caracteres inválidos en nombres de variables en Variable Groups. -- **Acceso a Cluster:** Manejo de acceso a Cluster para diferentes tipos de usuarios. -- **Acceso a VPN:** Manejo de errores al obtener acceso a VPN para diferentes tipos de usuarios. -- **Textos en Listados:** Corrección de textos en listados y formularios. -- **Conexión con AWS:** Corrección de textos en el paso a paso para conectarse con AWS. -- **Deployments Pendientes:** Alerta indicadora de deployments pendientes de aprobación. -- **Actualización de Postgres:** Manejo de error en actualización de PostgreSQL de 14 a 17. -- **Security Group en RDS:** Corrección de security group para réplicas de RDS públicas y privadas. -- **Chat de Soporte:** Corrección al delegar conversación en el chat de soporte. - -## **Versión 2.3.1** - -🗓️ _01/12/2025_ - -**🚀 Novedades:** - -- **Análisis de Imágenes en Soporte:** Soporte de análisis de imágenes en el bot de soporte. -- **Documentación:** Nueva documentación para Dockertron y manejo de charts. -- **Valores Custom en Addons:** Posibilidad de usar valores personalizados al instalar un addon. -- **Cambio de Nodegroup:** Posibilidad de cambiar el nodegroup de clusters no productivos. -- **Flujo de Soporte:** Flujo de conversación de soporte entre bot y humano. - -**🐞 Correcciones:** - -- **Modales de Confirmación:** Corrección en la posición de modales de confirmación de eliminación. -- **Tabla de Builds:** Corrección de errores de datos y columnas en la tabla de builds. -- **Notificaciones en Dashboard:** Corrección de mensajes de notificaciones en el dashboard. -- **Nombres de Workloads:** Ajuste de tamaños de nombres para Workloads. -- **Chart Dependency:** Corrección del flujo de chart dependency. -- **Alertas en Console:** Corrección de alertas de notificaciones en la consola. - -## **Versión 2.3.0** - -🗓️ _18/11/2025_ - -**🚀 Novedades:** - -- **Clonado de Environments:** Nueva función de clonado de Environments. -- **Clonado de Projects:** Nueva función de clonado de Projects. -- **Clonado de Dependencies:** Nueva función de clonado de Dependencies. -- **Clonado de Workloads:** Nueva función de clonado de Workloads. -- **Clonado de Variable Groups:** Nueva función de clonado de Variable Groups. -- **Filtros en Cluster Monitoring:** Se agregan filtros para navegación de eventos de Cluster en Cluster Monitoring. -- **Búsqueda de Variable Groups:** Posibilidad de buscar Variable Groups por nombres de claves internas desde el buscador general. - -**🐞 Correcciones:** - -- **Cuenta Seleccionada:** Se persiste la cuenta seleccionada al cambiar de usuario. -- **Apagado de Web Services:** Mejora en el apagado de Web Services. - -## **Versión 2.2.0** - -🗓️ _13/11/2025_ - -**🚀 Novedades:** - -- **Visualizador de Código:** Nuevo componente para visualizar código dentro de la consola. - -**🐞 Correcciones:** - -- **Usuarios Eliminados:** Corrección de errores en usuarios eliminados. -- **Actualizar Ramas:** Corrección en el flujo de actualizar ramas en Project. -- **Información Incompleta:** Corrección del flujo cuando falta completar información de un Project. -- **Extra Policies:** Corrección del flujo para configurar políticas adicionales en Project. - -## **Versión 2.1.0** - -🗓️ _10/11/2025_ - -**🚀 Novedades:** - -- **Actualización de Cluster:** Soporte para actualización de Cluster de 1.31 a 1.32. -- **Tour de Dependency:** Nuevo tour guiado para la pantalla de Dependency. -- **Tour de Workload:** Nuevo tour guiado para la pantalla de Workload. -- **Tour de Variable Group:** Nuevo tour guiado para la pantalla de Variable Group. -- **Tour de Cluster:** Nuevo tour guiado para la pantalla de Cluster. -- **Tour de Project:** Nuevo tour guiado para la pantalla de Project. -- **Actualización de Cluster:** Optimización en tareas de actualización de Cluster. -- **Carga de Pantallas:** Mejoras en la carga de drawers y pantallas secundarias. -- **Programar Actualización:** Nuevo flujo para programar la actualización de Cluster. -- **Onboarding:** Nuevo flujo de onboarding para usuarios nuevos. -- **Configuración de Nodepool:** Soporte de más parámetros de configuración para Nodepool (tipo de instancias, fallbacks, etc.). -- **Monitoreo de Upgrade:** Nuevo flujo de monitoreo de servicios durante el upgrade de Cluster con reporte de errores. -- **Logs de Builds:** Mejoras en los logs de builds con más contexto. - -**🐞 Correcciones:** - -- **Certificado SSL en S3:** Corrección de errores de certificado SSL para S3 con CloudFront. -- **Activity Logs:** Corrección de nombres en algunos Activity Logs. -- **Creación de Usuarios:** Corrección de errores en el flujo de creación de usuarios. -- **Tickets de Soporte:** Corrección del estado de tickets de soporte. -- **Build con CLI:** Corrección de parámetros al hacer build usando la CLI. -- **Apagado Nocturno:** Corrección del estado de Cluster con apagado nocturno activado. -- **Resoluciones de Pantalla:** Ajustes para algunas resoluciones en la pantalla principal de la consola. -- **Eliminar Web Services:** Corrección de errores al eliminar un Web Service en la tabla. - -## **Versión 2.0.1** - -🗓️ _15/10/2025_ - -**🚀 Novedades:** - -- **Tabla de Builds y Deploys:** Mejoras en los datos mostrados en la tabla de builds y deploys. - -**🐞 Correcciones:** - -- **Cron de Apagado Nocturno:** Corrección en la visualización del cron del apagado nocturno. -- **Estado de Cluster:** Corrección en la actualización de estado de un Cluster mientras se está actualizando. -- **Notificaciones Largas:** Corrección en la visualización de notificaciones largas. -- **VPN para Terceros:** Corrección en el acceso a VPN para terceros. -- **Cancelación de Deploy:** Corrección en el flujo de cancelación de deploy. -- **Creación de Provider:** Corrección de jerarquías de texto en el flujo de creación de Provider. -- **Missing Information:** Corrección de redirección en el flujo de información faltante en Project. -- **Usuario Viewer:** Corrección de navegación para usuario viewer. -- **Toggles en Modo Light:** Mejora de visibilidad de toggles en modo claro. -- **Password en Dependency MQ:** Corrección en la autogeneración de password para Dependency MQ. -- **Carga de Iconos:** Mejoras en la carga de iconos. -- **Pantallas de Transición:** Corrección de pantallas de transición durante carga de datos. -- **Tablas en Project Console:** Mejoras de visualización de tablas en la pantalla "Project Console". -- **Errores de Infraestructura:** Corrección de mensaje de errores al fallar la ejecución de módulo de infraestructura. -- **Selector de Cuentas Mobile:** Soporte de selector de cuentas para dispositivos móviles. - -## **Version 2.0.0** - -🗓️ _01/10/2025_ - -**🚀 New Features:** - -- **Rediseño completo de la consola:** Interfaz modernizada para una experiencia más limpia, ágil e intuitiva. -- **Soporte de tema claro:** Compatibilidad total con modo claro en la interfaz. -- **Bot de soporte:** Respuestas automáticas para consultas frecuentes. -- **Documentación ampliada:** Guías detalladas y cobertura completa de todas las funcionalidades. -- **Actualización lambdas:** Actualización de versiones de Python utilizadas en las Lambdas. -- **Project Chart:** Promovido a versión estable. -- **Project Access:** Promovido a versión estable. -- **Dependency Aurora MySQL:** Promovido a versión estable. -- **Dependency Oracle:** Promovido a versión estable. -- **Dependency MariaDB:** Promovido a versión estable. -- **Dependency Aurora PostgreSQL:** Promovido a versión estable. -- **Edición de dependencias:** Ahora es posible editar dependencias existentes. -- **Dockertron (beta):** Dockerización automática impulsada por IA. -- **Cancelar builds pendientes:** Opción para detener builds en cola. -- **Nueva dependencia MSK:** Soporte para Kafka con AWS MSK. -- **Mejoras en Webservices:** Configuración de custom ingress annotations y healthcheck opcional. -- **Nodepools avanzados:** Nuevas opciones de fallback y mezcla de instancias (reservadas, spot y bajo demanda) para un mayor control de costos y rendimiento. - -**🐞 Bug Fixes:** - -- **GitLab self-hosted:** Validación de URL corregida. -- **Cluster deletion:** Manejo mejorado de la eliminación en cascada. - -## **Version 1.7.16** - -🗓️ _21/07/2025_ - -**🚀 New Features:** - -- **Proyectos con repositorios públicos:** Ahora es posible crear y gestionar proyectos vinculados a repositorios públicos. -- **Exclusión de builds en métricas:** Se pueden excluir builds del dashboard de métricas en Grafana para mayor precisión en los reportes. - -**🐞 Bug Fixes:** - -- **Deploy de nuevos proyectos:** Se solucionaron problemas que impedían el despliegue correcto de proyectos recién creados. - -## **Version 1.7.15** - -🗓️ _07/07/2025_ - -**🚀 Novedades:** - -- **Resiliencia en nodegroups con Spot:** Ahora los nodegroups Spot evitan caídas cuando no hay instancias disponibles. -- **VariableGroups tipo archivo:** Se incorpora la opción de crear variablegroups basados en archivos. -- **Agente Bot (beta):** Nueva funcionalidad experimental de agente bot en versión beta. - -**🐞 Correcciones:** - -- **Dominios dependientes** Genera registros DNS automaticos cuando existe un dominio ya creado. -- **Cluster con apagado nocturno:** orrección en el estado mostrado de clusters con apagado automático. -- **Filtros en grupo de variables:** Arreglo de filtro por proyecto en listado de group de variables -- **Eliminacion de cluster:** Arreglo de flujo de eliminación de cluster -- **Estados de tickets de soporte:** Arreglo de transicion de estados en tickets de soporte. - -## **Version 1.7.14** - -🗓️ _26/06/2025_ - -**🚀 Novedades:** - -- **Mejoras en transición de estados:** Optimización en el cambio de estado de cluster addons y formularios. -- **Soporte con imágenes:** Posibilidad de subir imágenes en el chat de soporte. -- **Jobs desde cronjobs o existentes:** Ahora es posible lanzar un Job a partir de un cronjob o de un Job ya creado. -- **Errores de infraestructura:** Mejor interpretación y visualización de errores para facilitar la resolución. - -**🐞 Correcciones:** - -- **Volúmenes duplicados:** Solucionado el error al crear volúmenes con el mismo nombre. -- **Usuarios duplicados:** Corrección para evitar la creación de usuarios con correos electrónicos repetidos. -- **Dependencias duplicadas:** Se evita la creación de dependencias con nombres repetidos. -- **Monitoreo de dependencias:** Corrección en el rango de fechas de la pantalla de monitoreo de dependencias. - -## **Version 1.7.13** - -🗓️ _02/06/2025_ - -**🚀 Novedades:** - -- **Monitoreo de dependencias:** Mejoras en la visualización y seguimiento de dependencias. -- **Control de servicios:** Nuevo toggle para apagar o encender webservices y workers. -- **Builds con o sin caché:** Opción de ejecutar builds utilizando caché o desde cero. -- **Importación de Buckets con versionado:** Soporte para importar Buckets S3 con versionado activo. -- **Variable Groups:** Mejoras en la interfaz de gestión de grupos de variables. -- **Validaciones en Dockerfile:** Se agregan validaciones para mejorar la confiabilidad de los Dockerfiles. - -**🐞 Correcciones:** - -- **Logs de Jobs:** Ahora los enlaces de logs funcionan correctamente en los Jobs. -- **Nombres de ramas:** Soporte para branches con / en el nombre. -- **Pipelines de GitLab:** Se resolvieron errores en la ejecución de pipelines. - -## **Version 1.7.12** - -🗓️ _14/05/2025_ - -**🚀 Novedades:** - -- **Nuevo Flujo de Soporte:** Se incorporó un chatbot y un sistema de tickets para brindar mayor trazabilidad y agilidad en la atención. -- **Gestión de Subscripciones y Planes:** Nuevas mejoras para administrar subscripciones y planes de servicio. - -**🐞 Correcciones:** - -- **Mejoras en Formularios:** Optimización en la usabilidad y validación de formularios. -- **Consola de Proyectos:** Mejoras de UI/UX en la pantalla de la consola de proyectos. - -## **Version 1.7.11** - -🗓️ _24/04/2025_ - -**🚀 Novedades:** - -- **Kubernetes 1.31 y Karpenter 1.3 :** SleakOps ahora aprovisiona clusters en EKS 1.31 y actualiza el autoscaler a Karpenter 1.3. -- **Gestión de Secrets Mejorada:** Todos los secrets se guardan cifrados en AWS Systems Manager Parameter Store, además de la copia dentro del cluster, añadiendo una capa extra de seguridad - -**🐞 Correcciones:** - -- **Workers en Clúster de Desarrollo:** Se eliminó el PodDisruptionBudget el desescalado en entorno con apagado nocturno, mejorando la fiabilidad de los workers en entornos de desarrollo. -- **Mejoras en builds:** Ya no se dispara un build por cada cambio menor en un proyecto. -- **Mejoras en deploys:** Los jobs de build dejaron de usar Fargate y los logs ahora se persisten. -- **Detalles de Web Services:** Pantalla refinada con mayor claridad sobre endpoints, estado y métricas. -- **Add-on Kubecost:** Mejoras de estabilidad. - -## **Version 1.7.10** - -🗓️ _01/04/2025_ - -**🚀 Novedades:** - -- **Mayor Control sobre Permisos:** Ahora los proyectos pueden contar con permisos adicionales, ya sean políticas de IAM de AWS o permisos personalizados. -- **Detalles de Dependencias:** Se muestran los detalles de configuración de cada dependencia en su vista correspondiente. -- **Mejoras en la Pantalla de Actualización de Clusters:** Se incluye el análisis de EKS Insights directamente en SleakOps para optimizar las actualizaciones de los clusters. -- **Mejoras en Build & Proyectos:** Más detalles en el proceso de build y un flujo de validaciones de proyectos optimizado. - -**🐞 Correcciones:** - -- **Datos de Acceso al Cluster:** Solucionado un error al acceder a la información de conexión de un cluster cuando se seleccionaba una cuenta diferente. -- **Listado de Dominios:** Se agregó un filtro por cuenta al listar los dominios. -- **Mejoras Visuales en el Listado de Nodepools:** Se optimizó la presentación del listado de nodepools. -- **Instalación de Add-ons:** Ahora se actualiza correctamente el listado de add-ons después de una instalación. -- **Edición de Variable Groups:** Corregido un problema que impedía editar los grupos de variables. -- **Adjuntar Nuevas Suscripciones:** Solucionado un error que evitaba la correcta vinculación de nuevas suscripciones. -- **Pronóstico de Costos (Forecast Cost):** Se corrigieron problemas para mejorar la estimación de costos. - -## **Version 1.7.9** - -🗓️ _17/02/2025_ - -**🚀 Novedades:** - -- **Mejoras en Cronjobs:** Ahora puedes configurar las políticas de cronjobs y filtrar entre cronjobs activos e inactivos. -- **Notificaciones por Correo:** Cuando SleakOps genera una notificación, los usuarios la reciben por correo electrónico. -- **EKS Insights:** Durante la actualización de clusters, SleakOps consulta los Insights de EKS para verificar que todo funcione correctamente. - -**🐞 Correcciones:** - -- **Mejoras en los Flujos de Proyectos:** Se han mejorado varios ajustes, formularios y otros elementos para una gestión de proyectos más ágil. -- **Flujo de Creación de Cuentas AWS:** Ahora se admiten cuentas inactivas de AWS, proporcionando una guía clara para activarlas manualmente antes de retomar el proceso en SleakOps. - -## **Version 1.7.8** - -🗓️ _10/02/2025_ - -**🚀 Novedades:** - -- **Kubernetes 1.30:** Se actualizó la versión de EKS a la 1.30. - -**🐞 Correcciones:** - -- **Mejoras Estéticas Menores:** Se optimizó el diseño visual de las pantallas de proyectos y workloads. - -## **Versión 1.7.7** - -🗓️ _05/02/2025_ - -**🚀 Novedades:** - -- **Importación desde buckets externos:** Copia fácilmente archivos de un bucket S3 externo a SleakOps con la nueva función Import Bucket. -- **Rediseño de vista de Proyectos:** Accede a logs e información clave en una sola pantalla para mayor visibilidad. -- **Cambio de “Executions” a “Workloads”:** Se actualiza la terminología para alinearla con la notación interna del clúster. -- **Optimización de eliminación de Clusters:** Se agregó una validación adicional para un proceso de eliminación más seguro y estable. - -**🐞 Correcciones:** - -- **Permisos de Proyectos para Jobs:** Solucionado un problema donde los Jobs usaban permisos del nodo del clúster en lugar de los permisos del Proyecto. -- **Modificación de Docker Args:** Ahora los builds aplican correctamente los cambios de Docker Args hechos justo antes de su ejecución. -- **Generación de Perfiles VPN:** Resuelto un inconveniente que impedía generar perfiles para usuarios de terceros. - -## **Versión 1.7.6** - -🗓️ _06/01/2025_ - -**🚀 Novedades:** - -- **Nuevas configuraciones de Nodepool**: Ahora puedes establecer parámetros adicionales, como tamaños mínimos de instancia y más. -- **Job con imágenes específicas**: Al crear un job, puedes especificar la imagen y el tag exactos que deseas ejecutar (por ejemplo, `postgres:16.4`). -- **(BETA) Extensión de Charts por Proyecto**: SleakOps ahora puede extender los charts utilizados para desplegar carga de trabajo de proyectos, permitiéndote agregar dependencias. Para más información, consulta la [documentación de Helm](https://helm.sh/docs/helm/helm_dependency/). -- **Mejoras en CI/CD**: Se ha simplificado y optimizado el archivo de configuración de CI/CD. - -**🐞 Correcciones:** - -- **URL de Web Services internos**: Se corrigió un problema que causaba URLs incorrectas para los servicios web de tipo “interno”. -- **Eliminación de Volúmenes**: Se resolvieron problemas relacionados con la eliminación de volúmenes bajo varias políticas de retención. -- **Mejoras en UX/UI**: Mejoras en la interfaz para Proyectos, Volúmenes y Grupos de Variables. - -## **Version 1.7.5** - -🗓️ _09/12/2024_ - -**🚀 New Features:** - -- **Manejo de error en integracion con AWS:**: Se agrego un manejo para la tardanza de AWS en activar las cuentas creadas por Sleakops. -- **Links de addons en build:** Se agrega los links para poder ver logs y metricas en los builds. - -## **Version 1.7.4** - -🗓️ _05/12/2024_ - -**🚀 New Features:** - -- **Accesibilidad a addons**: Se agregaron enlaces en SleakOps para acceder fácilmente a ver logs, APM o métricas de recursos específicos. -- **OpenTelemetry** **(beta):** Se introdujo un add-on para mejorar la observabilidad en las aplicaciones desplegadas con SleakOps. Con OpenTelemetry, puedes tener tu propio APM para monitorear métricas como tasa de solicitudes, latencia y tasa de errores de tu aplicación. -- **Addons, Configuraciones de disponibilidad**: Se agregaron diversas configuraciones de disponibilidad para cada add-on. -- **Documentacion**: Se actualizó la documentación de los add-ons y se puso a disposición en español. - -**🐞 Correcciones:** - -- Revision Kubecost: Se revisó la integración entre Prometheus y Kubecost. Ahora Kubecost asigna correctamente los nombres de los recursos desplegados a sus costos, mejorando significativamente la precisión de sus estimaciones. Es posible habilitar en Kubecost el análisis aproximado de costos de tráfico de red dentro del clúster (Beta). - -## **Version 1.7.3** - -🗓️ _14/11/2024_ - -**🚀 New Features:** - -- **Oracle (beta):** Ahora podes gestionar Oracle RDS como dependency en Sleakops . -- **Aurora postgres serverless (beta)**: Se agrega soporte para crear y gestionar aurora postgres serverless. - -## **Version 1.7.2** - -🗓️ _05/11/2024_ - -**🚀 New Features:** - -- **Eliminacion de bucket s3:** Eliminacion de bucket s3 con muchos archivos. -- **VPN**: actualizacion del modulo de Pritunl - -**🐞 Correcciones:** - -- Varias correcciones de errores menores - -## **Version 1.7.1** - -🗓️ _30/10/2024_ - -**🚀 Nuevas Funciones:** - -- **Creacion de entornos y dominios:** Se mejora la creacion de entornos y dominios; ya no exite limitacion para usar un dominio diferente al que fue configurado a nivel global -- **Notificaciones**: Se agrega un sistema de notificaciones para avisar al usuario de todas las acciones manules que tiene pendiente y actualizaciones de infraestructura programadas. -- **Documentacion:** Se actualiza documentacion para la gestion de dominios, proyectos, dependencias, variables de entorno. - -**🐞 Correcciones:** - -- Varias correcciones de errores menores. - -## **Versión 1.7.0** - -🗓️ _14/10/2024_ - -**🚀 Nuevas Funciones:** - -- **Gestión Avanzada de Nodos:** Se agregó la gestión de pools de nodos para tener un mayor control sobre los tipos de nodos donde se ejecutan las cargas de trabajo. -- **Migración de Módulos de Clúster:** Todos los módulos creados con el clúster ahora se ejecutan en instancias Graviton, mejorando el rendimiento y reduciendo costos. -- **Complementos de Clúster:** Todos los complementos ahora se ejecutan en instancias Graviton, lo que mejora el rendimiento y reduce los costos. -- **Nodos de Construcción Aislados:** Las construcciones ahora se ejecutan en nodos dedicados separados de los nodos de aplicaciones, mejorando la estabilidad de los nodos que ejecutan aplicaciones. - -**🐞 Correcciones** - -- Varias correcciones menores de errores. - -## **Versión 1.6.3** - -🗓️ _27/09/2024_ - -**🚀 Nuevas Funciones:** - -- **Registro:** Implementado un nuevo flujo de registro. - -**🐞 Correcciones** - -- Varias correcciones menores de errores y mejoras. - -## **Versión 1.6.2** - -🗓️ _19/09/2024_ - -**🚀 Nuevas Funciones:** - -- **Actualizaciones:** Actualizados **Prometheus**, **Loki** y **EBS CSI Driver** a las versiones más recientes de agosto de 2024. -- **Migración del Driver EBS CSI:** SleakOps ahora usa el complemento gestionado por AWS para EKS, reemplazando la versión autogestionada. -- **Prometheus con EBS:** Prometheus ahora utiliza volúmenes EBS para la persistencia de datos, evitando pérdidas en caso de fallos de pods. -- **Loki con SimpleScalable:** Adopta una estructura **SimpleScalable** con almacenamiento **TSDB** para registros, mejorando el rendimiento. -- **Colas Muertas en SQS:** Ahora es compatible con la creación de colas SQS con colas muertas asociadas para un mejor manejo de errores. - -**🐞 Correcciones** - -- Varias correcciones menores de errores y mejoras en los flujos de ejecución de la plataforma. - -## **Versión 1.6.1** - -🗓️ _22/08/2024_ - -**🚀 Nuevas Funciones:** - -- **Actualización de Versiones de Dependencias:** Se actualizaron versiones de dependencias como MQ, Elasticsearch, Memcache y Redis. -- **Mejoras en la Autenticación:** Se agregó soporte para almacenar tokens de autenticación mediante cookies en lugar de almacenamiento local. -- Se agregó la impresión de registros de validación ACM en la pantalla de detalles y el estado de ACM ahora está incluido en el sistema. - -**🐞 Correcciones** - -- Se resolvieron problemas en el flujo de creación de proveedores. - -## **Versión 1.6.0** - -🗓️ _12/08/2024_ - -**🚀 Nuevas Funciones:** - -- **Soporte para Instancias ARM y Versiones Adicionales de RDS:** Se añadieron instancias ARM y versiones extra en RDS. -- **Actualización de EKS a la Versión 1.29:** EKS ha sido actualizado a la versión 1.29. Ahora se muestran los registros de cambios de EKS. -- **Mejoras en Creación y Edición de Proveedores:** Se actualizaron las pantallas y campos de los formularios de proveedores, incluyendo cambios en estados y visualización. -- **Búsqueda Mejorada de Repositorios:** Añadido soporte para búsqueda asincrónica en el selector de repositorios y se mejoró la búsqueda en GitHub, GitLab y Bitbucket. -- **Parametrización de Healthchecks:** Ahora se pueden parametrizar propiedades de healthcheck con JSONSchema. -- **Nuevo Tablero:** Se añadió un nuevo tablero para ver el consumo por namespace. - -**🐞 Correcciones** - -- Solucionado un error al regenerar certificados y problemas con construcciones que no se ejecutaban correctamente. -- Errores de frontend relacionados con listados y problemas de API que causaban errores en filtros fueron corregidos. - -# **Versión 1.5.1** - -🗓️ _24/06/2024_ - -**🚀 Nuevas Funciones:** - -- **Configuración Avanzada de Recursos:** Se implementaron opciones avanzadas para la configuración de recursos en entornos de proyectos. -- **Optimización de Scripts de Recolección de Datos:** Mejorada la eficiencia de los scripts de recolección de datos para una ejecución más rápida. - -**🐞 Correcciones:** - -- Resueltos varios errores de interfaz que afectaban la usabilidad del sistema. - -## **Versión 1.5.0** - -🗓️ _23/05/2024_ - -**🚀 Nuevas Funciones:** - -- **Creación de Múltiples Entornos de Proyecto:** Ahora puedes crear múltiples entornos de proyecto utilizando el mismo repositorio y rama. -- **Validación de Dominios para Alias:** Mejorada la validación de creación de dominios para alias utilizando un ACM existente y utilizable para ingress. -- **Configuración de Recursos en Entornos de Proyecto:** Se añadió la capacidad de configurar recursos de construcción y despliegue por entorno de proyecto. -- **Configuración de Solicitudes de Despliegue y Construcción:** Se agregó la opción de configurar solicitudes de despliegue y construcción en un entorno de proyecto. -- **Tablero de Grafana:** Se incorporó un tablero de Grafana para visualizar el consumo por namespace. -- **Configuración de Loki:** Ahora es posible buscar registros por namespace con la nueva configuración de Loki. -- **Recolección de Datos:** Mejorado el script de recolección de costos para que sea idempotente y ejecutable en fechas específicas. - -**🐞 Correcciones:** - -- Corregido un error al crear dependencias de S3 y solucionado un problema crítico con vargroups durante actualizaciones de apagado del clúster. -- Corregido un error crítico al invitar colaboradores. - -## **Versión 1.4.3** - -🗓️ _13/05/2024_ - -**🚀 Nuevas Funciones:** - -- **Mejoras en la Gestión de Tableros:** Mejorada la carga de tableros, permitiendo visualizarlos incluso si no se selecciona una cuenta. -- **Mejoras en las Pantallas de Facturación y Proyecto:** Se realizaron mejoras en la pantalla de facturación, incluyendo una nueva sección "otros" para considerar costos previamente no contabilizados. También se mejoró la pantalla de entornos de proyecto. -- **Actualización de Políticas:** La política de CloudFormation ha sido actualizada para mejorar la gestión y seguridad. - -**🐞 Correcciones:** - -- Corregido un error crítico que impedía la creación de proveedores. -- Revisado y resuelto un problema relacionado con la integración de NewRelic. -- Solucionado un problema con el token de actualización al solicitar la URI de la VPN. -- **Errores en la Pantalla de Validación de ACM y Logs de Construcción:** Se corrigieron problemas en la tabla de validación de ACM y en la visualización de logs para construcciones en estado de creación. - -## Versión 1.4.2 - -🗓️ _25/04/2024_ - -**🚀 Nuevas Funciones:** - -- **Nuevas Métricas:** Se añadieron nuevas métricas para los buckets de S3 y RabbitMQ, mejorando el monitoreo de servicios. También se implementó un sistema de monitoreo para métricas de OpenSearch. -- **Reorganización del Esquema de Monitoreo:** Las estructuras del esquema de monitoreo se reorganizaron para una mejor gestión y visualización. La pantalla de monitoreo de dependencias ahora admite diferentes tipos de recursos, proporcionando una vista más detallada. - -**🐞 Correcciones:** - -- Resuelto un problema crítico con vargroups, asegurando su correcto funcionamiento. - -## **Versión 1.4.1** - -🗓️ _11/04/2024_ - -**🚀 Nuevas Funciones:** - -- **Monitoreo de Dependencias y OpenSearch:** Se creó una nueva página de monitoreo para dependencias, facilitando el seguimiento de su estado. También se incluyó OpenSearch. -- **Política de Ciclo de Vida para ECR:** Se configuró una política de ciclo de vida para ECR, mejorando la gestión de imágenes. - -**🐞 Correcciones:** - -- Solucionado el problema de nombres duplicados entre clúster y nodo en Redis. -- Resueltos varios errores de frontend que afectaban la experiencia del usuario. -- Corregido el problema donde se mostraba un error al intentar publicar un vargroup sin un servicio asociado. -- Se solucionaron los problemas al realizar múltiples despliegues y lanzamientos consecutivos. - -## **Versión 1.4.0** - -🗓️ _06/03/2024_ - -**🚀 Nuevas Funciones:** - -- **Configuración de Grafana:** Se configuró la base de datos para el addon de Grafana, junto con DataSources y Dashboards. -- **Persistencia de Métricas de Prometheus con Thanos:** Se agregó soporte para la persistencia de métricas de Prometheus usando Thanos. -- **Nueva API de Volúmenes:** Se implementó soporte para la nueva API de volúmenes, mostrando estados y aplicando configuraciones para despliegues. -- La opción de actualización en addons fue deshabilitada. -- Ahora, cuando se elimina una dependencia, se crea un despliegue con estado "pendiente de aprobación" en lugar de uno automático. - -**🐞 Correcciones:** - -- Solucionado un problema donde se añadían pre-hooks y nuevos volúmenes durante los despliegues, impidiendo su generación. -- Los subdominios ahora se marcan correctamente como delegados si los dominios principales ya están delegados. - -## **Versión 1.3.0** - -🗓️ _03/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Vista Detallada de Proyectos:** Ahora está disponible una vista detallada de proyectos en la nueva interfaz. -- **API de Métricas de RDS:** Se agregó una nueva API para mostrar métricas de RDS, mejorando la visibilidad de los recursos. -- **LogViewer Mejorado:** La carga de LogViewer ahora es más rápida y eficiente. -- **Mejor Onboarding:** Se implementó un nuevo proceso de onboarding para una configuración más sencilla. -- **Monitoreo de Redis:** Se añadió el monitoreo de Redis, mejorando la supervisión de infraestructura. -- **Configuración de Réplicas en RDS:** Se agregó la opción de configurar réplicas en la dependencia RDS para mayor flexibilidad. -- **Estado de Eliminación de Dominios:** La eliminación de dominios ahora crea un despliegue con estado `pendiente de aprobación` en lugar de un despliegue automático. -- **Mejoras en la Ejecución de Jobs:** Se mejoró la ejecución de jobs, permitiendo reintentos automáticos en caso de fallas iniciales. - -**🐞 Correcciones:** - -- Se resolvieron problemas de integración con Bitbucket. -- Corregidos problemas de valores indefinidos en Vargroups. - -## **Versión 1.2.4** - -🗓️ _15/02/2024_ - -**🚀 Nuevas Funciones:** - -- **Optimización del Selector de Clústeres:** Se optimizó el comportamiento del selector de clústeres. -- **Inicio de Sesión en el Flujo de Subscripción de AWS:** El flujo de subscripción de AWS ahora incluye la posibilidad de iniciar sesión directamente. - -**🐞 Correcciones:** - -- Resueltos problemas de callbacks para integraciones con Git y rutas de archivos Docker para GitLab. -- Corregidos errores menores relacionados con la pantalla de facturación. - -## **Versión 1.2.3** - -🗓️ _05/02/2024_ - -**🚀 Nuevas Funciones:** - -- **Desacoplamiento de Alias en Servicios Web:** La creación de alias ahora está separada del formulario de servicios web. -- **Restablecimiento de Contraseña IAM:** Ahora es posible restablecer la contraseña de IAM para un usuario. - -**🐞 Correcciones:** - -- Se corrigió un problema menor con las tareas de lanzamiento. - -## **Versión 1.2.2** - -🗓️ _25/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Botón de Validación de Dominio:** Se agregó un botón de "verificar validación" en el panel de dominio para facilitar la gestión de dominios. -- **Tabla de Registro de Actividad:** Se creó una tabla de registro de actividad. -- **Cifrado de Claves de Acceso:** Ahora las claves de acceso para proveedores de código (GIT) están cifradas. - -**🐞 Correcciones:** - -- Se resolvió un problema donde la API no recreaba correctamente el módulo ACM durante la regeneración. - -## **Versión 1.2.1** - -🗓️ _12/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Optimización de Formularios de Vargroups:** Se mejoró la usabilidad de los formularios de Vargroups. -- **Eliminación de Proveedores y Cuentas de Usuario:** Eliminar un proveedor ahora también elimina las cuentas de usuario asociadas. - -**🐞 Correcciones:** - -- Se corrigió un error en la regeneración de certificados ACM. -- Solucionado un problema en la eliminación de proveedores. - -## **Versión 1.2.0** - -🗓️ _05/01/2024_ - -**🚀 Nuevas Funciones:** - -- **Logs en Grafana:** Se configuró una fuente de datos en Grafana para mostrar logs de S3. -- **Botón de Actualización de Clúster:** Se añadió un botón para permitir la actualización de clústeres desde la interfaz. -- **Registro de Actividad de Usuario:** Se creó un registro de actividad para acciones de usuarios. -- **Despliegue para Validación de Dominios:** Ahora se puede crear un despliegue que se ejecuta una vez que los dominios son validados. -- **Autenticación de Dos Factores:** Se añadió autenticación de dos factores (2FA) en el inicio de sesión para mayor seguridad. - -**🐞 Correcciones:** - -- Se resolvió un problema con builds que usaban la misma rama que la predeterminada. -- Mejorado el procesamiento de logs para mayor velocidad. -- Varias optimizaciones de frontend, incluyendo estilos, búsqueda y visibilidad de recursos pendientes. - -## **Versión 1.1.1** - -🗓️ _05/12/2023_ - -**🚀 Nuevas Funciones:** - -- **Visor de Logs en Jobs:** Se agregó un visor de logs en la lista de jobs, similar al de los despliegues. -- **Dashboard v2:** Mejoras en la segunda versión del Dashboard, con más opciones y mejor organización de la información. -- **Certificados de Clúster:** Los certificados de clúster ahora se eliminan y actualizan automáticamente para evitar problemas de expiración. - -## **Versión 1.1.0** - -🗓️ _06/11/2023_ - -**🚀 Nuevas Funciones:** - -- **Gestión de Vargroups:** Se añadió la opción de mostrar vargroups en los formularios de servicios, workers, hooks y cronjobs. -- **Kubecost:** Se integró Kubecost con Prometheus-stack. - -**🐞 Correcciones:** - -- Solucionado el problema con Karpenter en instancias spot. -- Corrección en roles de usuario y edición de usuarios. -- Resueltos problemas al eliminar un entorno y la eliminación incorrecta de dominios. -- Solucionado el error al intentar iniciar manualmente el clúster. -- Corregido un error en la generación de hooks. - -## **Versión 1.0.5** - -🗓️ _27/10/2023_ - -**🐞 Correcciones:** - -- Solucionados problemas de despliegue y corrección de Karpenter con instancias spot. -- Se corrigieron problemas al eliminar entidades y validar URLs de servicios. - -## **Versión 1.0.4** - -🗓️ _11/10/2023_ - -**🚀 Nuevas Funciones:** - -- **Refactorización y Mejoras:** Refactorización del dashboard y mejoras en la visualización de logs y gestión de eliminación de entidades. - -**🐞 Correcciones:** - -- Solucionados problemas al editar usuarios. -- Corrección en la gestión del estado de clústeres. -- Resueltos problemas con dominios de entornos. -- Arreglado el manejo de errores en respuestas de S3 con CloudFront. - -## **Versión 1.0.3** - -🗓️ _25/09/2023_ - -**🚀 Nuevas Funciones:** - -- **Botones de Gestión y Mejoras en Formularios:** Se añadieron botones para gestión de recursos y mejoras en los formularios de mapeo de variables. -- **Cronjobs y Regeneración de Dominios:** Ahora puedes detener o activar cronjobs y regenerar dominios. - -**🐞 Correcciones:** - -- Solucionado el problema de obtención de la URI VPN en Pritunl. -- Corregido el problema de selección de cuenta para usuarios solo visualizadores. -- Mejorado el manejo de información de health checks enviada al backend. - -## **Versión 1.0.2** - -🗓️ _04/09/2023_ - -**🚀 Nuevas Funciones:** - -- **Optimización de Despliegues:** Simplificación del proceso de despliegue y edición de entornos de proyecto (ProjectEnv), facilitando configuración y despliegue. -- **Ajustes de Recursos y Configuración:** Ahora puedes crear alias personalizados para buckets. -- **Mejoras en Health Checks:** La sonda de readiness para servicios en la cuenta de desarrollo ahora es opcional. - -**🐞 Correcciones:** - -- Resueltos problemas relacionados con VPN y configuración de parámetros de seguridad. - -## **Versión 1.0.1** - -🗓️ _29/08/2023_ - -**🚀 Nuevas Funciones:** - -- **Gestión de Suscripciones:** El inicio de sesión y las actualizaciones de tokens ahora se controlan en función del estado de la suscripción. Además, se implementó una nueva API para registrar usuarios y empresas, validando suscripciones pendientes, con un nuevo modelo que mejora la gestión de suscripciones e integra AwsClient. -- **Onboarding desde Marketplace:** Proceso simplificado para la creación de usuarios provenientes de un marketplace. - -## **Versión 1.0.0** - -🗓️ _23/08/2023_ - -**🚀 Nuevas Funciones:** - -- **Configuración de Volúmenes:** Ahora puedes configurar volúmenes en entornos de proyecto directamente desde el formulario. -- **Apagado Nocturno con Zona Horaria:** Se añadió soporte para seleccionar zonas horarias en el apagado nocturno. -- **Inicio Manual de Clústeres:** Nuevo botón para iniciar clústeres manualmente. -- **Integración con CloudFront:** Soporte para usar CloudFront y mejorar la entrega de contenido. -- **Backups Automáticos:** Configuración de backups automáticos para dependencias. -- **Instancias Graviton:** Soporte para usar instancias Graviton en nodos. -- **Cifrado:** Implementación de cifrado en StackSettings para mayor seguridad. - -**🐞 Correcciones:** - -- Resuelto un problema en la API de facturación y estimación de costos. -- Corregidos errores al eliminar Proveedores y VPNs. -- Ahora puedes eliminar certificados ACM usados por un Load Balancer sin problemas.