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/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-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..50de69fbc --- /dev/null +++ b/content/changelog/en/2023-08-23-version-1.0.0.md @@ -0,0 +1,39 @@ +--- +title: Version 1.0.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 54 +--- + +`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..1fc779a60 --- /dev/null +++ b/content/changelog/en/2023-08-29-version-1.0.1.md @@ -0,0 +1,21 @@ +--- +title: Version 1.0.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 53 +--- + +`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..4a8ac96ae --- /dev/null +++ b/content/changelog/en/2023-09-04-version-1.0.2.md @@ -0,0 +1,29 @@ +--- +title: Version 1.0.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 52 +--- + +`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..2b26fd4de --- /dev/null +++ b/content/changelog/en/2023-09-25-version-1.0.3.md @@ -0,0 +1,29 @@ +--- +title: Version 1.0.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 51 +--- + +`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..1cac9b374 --- /dev/null +++ b/content/changelog/en/2023-10-11-version-1.0.4.md @@ -0,0 +1,28 @@ +--- +title: Version 1.0.4 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 50 +--- + +`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-V1.0.5.md deleted file mode 100644 index b0211fa26..000000000 --- a/content/changelog/en/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/content/changelog/en/2023-10-27-version-1.0.5.md b/content/changelog/en/2023-10-27-version-1.0.5.md new file mode 100644 index 000000000..b9eec4dba --- /dev/null +++ b/content/changelog/en/2023-10-27-version-1.0.5.md @@ -0,0 +1,19 @@ +--- +title: Version 1.0.5 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 49 +--- + +`patch release` Β· 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/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..177df5c88 --- /dev/null +++ b/content/changelog/en/2023-11-06-version-1.1.0.md @@ -0,0 +1,31 @@ +--- +title: Version 1.1.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 48 +--- + +`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..625f24b79 --- /dev/null +++ b/content/changelog/en/2023-12-05-version-1.1.1.md @@ -0,0 +1,23 @@ +--- +title: Version 1.1.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 47 +--- + +`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..3dfc0a259 --- /dev/null +++ b/content/changelog/en/2024-01-05-version-1.2.0.md @@ -0,0 +1,35 @@ +--- +title: Version 1.2.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 46 +--- + +`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..11880cdcd --- /dev/null +++ b/content/changelog/en/2024-01-12-version-1.2.1.md @@ -0,0 +1,28 @@ +--- +title: Version 1.2.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 45 +--- + +`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..4b8c9986c --- /dev/null +++ b/content/changelog/en/2024-01-25-version-1.2.2.md @@ -0,0 +1,29 @@ +--- +title: Version 1.2.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 44 +--- + +`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..7374f2994 --- /dev/null +++ b/content/changelog/en/2024-02-05-version-1.2.3.md @@ -0,0 +1,27 @@ +--- +title: Version 1.2.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 43 +--- + +`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..341b1f982 --- /dev/null +++ b/content/changelog/en/2024-02-15-version-1.2.4.md @@ -0,0 +1,28 @@ +--- +title: Version 1.2.4 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 42 +--- + +`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..619da8ad8 --- /dev/null +++ b/content/changelog/en/2024-03-01-version-1.3.0.md @@ -0,0 +1,40 @@ +--- +title: Version 1.3.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 41 +--- + +`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..e0ff7e44e --- /dev/null +++ b/content/changelog/en/2024-03-06-version-1.4.0.md @@ -0,0 +1,32 @@ +--- +title: Version 1.4.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 40 +--- + +`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..30d1a7e8d --- /dev/null +++ b/content/changelog/en/2024-04-11-version-1.4.1.md @@ -0,0 +1,30 @@ +--- +title: Version 1.4.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 39 +--- + +`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..7899c7c6a --- /dev/null +++ b/content/changelog/en/2024-04-25-version-1.4.2.md @@ -0,0 +1,27 @@ +--- +title: Version 1.4.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 38 +--- + +`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..e0bd2791b --- /dev/null +++ b/content/changelog/en/2024-05-13-version-1.4.3.md @@ -0,0 +1,33 @@ +--- +title: Version 1.4.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 37 +--- + +`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..823dd1610 --- /dev/null +++ b/content/changelog/en/2024-05-23-version-1.5.0.md @@ -0,0 +1,38 @@ +--- +title: Version 1.5.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 36 +--- + +`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..1135d91b0 --- /dev/null +++ b/content/changelog/en/2024-06-24-version-1.5.1.md @@ -0,0 +1,27 @@ +--- +title: Version 1.5.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 35 +--- + +`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..9398c0c59 --- /dev/null +++ b/content/changelog/en/2024-08-12-version-1.6.0.md @@ -0,0 +1,38 @@ +--- +title: Version 1.6.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 34 +--- + +`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..5c1e279d6 --- /dev/null +++ b/content/changelog/en/2024-08-22-version-1.6.1.md @@ -0,0 +1,28 @@ +--- +title: Version 1.6.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 33 +--- + +`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..726adec62 --- /dev/null +++ b/content/changelog/en/2024-09-19-version-1.6.2.md @@ -0,0 +1,33 @@ +--- +title: Version 1.6.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 32 +--- + +`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..c8363b7e5 --- /dev/null +++ b/content/changelog/en/2024-09-27-version-1.6.3.md @@ -0,0 +1,25 @@ +--- +title: Version 1.6.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 31 +--- + +`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..cd6884c5e --- /dev/null +++ b/content/changelog/en/2024-10-14-version-1.7.0.md @@ -0,0 +1,31 @@ +--- +title: Version 1.7.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 30 +--- + +`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..9fb043eef --- /dev/null +++ b/content/changelog/en/2024-10-30-version-1.7.1.md @@ -0,0 +1,29 @@ +--- +title: Version 1.7.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 29 +--- + +`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..f1099ba06 --- /dev/null +++ b/content/changelog/en/2024-11-05-version-1.7.2.md @@ -0,0 +1,31 @@ +--- +title: Version 1.7.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 28 +--- + +`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..8c5b0fe96 --- /dev/null +++ b/content/changelog/en/2024-11-14-version-1.7.3.md @@ -0,0 +1,27 @@ +--- +title: Version 1.7.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 27 +--- + +`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..db98b89d1 --- /dev/null +++ b/content/changelog/en/2024-12-05-version-1.7.4.md @@ -0,0 +1,32 @@ +--- +title: Version 1.7.4 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 26 +--- + +`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..4335b92a5 --- /dev/null +++ b/content/changelog/en/2024-12-09-version-1.7.5.md @@ -0,0 +1,21 @@ +--- +title: Version 1.7.5 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 25 +--- + +`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..d0ffd64d9 --- /dev/null +++ b/content/changelog/en/2025-01-06-version-1.7.6.md @@ -0,0 +1,36 @@ +--- +title: Version 1.7.6 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 24 +--- + +`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..e9fac2055 --- /dev/null +++ b/content/changelog/en/2025-02-05-version-1.7.7.md @@ -0,0 +1,36 @@ +--- +title: Version 1.7.7 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 23 +--- + +`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..620389979 --- /dev/null +++ b/content/changelog/en/2025-02-10-version-1.7.8.md @@ -0,0 +1,26 @@ +--- +title: Version 1.7.8 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 22 +--- + +`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..108f087df --- /dev/null +++ b/content/changelog/en/2025-02-17-version-1.7.9.md @@ -0,0 +1,32 @@ +--- +title: Version 1.7.9 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 21 +--- + +`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..2a7f27cdd --- /dev/null +++ b/content/changelog/en/2025-04-01-version-1.7.10.md @@ -0,0 +1,46 @@ +--- +title: Version 1.7.10 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 20 +--- + +`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..7c598de25 --- /dev/null +++ b/content/changelog/en/2025-04-24-version-1.7.11.md @@ -0,0 +1,36 @@ +--- +title: Version 1.7.11 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 19 +--- + +`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..b31791690 --- /dev/null +++ b/content/changelog/en/2025-05-14-version-1.7.12.md @@ -0,0 +1,30 @@ +--- +title: Version 1.7.12 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 18 +--- + +`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..890827a69 --- /dev/null +++ b/content/changelog/en/2025-06-02-version-1.7.13.md @@ -0,0 +1,40 @@ +--- +title: Version 1.7.13 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 17 +--- + +`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..60417f506 --- /dev/null +++ b/content/changelog/en/2025-06-26-version-1.7.14.md @@ -0,0 +1,38 @@ +--- +title: Version 1.7.14 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 16 +--- + +`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..b708c9893 --- /dev/null +++ b/content/changelog/en/2025-07-07-version-1.7.15.md @@ -0,0 +1,38 @@ +--- +title: Version 1.7.15 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 15 +--- + +`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..b2f16cf8a --- /dev/null +++ b/content/changelog/en/2025-07-21-version-1.7.16.md @@ -0,0 +1,28 @@ +--- +title: Version 1.7.16 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 14 +--- + +`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..fc8f14e37 --- /dev/null +++ b/content/changelog/en/2025-10-01-version-2.0.0.md @@ -0,0 +1,60 @@ +--- +title: Version 2.0.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 13 +--- + +`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..5d4238d9f --- /dev/null +++ b/content/changelog/en/2025-10-15-version-2.0.1.md @@ -0,0 +1,54 @@ +--- +title: Version 2.0.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 12 +--- + +`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..3d9524904 --- /dev/null +++ b/content/changelog/en/2025-11-10-version-2.1.0.md @@ -0,0 +1,64 @@ +--- +title: Version 2.1.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 11 +--- + +`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..30c6f7ecb --- /dev/null +++ b/content/changelog/en/2025-11-13-version-2.2.0.md @@ -0,0 +1,32 @@ +--- +title: Version 2.2.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 10 +--- + +`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..769bc768e --- /dev/null +++ b/content/changelog/en/2025-11-18-version-2.3.0.md @@ -0,0 +1,40 @@ +--- +title: Version 2.3.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 9 +--- + +`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..9cd807c1f --- /dev/null +++ b/content/changelog/en/2025-12-01-version-2.3.1.md @@ -0,0 +1,44 @@ +--- +title: Version 2.3.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 8 +--- + +`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..ce39840bf --- /dev/null +++ b/content/changelog/en/2025-12-19-version-2.3.2.md @@ -0,0 +1,78 @@ +--- +title: Version 2.3.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 7 +--- + +`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..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 @@ -1,46 +1,82 @@ --- title: Version 2.4.0 authors: - - name: Sleakops Team + - name: SleakOps Team tags: - release +sidebar_position: 6 +--- + +`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. + --- -## **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. 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..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 @@ -1,24 +1,36 @@ --- title: Version 2.5.0 authors: - - name: Sleakops Team + - name: SleakOps Team tags: - release +sidebar_position: 5 --- -# πŸš€ 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..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 @@ -1,36 +1,60 @@ --- title: Version 2.5.1 authors: - - name: Sleakops Team + - name: SleakOps Team tags: - release +sidebar_position: 4 --- -# πŸš€ 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..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 @@ -1,36 +1,70 @@ --- title: Version 2.6.0 -authors: [] +authors: + - name: SleakOps Team tags: - release +sidebar_position: 3 --- -## 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 new file mode 100644 index 000000000..250ec330a --- /dev/null +++ b/content/changelog/en/2026-03-17-version-2.7.0.md @@ -0,0 +1,75 @@ +--- +title: Version 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 2 +--- + +`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. + +--- 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..93610aa58 --- /dev/null +++ b/content/changelog/en/2026-03-26-version-2.8.0.md @@ -0,0 +1,63 @@ +--- +title: Version 2.8.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 1 +--- + +`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. + +--- 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..e18c303df --- /dev/null +++ b/content/changelog/es/2023-08-23-version-1.0.0.md @@ -0,0 +1,39 @@ +--- +title: VersiΓ³n 1.0.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 54 +--- + +`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..000986ecc --- /dev/null +++ b/content/changelog/es/2023-08-29-version-1.0.1.md @@ -0,0 +1,21 @@ +--- +title: VersiΓ³n 1.0.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 53 +--- + +`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..7bc889f24 --- /dev/null +++ b/content/changelog/es/2023-09-04-version-1.0.2.md @@ -0,0 +1,29 @@ +--- +title: VersiΓ³n 1.0.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 52 +--- + +`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..6adaa21db --- /dev/null +++ b/content/changelog/es/2023-09-25-version-1.0.3.md @@ -0,0 +1,29 @@ +--- +title: VersiΓ³n 1.0.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 51 +--- + +`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..972f1f1a0 --- /dev/null +++ b/content/changelog/es/2023-10-11-version-1.0.4.md @@ -0,0 +1,28 @@ +--- +title: VersiΓ³n 1.0.4 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 50 +--- + +`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 52% 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..6e96ac2e4 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,19 @@ --- -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 +sidebar_position: 49 --- -# πŸš€ 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..945af9164 --- /dev/null +++ b/content/changelog/es/2023-11-06-version-1.1.0.md @@ -0,0 +1,31 @@ +--- +title: VersiΓ³n 1.1.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 48 +--- + +`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..a07aeb574 --- /dev/null +++ b/content/changelog/es/2023-12-05-version-1.1.1.md @@ -0,0 +1,23 @@ +--- +title: VersiΓ³n 1.1.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 47 +--- + +`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..6b182d9c4 --- /dev/null +++ b/content/changelog/es/2024-01-05-version-1.2.0.md @@ -0,0 +1,35 @@ +--- +title: VersiΓ³n 1.2.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 46 +--- + +`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..3061d23ba --- /dev/null +++ b/content/changelog/es/2024-01-12-version-1.2.1.md @@ -0,0 +1,28 @@ +--- +title: VersiΓ³n 1.2.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 45 +--- + +`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..ac9c06304 --- /dev/null +++ b/content/changelog/es/2024-01-25-version-1.2.2.md @@ -0,0 +1,29 @@ +--- +title: VersiΓ³n 1.2.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 44 +--- + +`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..34267aa41 --- /dev/null +++ b/content/changelog/es/2024-02-05-version-1.2.3.md @@ -0,0 +1,27 @@ +--- +title: VersiΓ³n 1.2.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 43 +--- + +`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..24fbea8df --- /dev/null +++ b/content/changelog/es/2024-02-15-version-1.2.4.md @@ -0,0 +1,28 @@ +--- +title: VersiΓ³n 1.2.4 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 42 +--- + +`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..cc32bddb7 --- /dev/null +++ b/content/changelog/es/2024-03-01-version-1.3.0.md @@ -0,0 +1,40 @@ +--- +title: VersiΓ³n 1.3.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 41 +--- + +`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..653301e4e --- /dev/null +++ b/content/changelog/es/2024-03-06-version-1.4.0.md @@ -0,0 +1,32 @@ +--- +title: VersiΓ³n 1.4.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 40 +--- + +`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..257919b4e --- /dev/null +++ b/content/changelog/es/2024-04-11-version-1.4.1.md @@ -0,0 +1,30 @@ +--- +title: VersiΓ³n 1.4.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 39 +--- + +`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..1cbccc4c4 --- /dev/null +++ b/content/changelog/es/2024-04-25-version-1.4.2.md @@ -0,0 +1,27 @@ +--- +title: VersiΓ³n 1.4.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 38 +--- + +`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..2972977da --- /dev/null +++ b/content/changelog/es/2024-05-13-version-1.4.3.md @@ -0,0 +1,33 @@ +--- +title: VersiΓ³n 1.4.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 37 +--- + +`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..1657004d3 --- /dev/null +++ b/content/changelog/es/2024-05-23-version-1.5.0.md @@ -0,0 +1,38 @@ +--- +title: VersiΓ³n 1.5.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 36 +--- + +`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..8848f1484 --- /dev/null +++ b/content/changelog/es/2024-06-24-version-1.5.1.md @@ -0,0 +1,27 @@ +--- +title: VersiΓ³n 1.5.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 35 +--- + +`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..a899e6297 --- /dev/null +++ b/content/changelog/es/2024-08-12-version-1.6.0.md @@ -0,0 +1,38 @@ +--- +title: VersiΓ³n 1.6.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 34 +--- + +`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..0ee20f1ce --- /dev/null +++ b/content/changelog/es/2024-08-22-version-1.6.1.md @@ -0,0 +1,28 @@ +--- +title: VersiΓ³n 1.6.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 33 +--- + +`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..868d4af18 --- /dev/null +++ b/content/changelog/es/2024-09-19-version-1.6.2.md @@ -0,0 +1,33 @@ +--- +title: VersiΓ³n 1.6.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 32 +--- + +`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..6f19ee382 --- /dev/null +++ b/content/changelog/es/2024-09-27-version-1.6.3.md @@ -0,0 +1,25 @@ +--- +title: VersiΓ³n 1.6.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 31 +--- + +`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..95611cb65 --- /dev/null +++ b/content/changelog/es/2024-10-14-version-1.7.0.md @@ -0,0 +1,31 @@ +--- +title: VersiΓ³n 1.7.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 30 +--- + +`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..a14f2c4b3 --- /dev/null +++ b/content/changelog/es/2024-10-30-version-1.7.1.md @@ -0,0 +1,29 @@ +--- +title: VersiΓ³n 1.7.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 29 +--- + +`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..4a79f31c4 --- /dev/null +++ b/content/changelog/es/2024-11-05-version-1.7.2.md @@ -0,0 +1,31 @@ +--- +title: VersiΓ³n 1.7.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 28 +--- + +`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..52ff4422d --- /dev/null +++ b/content/changelog/es/2024-11-14-version-1.7.3.md @@ -0,0 +1,27 @@ +--- +title: VersiΓ³n 1.7.3 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 27 +--- + +`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..d18742706 --- /dev/null +++ b/content/changelog/es/2024-12-05-version-1.7.4.md @@ -0,0 +1,32 @@ +--- +title: VersiΓ³n 1.7.4 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 26 +--- + +`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..47963aba2 --- /dev/null +++ b/content/changelog/es/2024-12-09-version-1.7.5.md @@ -0,0 +1,21 @@ +--- +title: VersiΓ³n 1.7.5 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 25 +--- + +`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..5317d4193 --- /dev/null +++ b/content/changelog/es/2025-01-06-version-1.7.6.md @@ -0,0 +1,36 @@ +--- +title: VersiΓ³n 1.7.6 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 24 +--- + +`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..9aadf2710 --- /dev/null +++ b/content/changelog/es/2025-02-05-version-1.7.7.md @@ -0,0 +1,36 @@ +--- +title: VersiΓ³n 1.7.7 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 23 +--- + +`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..f3d1cc189 --- /dev/null +++ b/content/changelog/es/2025-02-10-version-1.7.8.md @@ -0,0 +1,26 @@ +--- +title: VersiΓ³n 1.7.8 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 22 +--- + +`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..6ca48d3e6 --- /dev/null +++ b/content/changelog/es/2025-02-17-version-1.7.9.md @@ -0,0 +1,32 @@ +--- +title: VersiΓ³n 1.7.9 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 21 +--- + +`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..46b8dfcad --- /dev/null +++ b/content/changelog/es/2025-04-01-version-1.7.10.md @@ -0,0 +1,46 @@ +--- +title: VersiΓ³n 1.7.10 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 20 +--- + +`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..8d3c1d8e5 --- /dev/null +++ b/content/changelog/es/2025-04-24-version-1.7.11.md @@ -0,0 +1,36 @@ +--- +title: VersiΓ³n 1.7.11 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 19 +--- + +`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..0b3ea6dfa --- /dev/null +++ b/content/changelog/es/2025-05-14-version-1.7.12.md @@ -0,0 +1,30 @@ +--- +title: VersiΓ³n 1.7.12 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 18 +--- + +`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..86480d359 --- /dev/null +++ b/content/changelog/es/2025-06-02-version-1.7.13.md @@ -0,0 +1,40 @@ +--- +title: VersiΓ³n 1.7.13 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 17 +--- + +`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..965e64900 --- /dev/null +++ b/content/changelog/es/2025-06-26-version-1.7.14.md @@ -0,0 +1,38 @@ +--- +title: VersiΓ³n 1.7.14 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 16 +--- + +`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..4acca0c8f --- /dev/null +++ b/content/changelog/es/2025-07-07-version-1.7.15.md @@ -0,0 +1,38 @@ +--- +title: VersiΓ³n 1.7.15 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 15 +--- + +`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..aaac47395 --- /dev/null +++ b/content/changelog/es/2025-07-21-version-1.7.16.md @@ -0,0 +1,28 @@ +--- +title: VersiΓ³n 1.7.16 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 14 +--- + +`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..f66bf27e2 --- /dev/null +++ b/content/changelog/es/2025-10-01-version-2.0.0.md @@ -0,0 +1,60 @@ +--- +title: VersiΓ³n 2.0.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 13 +--- + +`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..bcb2fe243 --- /dev/null +++ b/content/changelog/es/2025-10-15-version-2.0.1.md @@ -0,0 +1,54 @@ +--- +title: VersiΓ³n 2.0.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 12 +--- + +`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..24d84194c --- /dev/null +++ b/content/changelog/es/2025-11-10-version-2.1.0.md @@ -0,0 +1,64 @@ +--- +title: VersiΓ³n 2.1.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 11 +--- + +`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..8a39ac574 --- /dev/null +++ b/content/changelog/es/2025-11-13-version-2.2.0.md @@ -0,0 +1,32 @@ +--- +title: VersiΓ³n 2.2.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 10 +--- + +`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..47ab9bf92 --- /dev/null +++ b/content/changelog/es/2025-11-18-version-2.3.0.md @@ -0,0 +1,40 @@ +--- +title: VersiΓ³n 2.3.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 9 +--- + +`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..2d66d0998 --- /dev/null +++ b/content/changelog/es/2025-12-01-version-2.3.1.md @@ -0,0 +1,44 @@ +--- +title: VersiΓ³n 2.3.1 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 8 +--- + +`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..deb39af33 --- /dev/null +++ b/content/changelog/es/2025-12-19-version-2.3.2.md @@ -0,0 +1,78 @@ +--- +title: VersiΓ³n 2.3.2 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 7 +--- + +`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..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 @@ -1,48 +1,82 @@ --- title: VersiΓ³n 2.4.0 authors: - - name: Equipo Sleakops + - name: SleakOps Team tags: - release +sidebar_position: 6 --- -# πŸš€ 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..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 @@ -1,25 +1,36 @@ --- title: VersiΓ³n 2.5.0 authors: - - name: Equipo SleakOps + - name: SleakOps Team tags: - release +sidebar_position: 5 --- -# πŸš€ 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..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 @@ -1,36 +1,60 @@ --- title: VersiΓ³n 2.5.1 authors: - - name: Equipo SleakOps + - name: SleakOps Team tags: - release +sidebar_position: 4 --- -# πŸš€ 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 994d7da09..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 @@ -1,37 +1,70 @@ --- title: Version 2.6.0 - -authors: [] +authors: + - name: SleakOps Team tags: - release +sidebar_position: 3 +--- + +`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\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. +## πŸš€ 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 new file mode 100644 index 000000000..990cf0033 --- /dev/null +++ b/content/changelog/es/2026-03-17-version-2.7.0.md @@ -0,0 +1,75 @@ +--- +title: VersiΓ³n 2.7.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 2 +--- + +`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. + +--- 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..b5ef136c4 --- /dev/null +++ b/content/changelog/es/2026-03-26-version-2.8.0.md @@ -0,0 +1,63 @@ +--- +title: VersiΓ³n 2.8.0 +authors: + - name: SleakOps Team +tags: + - release +sidebar_position: 1 +--- + +`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. + +--- diff --git a/content/docs/en/changelog.mdx b/content/docs/en/changelog.mdx deleted file mode 100644 index ce91c83ac..000000000 --- a/content/docs/en/changelog.mdx +++ /dev/null @@ -1,844 +0,0 @@ -# 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/en/cli.mdx b/content/docs/en/cli.mdx index 017fb247d..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: 8 +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 1602615e0..c52b7e264 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: 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 101fba06f..88b8ba694 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: 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 103ddb813..73710fc13 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: 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 88630cc84..065462d06 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: 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 68b3bb098..33b86e296 100644 --- a/content/docs/en/cluster/index.mdx +++ b/content/docs/en/cluster/index.mdx @@ -1,7 +1,6 @@ --- +sidebar_position: 5 title: Cluster -sidebar_label: '' -sidebar_position: null 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 cea00d83e..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: 8 +sidebar_position: 12 --- 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/index.mdx b/content/docs/en/domain/index.mdx index 0e399c6e2..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: 7 +sidebar_position: 8 --- # Domain Levels & Strategies diff --git a/content/docs/en/domain/setup.mdx b/content/docs/en/domain/setup.mdx index 49de8ddf4..cb7795bd5 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: 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 386a6ffab..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: 5 +sidebar_position: 6 pagination_next: project/index --- 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 1e1c0e293..1410f0262 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: 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..8b8e20cc3 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_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). 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 88ef8b609..89aa45e64 100644 --- a/content/docs/en/project/index.mdx +++ b/content/docs/en/project/index.mdx @@ -1,4 +1,5 @@ --- +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 262ee5b6f..131b9dc53 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: 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/project/workload/job.mdx b/content/docs/en/project/workload/job.mdx index 20c7de916..24837e132 100644 --- a/content/docs/en/project/workload/job.mdx +++ b/content/docs/en/project/workload/job.mdx @@ -1,7 +1,6 @@ --- title: Job -sidebar_label: '' -sidebar_position: null +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; 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/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/provider/schemas.mdx b/content/docs/en/provider/schemas.mdx index 277810b0c..5bf95a021 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: 1 --- import Zoom from "react-medium-image-zoom"; 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/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 2b42aa2c3..07c5f3b0c 100644 --- a/content/docs/en/user/index.mdx +++ b/content/docs/en/user/index.mdx @@ -1,4 +1,5 @@ --- +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/changelog.mdx b/content/docs/es/changelog.mdx deleted file mode 100644 index f786d4ed3..000000000 --- a/content/docs/es/changelog.mdx +++ /dev/null @@ -1,835 +0,0 @@ -# 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/content/docs/es/cli.mdx b/content/docs/es/cli.mdx index 369ee68e9..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: 8 +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 23a9cf968..d3897b2b5 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: 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 d52d8765d..b78908408 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: 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 103ddb813..73710fc13 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: 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 19cca90d7..82b952e84 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: 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 602d61a40..00f1d8876 100644 --- a/content/docs/es/cluster/index.mdx +++ b/content/docs/es/cluster/index.mdx @@ -1,7 +1,6 @@ --- +sidebar_position: 5 title: Cluster -sidebar_label: '' -sidebar_position: null 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 7f0520262..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: 8 +sidebar_position: 12 --- 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/domain/index.mdx b/content/docs/es/domain/index.mdx index d5fc6611f..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: 7 +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 d953c3577..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: 5 +sidebar_position: 6 pagination_next: project/index --- 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 9819ac9a8..73960265f 100644 --- a/content/docs/es/project/dependency/faqs.mdx +++ b/content/docs/es/project/dependency/faqs.mdx @@ -1,7 +1,6 @@ --- title: FAQs -sidebar_label: '' -sidebar_position: null +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 584977fe1..daee08189 100644 --- a/content/docs/es/project/index.mdx +++ b/content/docs/es/project/index.mdx @@ -1,4 +1,5 @@ --- +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 41f910a48..155fd06cf 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: 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/project/workload/job.mdx b/content/docs/es/project/workload/job.mdx index 34df6d7ea..a492c448b 100644 --- a/content/docs/es/project/workload/job.mdx +++ b/content/docs/es/project/workload/job.mdx @@ -1,6 +1,6 @@ --- title: Job -sidebar_position: null +sidebar_position: 4 --- import Zoom from "react-medium-image-zoom"; 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/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/provider/schemas.mdx b/content/docs/es/provider/schemas.mdx index 548ba50df..f9abdb44a 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: 1 --- 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/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/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 c84b02950..2a769eb83 100644 --- a/content/docs/es/user/index.mdx +++ b/content/docs/es/user/index.mdx @@ -1,4 +1,5 @@ --- +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"; 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 e181744f9..000000000 --- a/docs/cluster/index.mdx +++ /dev/null @@ -1,195 +0,0 @@ ---- -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 cea00d83e..000000000 --- a/docs/connect_to_git.mdx +++ /dev/null @@ -1,232 +0,0 @@ ---- -sidebar_label: Connect to Git -sidebar_position: 8 ---- - -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 0e399c6e2..000000000 --- a/docs/domain/index.mdx +++ /dev/null @@ -1,430 +0,0 @@ ---- -sidebar_label: Domain -sidebar_position: 7 ---- - -# 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 386a6ffab..000000000 --- a/docs/environment/index.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -sidebar_label: Environment -sidebar_position: 5 -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 113f86bd3..000000000 --- a/docs/network/index.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -id: network-resources -title: Network Resources -sidebar_label: Network Resources -sidebar_position: 9 ---- -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 88ef8b609..000000000 --- a/docs/project/index.mdx +++ /dev/null @@ -1,214 +0,0 @@ ---- -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 1038191a2..000000000 --- a/docs/project/vargroup/index.mdx +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Varibale 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. -
- -## 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. | - -:::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. 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 782b011b7..000000000 --- a/docs/provider/index.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -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 8ac7d5cd2..000000000 --- a/docs/responsability-model.mdx +++ /dev/null @@ -1,9 +0,0 @@ -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 2b42aa2c3..000000000 --- a/docs/user/index.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -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/docusaurus.config.js b/docusaurus.config.js index 3fd6ae3ac..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"), { @@ -128,12 +141,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-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 f786d4ed3..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/changelog.mdx +++ /dev/null @@ -1,835 +0,0 @@ -# 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 373d4a30d..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: 8 ---- - -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 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. - -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. -
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 c4f80e676..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/cluster/index.mdx +++ /dev/null @@ -1,184 +0,0 @@ ---- -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 7f0520262..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: 8 ---- - - - -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 d5fc6611f..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/domain/index.mdx +++ /dev/null @@ -1,423 +0,0 @@ ---- -sidebar_label: Dominio -sidebar_position: 7 ---- - -# 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 d953c3577..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/environment/index.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -sidebar_label: Entorno -sidebar_position: 5 -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 86adb6434..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: 9 ---- -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 584977fe1..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/index.mdx +++ /dev/null @@ -1,213 +0,0 @@ ---- -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 c449f25a9..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/project/vargroup/index.mdx +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Varibale 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. -
- -## 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. | - -:::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. 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 489369835..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/provider/index.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -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 1e0f821ca..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/responsability-model.mdx +++ /dev/null @@ -1,9 +0,0 @@ -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 c84b02950..000000000 --- a/i18n/es/docusaurus-plugin-content-docs/current/user/index.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -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/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..a7d751476 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,31 +1,8 @@ -/** - * 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: [ - { - type: 'category', - label: 'Tutorial', - items: ['hello'], - }, - ], - */ + tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], }; 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/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 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 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 -``` 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==