From 0c1b259ea2cf7826ff7b56d1be5ff29933f0bfd7 Mon Sep 17 00:00:00 2001 From: Flavien Date: Fri, 12 Aug 2022 01:16:55 -0400 Subject: [PATCH 001/295] Settings and initial contents for French localization (#1145) * Finish style-guide translation Signed-off-by: Flavien Hardy * Init french translation of contributeur guide add fr/contribute/_index.md translation Signed-off-by: Ludovic Logiou * Review fr style-guide and contribute, add fr TEMPLATE, typos Signed-off-by: Flavien Hardy * Update config.toml Signed-off-by: Seokho Son * update i18n fr reading time section Fix a misunderstanding about the reading time section Signed-off-by: Flavien Hardy Signed-off-by: Flavien Hardy Signed-off-by: Ludovic Logiou Signed-off-by: Seokho Son Co-authored-by: Ludovic Logiou Co-authored-by: Seokho Son --- config.toml | 7 ++ content/fr/_TEMPLATE.md | 22 ++++ content/fr/_index.md | 45 ++++++++ content/fr/contribute/_index.md | 175 +++++++++++++++++++++++++++++++ content/fr/style-guide/_index.md | 173 ++++++++++++++++++++++++++++++ i18n/fr.toml | 73 +++++++++++++ 6 files changed, 495 insertions(+) create mode 100644 content/fr/_TEMPLATE.md create mode 100755 content/fr/_index.md create mode 100644 content/fr/contribute/_index.md create mode 100644 content/fr/style-guide/_index.md create mode 100644 i18n/fr.toml diff --git a/config.toml b/config.toml index f3aaab0b26..5b3522ada3 100644 --- a/config.toml +++ b/config.toml @@ -117,6 +117,13 @@ languageName = "বাংলা(Bengali)" contentDir = "content/bn" weight = 8 +[languages.fr] +title = "Glossaire Cloud Native" +description = "Le projet de Glossaire CNCF Cloud Natif a pour objectif de référencer les termes courants utilisés dans les différentes applications cloud native." +languageName ="Français(French)" +contentDir = "content/fr" +weight = 9 + [markup] [markup.goldmark] diff --git a/content/fr/_TEMPLATE.md b/content/fr/_TEMPLATE.md new file mode 100644 index 0000000000..d56b32952f --- /dev/null +++ b/content/fr/_TEMPLATE.md @@ -0,0 +1,22 @@ +--- +title: Modèle de définition +status: Feedback Appreciated +category: concept +--- + + +## Ce que c'est + +Un bref descriptif de la technologie ou du concept. + +## Problème qu'il adresse + +Quelques lignes à propos du problème qu'il adresse. + +## Quel en est l'utilité + +Quelques lignes sur comment le problème est résolu. + +## Termes liés + +Ajouter les termes du Glossaire en relation (si applicable) diff --git a/content/fr/_index.md b/content/fr/_index.md new file mode 100755 index 0000000000..3d70eda4b2 --- /dev/null +++ b/content/fr/_index.md @@ -0,0 +1,45 @@ +--- +title: "Glossaire Cloud Natif" +--- + +# Glossaire Cloud Natif + +Le Glossaire Cloud Natif est un project dirigé par le Comité Marketing de la CNCF (Business Value Subcommittee, BVS). +Son rôle est d'expliquer les concepts cloud natifs en termes simples et clairs, et sans nécessité de connaissances techniques. + +

Une femme et deux hommes en présentation technique

+ +## Contribution + +Toute personne est invitée à suggérer des changements, des ajouts, ou des amélioration au Glossaire Cloud Natif. +Nous employons un processus dirigé par la communauté, et gouverné par la CNCF, afin de développer et d'améliorer ce lexique partagé. +Ce Glossaire fournit un plateforme indépendante de toute solution propriétaire, afin d'organiser un vocabulaire partagé par tous, le tout centré autour des technologies cloud natives. +Les contributions sont les bienvenues pour tous les participants adhérant au principe du projet, ainsi qu'à sa charte. + +Toute personne souhaitant faire une contribution peut soumettre une Issue ou ouvrir une Pull Request sur le dépôt GitHub. +S'assurer avant tout de suivre le [Guide de Rédaction](/style-guide/), de lire la [Documentation de contribution](/contribute/), ainsi que de rejoindre le canal [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) du Slack de la CNCF. +Il existe également un canal [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF) pour ceux qui souhaitent aider à la traduction du glossaire dans leur langage natif. + +## Remerciements + +Le Glossaire Cloud Natif a été initié par le Comité Marketing de la CNCF (Business Value Subcommittee) et inclue les contributions de +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), +[Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/), +[Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk), +[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), +[Katelin Ramer](https://www.linkedin.com/in/katelinramer/), +[Mike Foster](https://www.linkedin.com/in/mfosterche/?originalSubdomain=ca), +et bien d'autres contributeurs. +Pour la liste complète des contributeurs, se référer à la [Page GitHub](https://github.com/cncf/glossary/graphs/contributors). + +Ce Glossaire est maintenue par +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), +[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), +[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), +[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/), +et [Seokho Son](https://www.linkedin.com/in/seokho-son/). + +## Licence + +Toute contribution de code est sous licence Apache 2.0. +La documentation est distribuée sous CC BY 4.0. diff --git a/content/fr/contribute/_index.md b/content/fr/contribute/_index.md new file mode 100644 index 0000000000..6b7d868fa3 --- /dev/null +++ b/content/fr/contribute/_index.md @@ -0,0 +1,175 @@ +--- +title: Comment contribuer +toc_hide: true +menu: + main: + weight: 10 +--- + +Le contenu du glossaire Cloud Native est stocké dans [ce repos Github](https://github.com/cncf/glossary) où vous trouverez une liste d'[issues](https://github.com/cncf/glossary/issues),[PRs](https://github.com/cncf/glossary/pulls), et [discussions](https://github.com/cncf/glossary/discussions) à propos du glossaire. + +Vous pouvez contribuer de 4 façons : + +1) [Travailler sur une issue existante](#work-on-an-existing-issue) +2) [Proposer un nouveau termes](#propose-new-terms) +3) [En mettre à jour un existant](#update-an-existing-term) +4) [Aider à traduire le glossaire](#help-translate-the-glossary) + +## Rejoindre la communauté du glossaire ! {#join-the-glossary-community} +Envisager de rejoindre la réunion mensuelle du groupe de travail du glossaire si vous souhaitez contribuer de manière régulière. +Les détails de la réunion peuvent être trouvés dans le [calendrier de la CNCF](https://www.cncf.io/calendar/). +Vous pouvez aussi entrer en contact avec les mainteneurs et les contributeurs de notre [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) sur le Slack de la CNCF - Nous aimerions beaucoup vous rencontrer! + + +## Travailler sur une issue existante {#work-on-an-existing-issue} + +Aller sur [Glossary GitHub repo issues](https://github.com/cncf/glossary/issues). +Ici, vous trouverez une liste de toutes les issues. Vous pouvez les filtrer par label (e.g. English language, help needed, good first issue). + +Un compte Github sera nécessaire. + +![Issue et labels](/images/how-to/issue-and-labels.png) + +Faites en sorte qu'un terme qui vous intéresse ne soit pas déjà attribué à quelqu'un d'autre. +Ici, vous pourrez voir que les 3 premiers termes disponibles alors que le suivant est déjà attribué. + + +![Assigné un termes](/images/how-to/howto-04.png) + +Une fois que vous avez trouvé le terme sur lequel vous voulez travailler, dites-le dans l'issue. Cliquez dessus et rajouter un commentaire. + + +![S'assigner une issue](/images/how-to/claiming-an-issue.png) + +Additionnellement, merci de rejoindre le channel Slack [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) et de faire savoir aux mainteneurs que vous avez créé une issue pour un terme (idéalement, en mentionnant, _@Catherine Paganini_, _@jmo_, _@Seokho Son_, _@Jihoon Seo_, et/ou _@iamnoah_ pour être sûr qu'il ne passe pas à côté). + +Vous pouvez uniquement proposer un terme à la fois. + +Si vous voulez travailler sur plusieurs termes, merci d'en finir un avant d'en proposer un nouveau. + +Une fois qu'il vous a été assigné, vous pouvez commencer à travailler dessus. +Pour les étapes suivantes, merci de prendre connaissance de la section [Proposer un nouveau terme (créer une PR)](#submitting-a-new-term). + +## Proposer un nouveau terme {#propose-new-terms} + +Vous pouvez proposer un nouveau terme à la communauté ou créer vous-même la définition de ce terme. +Dans les deux cas, vous commencerez par créer une issue. +Il est à noter que les termes doivent être en accord avec le [CNCF's cloud native definition](https://github.com/cncf/toc/blob/main/DEFINITION.md). +Les seules exceptions sont les termes fondamentaux nécessaires pour comprendre les concepts cloud natif. + +Ci-après, un guide étape par étape pour ceux et celles qui ne sont pas familier avec Github +**Si vous avez un compte GitHub Pro**, merci de vérifier que vous utilisez nos modèles d'issue, +une convention de nommage appropriée, réclamé une PR sur Slack (autrement on pourrait l'avoir raté), et où trouver les modèles de fichier. +Et merci de lire le [Style Guide](/style-guide/) avant de commencer - Merci! + +### Créer une issue {#creating-an-issue} + +Aller sur les issues du repos [Glossary](https://github.com/cncf/glossary/issues) et cliquer sur "New issue". + +![issues](/images/how-to/howto-01.png) + +Vous verrez plusieurs modèles. Pour proposer un nouveau terme en Français sélectionner "Request to add a new term (Optional:Non-English)". + + +![templates](/images/how-to/english-issue-template.jpg) + +Ajouter le mot que vous suggérez, répondez aux deux questions d'en dessous, cocher la case et cliquer sur "Submit new issue". +Si vous souhaitez juste proposer un nouveau terme, vous pouvez vous arrêter là! Pour travailler dessus suivez les étapes d'après. + + +### Catégoriser votre issue {#triaging-your-issue} + +Ensuite, les mainteneurs vont catégoriser le ticket. +Cela veut dire qu'ils vont évaluer si votre terme peut être présent dans le glossaire (Il est à noter, que tous les termes ne sont pas admis. Les termes doivent faire partie des termes couramment utilisés dans l'écosystème Cloud Native). + +Merci de faire savoir aux mainteneurs que vous avez soumis un terme sur Slack, sinon il pourrait passer à côté. +Idéalement, mentionnez _@Catherine Paganini_, _@jmo_, _@Seokho Son_, _@Jihoon Seo_, and/or _@iamnoah_. + +Si le terme est approuvé et que vous voulez travailler dessus, ils vous assigneront l'issue. + +Notez que vous pouvez vous assigner qu'à un seul terme à la fois. +Si vous souhaitez travailler sur plusieurs termes, merci d'en finir un avant de vous en attribuer un autre + +### Proposer un nouveau terme (créer une PR) {#submitting-a-new-term} + +Avant de commencer, merci de lire le [Style Guide](/style-guide/) — il aidera à minimiser les aller/retour. +Comme mentionné dans le style guide, il est fortement recommandé de commencer par un document texte (Gdoc, Word ou autre) + +Une fois que le terme est prêt à être proposé, rédigez le contenu (sous forme de code)... + + +![content](/images/how-to/howto-05.png) + +...Alors "fr" (ou la langue pour laquelle vous souhaitez contribuer)... + +![language folder](/images/how-to/howto-06.png) + +... Et sélectionner `_TEMPLATE.md` + +![template](/images/how-to/howto-07.png) + +...Copier le contenu... + +![copy content](/images/how-to/howto-08.png) + +...Et retourner sur le dossier "fr". Et cliquer sur "Add file" et sélectionner "Create new file". + + +![create new file](/images/how-to/howto-09.png) + +Ajouter le terme dans l'url (pas de majuscules, pas d'espaces, pas de parenthèses et utiliser un tiret pour séparer les mots) rajouter .md à la fin du nom de votre fichier (note: Si la prévisualisation ne fonctionne pas, vous avez probablement oublié d'ajouter .md à la fin). +Maintenant copier le contenu. Copier et coller votre définition dans le fichier. +Pour faciliter les relectures, merci **d'utiliser [semantic line breaks](https://sembr.org/)** (e.g. une ligne par phrase). + +Github utilise le format markdown pour mettre en forme le text (e.g., lien hypertexte, gras, italic). +Merci de lire ceci [markdown cheat sheet](https://www.markdownguide.org/cheat-sheet/). +Pour vérifier que vous avez correctement utilisé markdown, aller sur "Preview". + + +![finalize term](/images/how-to/howto-10.png) + +Descendre en bas de la page et donner un nom à votre commit quand vous êtes prêt à l'ajouter. +Vous êtes, maintenant, prêt à commit votre terme sur votre propre branche. +Proposer une PR nécessite une dernière étape. Cliquer sur "Commit new file" et... + +![commit new file](/images/how-to/howto-11.png) + +...Maintenant vous créez une PR : + +![create a pr](/images/how-to/howto-12.png) + +Vous devriez voir votre PR sous "Pull requests". + +![prs](/images/how-to/howto-13.png) + +## Mettre à jour un terme existant {#update-an-existing-term} + +Pour mettre à jour un terme existant, vous pouvez soit suggérer un changement via un ticket (issue) ou directement proposer la mise à jour d'un terme en soumettant une pull request (PR). + +### Proposer un changement via un ticket {#request-a-change-via-an-issue} + +Si vous voulez mettre en évidence un problème mais que vous ne savez pas ou ne voulez pas le corriger vous même, cliquez sur "Report issue'. + +![report issue](/images/how-to/howto-14.png) + +Cela va directement ouvrir un ticket. Merci d'être précis sur quels changements sont nécessaires et pourquoi. Cliquer sur "submit" et c'est fini. + + +![submit issue](/images/how-to/howto-15.png) + +### Mettre à jour un terme directement {#update-a-term-directly} + +Pour directement changer un terme, aller sur "Edit this page". + +![edit this page](/images/how-to/howto-16.png) + +Cela va ouvrir la page GitHub du terme. Faites vos changements et proposer une PR. Merci de prendre connaissance de "Proposer un nouveau terme" avant pour une description détaillé (sauter la section qui parle de markdown) + + +## Aider à traduire le glossaire {#help-translate-the-glossary} + +Pour aider à traduire le glossaire dans votre langue principale, merci de rejoindre le Slack et le channel [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF) et faites le nous savoir. + +Vous pouvez soit rejoindre une équipe existante ou en créer une nouvelle (pour voir en quoi ça consiste, regarder [Localization Guide](https://github.com/cncf/glossary/blob/main/LOCALIZATION.md)). + +Merci aussi de rejoindre notre réunion mensuelle. Vous pouvez trouver plus de détails sur le [CNCF calendar](https://www.cncf.io/calendar/). \ No newline at end of file diff --git a/content/fr/style-guide/_index.md b/content/fr/style-guide/_index.md new file mode 100644 index 0000000000..b12d88e9a7 --- /dev/null +++ b/content/fr/style-guide/_index.md @@ -0,0 +1,173 @@ +--- +title: Guide de rédaction +toc_hide: true +menu: + main: + weight: 10 +--- + +Ce guide de rédaction aide à comprendre la cible du Glossaire, la structure des définitions, le niveau requis de détails, ainsi que la manière +de maintenir un style constant. + +Le Glossaire Cloud Natif suit le guide de [rédaction de référence](https://github.com/cncf/foundation/blob/master/style-guide.md) du dépôt de la CNCF. + +De plus, les règles suivantes sont appliquées: + +1. Utiliser un langage simple, accessible, et éviter les jargon technique ainsi que les buzzwords. +2. [Éviter le langage du registre familier](https://fr.wikipedia.org/wiki/Registre_familier) +3. [Employer un langage littéral et concret](https://guidetogrammar.org/grammar/composition/abstract.htm) +4. [S'abstenir des contractions](https://fr.wikipedia.org/wiki/Contraction_(grammaire)) +5. [Privilégier la forme passive](http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4267) +6. [Favoriser des tournures de phrase positives](http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4267) +7. [Aucun point d'exclamation en dehors des citations](http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3333) +8. Ne pas exagérer +9. Éviter les répétitions +10. Être concis + +## Cibles + +Le Glossaire est rédigé comme référence technique ET non-technique. +Merci de s'assurer que les définitions sont expliquées en termes simples et ne pas assumer que les lecteurs ont un bagage technique. Plus d'informations dans la section Définition. + +## Modèle de définition + +Chaque terme du glossaire est stocké dans un fichier au format markdown, et suit le modèle suivant: + +```md +--- +title: +status: +category: +--- + +## Ce que c'est + +Un bref descriptif de la technologie ou du concept. + +## Problème qu'il adresse + +Quelques lignes à propos du problème qu'il adresse. + +## Quel en est l'utilité + +Quelques lignes sur comment le problème est résolu. +``` + +### Titre + +L'étiquette **title** est toujours placé en haut de la disposition, et sa valeur doit toujours être en majuscule. + +```md +--- +title: Modèle de définition +``` + +### Status + +L'étiquette **status** vient après l'étiquette label. Cette étiquette indique si les définitions ont été soigneusement contrôlées, ou si l'explication +nécessite plus de travail. + +Les valeurs acceptées sont: + +- Completed +- Feedback Appreciated +- Not Started + +Il est toujours possible d'ouvrir un ticket concernant une définition complétée (status "Completed"). Lorsque une définition est sujette au changement, son +status sera changé à *Feedback Appreciated*. + +```md +--- +title: Modèle de définition +status: Feedback Appreciated +``` + +### Category + +L'étiquette **category** vient après celle du status. Sa valeur doit être l'une des possibilités suivantes: + +- Technology +- Property +- Concept + +```md +--- +title: Modèle de définition +status: Feedback Appreciated +category: Concept +--- +``` + +### Définition + +#### Trois sous-sections + +Les définitions pour les catégories **technology** et **concept** contiennent trois sous-sections: + +- **Ce que c'est** : fournis une explication claire et concise de ce dont nous parlons. +- **Problème qu'il adresse** : se concentre sur le problème, pas la solution (cela vient dans la section suivante). + Pour faire simple, éviter de mentionner le terme qui est défini. Le problème nous aide à nous concentrer sur *ce qui* nous a mené à avoir besoin de ce terme. +- **Quel en est l'utilité**: maintenant, revenir sur le terme en lui-même. Comment est-ce qu'il adresse le problème décrit précédemment ? + +Noter que les propriétés ne nécessitent pas de section séparée. Un définition suffira. + +Pour faciliter la revue, merci d'utiliser les **sauts à la ligne sémantiques** (une phrase par ligne). + +#### La qualité est primordiale + +Si vos modifications sont acceptées, vos changements seront les définitions officielles de la CNCF pour ce terme (jusqu'à ce qu'ils soient mis à jour +par une autre personne). +La création d'un terme qui respecte les standards élevés de la CNCF ne doit pas se faire précipitamment - la qualité requiert du temps et de l'effort. + +**Faites vos recherches**: Même si vous avez confiance en votre connaissance du terme, vérifiez que vous avez la bonne définition. +L'utilisation des termes en entreprise ne reflètent pas toujours la globalité. +Lorsque vous effectuez vos recherches, essentiellement lorsque vous n'êtes pas 100% familier avec ce dernier, utilisez plusieurs sources. +De nombreuses définitions ne sont pas unilatérales, spécifiquement lorsqu'elles sont issues d'une solution propriétaire. +Le Glossaire se doit de contenir des définitions neutres de toute solution propriétaire, et globales. + +**Ne pas plagier**. Comme toute publication sérieuse, le Glossaire se doit d'appliquer les mêmes règles. +Ne pas copier et coller le travail d'autrui, à mois que ce ne soit une citation ou contribution. +Si une section particulière d'une définition vous parait appropriée, paraphrasez-la avec vos propres mots. + +**Référencez les ressources faisant autorité**. Lorsque cela est possible, référencez les ressources faisant autorité sur le terme, telles que les documentations de projet. +Notez qu'il n'est pas possible de référer des ressources développées par les vendeurs. + +#### Rester simple + +Le Glossaire tend à **expliquer des concepts complexes avec des mots simples** - cette tâche est particulièrement difficile, et nécessitera de nombreuses révisions. +Toujours garder à l'esprit le public cible lors de la rédaction d'une définition. +Évitez l'utilisation de termes d'entreprise ou les buzzwords - vous vous retrouverez probablement obligé de vous corriger vous-même à plusieurs reprises sur ce point. + +Lorsque la situation est appropriée, utiliser des **exemples de la vie réelle** qui peuvent aider les lecteurs (en particulier les moins techniques d'entre eux) à avoir une meilleure +vision du *quand* et *pourquoi* du concept que vous expliquez. + +Lorsqu'utilisé dans vos définitions, toujours **rediriger vers des termes existant du Glossaire** (uniquement la première mention du terme doit-être redirigée). + +**Exemple**: référez vous à la section "Ce que c'est" de la définition d'un [service mesh](/service-mesh/). +Cette dernière fait référence aux définitions de micro-services, service, fiabilité, et observabilité. +De plus, elle utilise un exemple de la vie réelle en comparant les enjeux des réseaux dans un environnement micro-services (un concept auquel un non-technique peut difficilement s'identifier) à une problématique de réseau wifi (ce que toute personne possédant un ordinateur peut comprendre). +Lorsque cela est possible, tentez de faire cette connexion. + +#### Débuter avec un document Google ou Word + +Nous recommandons de débuter les modifications dans un document Google ou Word, de laisser reposer votre définitions pendant quelques jours, et d'y revenir par la suite. +Aussi, assurez-vous d'effectuer une vérification orthographique avant de soumettre votre PR. + +Afin d'éviter qu'un autre contributeur soumette une PR concernant le terme sur lequel vous travaillez, +assurez-vous de vous approprier un ticket (ou d'en créer un) et qu'il vous soit assigné. +Plus d'information sur la documentation de [Comment contribuer](/contribute/). + +Avant de démarrer, veillez à lire quelques termes du Glossaire afin de vous approprier le niveau de détails et de difficulté, +ainsi que de l'utilisation judicieuse des exemples. + +## Processus de revue: à quoi s'attendre + +Notez que nous ne sommes actuellement que 3 mainteneurs, effectuant ce travail sur notre temps personnel. +Occasionnellement, nous serons capables de revoir les termes rapidement; en d'autres occasions, il est possible que cela prenne plus de temps - merci de votre patience. +Si vous avez des questions, n'hésitez pas à nous contacter sur le canal Slack #glossary (pour savoir où et comment le trouver, référez-vous à la section de [Comment contribuer](/contribute/)). + +Notre but est de faire du Glossaire la meilleure des ressources possible. +Une fois que vous aurez soumis votre PR, il est possible que nous demandions une ou plusieurs révisions. +Ne soyez pas frustré - c'est le cas pour un grand nombre de PRs. +Ces allers-retours et notre collaboration assureront que votre contribution devienne une définition réellement +utile, lue et référée par de nombreux lecteurs aux quatres coins du monde. diff --git a/i18n/fr.toml b/i18n/fr.toml new file mode 100644 index 0000000000..8432b7e7e0 --- /dev/null +++ b/i18n/fr.toml @@ -0,0 +1,73 @@ + + +# UI strings. Buttons and similar. + +[ui_pager_prev] +other = "Précédent" + +[ui_pager_next] +other = "Suivant" + +[ui_read_more] +other = "En savoir plus" + +[ui_search] +other = "Rechercher sur ce site…" + +# Used in sentences such as "Posted in News" +[ui_in] +other = "dans" + +# Used in sentences such as "All Tags" +[ui_all] +other = "tous" +[ui_see_all] +other = "Voir tous" + +# Footer text +[footer_all_rights_reserved] +other = "Tous droits réservés" + +[footer_privacy_policy] +other = "Politique de confidentialité" + + +# Post (blog, articles etc.) +[post_byline_by] +other = "Par" +[post_created] +other = "Créé" +[post_last_mod] +other = "Dernière modification" +[post_edit_this] +other = "Modifier cette page" +[post_create_child_page] +other = "Créer une page enfant" +[post_create_issue] +other = "Ouvrir un ticket" +[post_create_project_issue] +other = "Ouvrir un ticket de projet" +[post_posts_in] +other = "Postés dans" +[post_reading_time] +other = "minute(s) de lecture" + +# Print support +[print_printable_section] +other = "Ceci est la page d'impression multiple de cette section" +[print_click_to_print] +other = "Cliquer ici pour imprimer" +[print_show_regular] +other = "Retour à la vue standard de cette page" +[print_entire_section] +other = "Imprimer la section complète" + +# Feedback section +[feedback_title] +other = "Votre avis" +[feedback_question] +other = "Cette page était-elle utile ?" +[feedback_answer_yes] +other = "Oui" +[feedback_answer_no] +other = "Non" From 38514a70b8cb21d5f241bcc5acb6e62c8ed860b2 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 28 Aug 2022 16:57:51 +0200 Subject: [PATCH 002/295] Localize cloud-native apps and tech to fr Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 32 ++++++++++++++++++++++++++++++++ content/fr/cloud-native-tech.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 content/fr/cloud-native-apps.md create mode 100644 content/fr/cloud-native-tech.md diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md new file mode 100644 index 0000000000..0b327d7505 --- /dev/null +++ b/content/fr/cloud-native-apps.md @@ -0,0 +1,32 @@ +--- +title: Application Cloud Native +status: Completed +category: concept +tags: ["application", "", ""] +--- + +## Ce que c'est + +Les applications Cloud Native sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). +Ces applications s'intègrent facilement avec leurs architectures cloud respective, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). +Il fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. +Aujourd'hui, les applications Cloud native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans des centres de données traditionnelles. + +## Problème Qu'il adresse + +Traditionnellement, les environnements hébergés dans des centres de données classiques fournissent des serveurs sur mesure. +Chaque centre de données dispose de services qui [associent étroitement ](/tightly-coupled-architectures/) les applications à des environnements spécifiques, qui se basent souvent sur des infrastructures déployées à la main, par exemple des [machines virtuelles](/virtual-machine/) et des services. Cela contraint les développeurs et leurs applications à un déploiement dans ce centre de données spécifique. +Les applications qui n'ont pas été conçues pour tirer avantage des environnements Cloud ne pourront pas bénéficier de ses avantages tels que la résilience et la mise à l'échelle. +Par exemple, les applications nécessitant une intervention manuelle pour démarrer correctement ne pourront pas se mettre à l'échelle automatiquement ou automatiquement redémarrées en cas d'erreur. + +## Quel en est l'utilité + +Bien qu'il n'y ait pas de solution miracle pour qu'une application soit une application cloud native, les applications +Cloud Native présentent des points en commun. +Les applications Cloud Native sont résilientes, elles sont manipulables et tirent profit de l'ensemble des services Cloud dans lequel elles +sont déployées. +De nombreux services Cloud mettent à disposition un important niveau d'[observabilité](/observability/), permettant aux utilisateurs +de détecter et de régler les problèmes avant qu'ils ne deviennent plus importants. +Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. + + diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md new file mode 100644 index 0000000000..e00502b450 --- /dev/null +++ b/content/fr/cloud-native-tech.md @@ -0,0 +1,31 @@ +--- +title: Technologies Cloud Native +status: Completed +category: Concept +tags: ["fundamentals", "", ""] +--- + +## Ce que c'est + +Les technologies Cloud native, aussi référencées comme ensemble des technologies cloud native, sont les technologies +utilisées pour construire des [applications cloud native](/cloud-native-apps/). +Ces technologies permettent aux organisations de développés des applications capables de se mettre à l'échelle dans des environnements +modernes et dynamiques tels que les clouds publiques, privées et hybrides. +Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). +Elles sont conçues dès le départ pour exploiter les capacités du cloud computings ainsi que des conteneurs, du service meshes, des micro-services. Les infrastructures immuable illustrent cette approche. + +## Problème Qu'il adresse + +Il y a différentes catégories technologiques qui vont adresser une variété de challenges. +Si vous regardez le [CNCF Cloud Native Landscape](https://landscape.cncf.io/), vous verrez combien +de domaines différents, il touche. +Mais à un niveau élevé, ils relèvent un ensemble principal de défis : +Les inconvénients des modèles d'exploitation informatiques traditionnels. +Les défis incluent les difficultés à créer des applications évolutives, tolérantes aux pannes et qui sont +capable de se réparer toute seule. Il adresse également l'utilisation inefficace de ressources entre autres. + +## Quel en est l'utilité + +Bien que chaque technologie réponde à un problème très spécifique, +en tant que groupe, les technologies cloud native permettent des systèmes faiblement couplés qui sont résilient, gérables et observable. +Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. \ No newline at end of file From b389dc389bc307f06e82fbbcfcec9932bc11b206 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 11 Sep 2022 17:06:28 +0200 Subject: [PATCH 003/295] Fix native to natives and on-premise datacenter translation Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 2 +- content/fr/cloud-native-tech.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index 0b327d7505..a68927b62e 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -10,7 +10,7 @@ tags: ["application", "", ""] Les applications Cloud Native sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). Ces applications s'intègrent facilement avec leurs architectures cloud respective, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). Il fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. -Aujourd'hui, les applications Cloud native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans des centres de données traditionnelles. +Aujourd'hui, les applications Cloud native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. ## Problème Qu'il adresse diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index e00502b450..919ce4735f 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -7,7 +7,7 @@ tags: ["fundamentals", "", ""] ## Ce que c'est -Les technologies Cloud native, aussi référencées comme ensemble des technologies cloud native, sont les technologies +Les technologies Cloud Natives, aussi référencées comme la pile des technologies cloud natives, sont les technologies utilisées pour construire des [applications cloud native](/cloud-native-apps/). Ces technologies permettent aux organisations de développés des applications capables de se mettre à l'échelle dans des environnements modernes et dynamiques tels que les clouds publiques, privées et hybrides. @@ -27,5 +27,5 @@ capable de se réparer toute seule. Il adresse également l'utilisation ineffica ## Quel en est l'utilité Bien que chaque technologie réponde à un problème très spécifique, -en tant que groupe, les technologies cloud native permettent des systèmes faiblement couplés qui sont résilient, gérables et observable. +en tant que groupe, les technologies cloud natives permettent des systèmes faiblement couplés qui sont résilient, gérables et observable. Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. \ No newline at end of file From 737ac6fed337c69a5f161a095b7dd20f770ed7d9 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Wed, 5 Oct 2022 18:18:03 +0200 Subject: [PATCH 004/295] Fix after title have been changed from the template Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 2 +- content/fr/cloud-native-tech.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index a68927b62e..b0e96a1291 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -12,7 +12,7 @@ Ces applications s'intègrent facilement avec leurs architectures cloud respecti Il fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. Aujourd'hui, les applications Cloud native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. -## Problème Qu'il adresse +## Problème auquel il répond Traditionnellement, les environnements hébergés dans des centres de données classiques fournissent des serveurs sur mesure. Chaque centre de données dispose de services qui [associent étroitement ](/tightly-coupled-architectures/) les applications à des environnements spécifiques, qui se basent souvent sur des infrastructures déployées à la main, par exemple des [machines virtuelles](/virtual-machine/) et des services. Cela contraint les développeurs et leurs applications à un déploiement dans ce centre de données spécifique. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 919ce4735f..6f7cd225d0 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -14,7 +14,7 @@ modernes et dynamiques tels que les clouds publiques, privées et hybrides. Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). Elles sont conçues dès le départ pour exploiter les capacités du cloud computings ainsi que des conteneurs, du service meshes, des micro-services. Les infrastructures immuable illustrent cette approche. -## Problème Qu'il adresse +## Problème auquel il répond Il y a différentes catégories technologiques qui vont adresser une variété de challenges. Si vous regardez le [CNCF Cloud Native Landscape](https://landscape.cncf.io/), vous verrez combien From 533c4f1e6c7e881087d93eba39afa5324876e8fd Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Wed, 7 Sep 2022 15:09:47 -0400 Subject: [PATCH 005/295] Traduction de container.md Signed-off-by: Christophe Sauthier --- content/fr/_TEMPLATE.md | 2 +- content/fr/container.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 content/fr/container.md diff --git a/content/fr/_TEMPLATE.md b/content/fr/_TEMPLATE.md index d56b32952f..94c1ec1b1a 100644 --- a/content/fr/_TEMPLATE.md +++ b/content/fr/_TEMPLATE.md @@ -9,7 +9,7 @@ category: concept Un bref descriptif de la technologie ou du concept. -## Problème qu'il adresse +## Problème auquel il répond Quelques lignes à propos du problème qu'il adresse. diff --git a/content/fr/container.md b/content/fr/container.md new file mode 100644 index 0000000000..7f9be0313d --- /dev/null +++ b/content/fr/container.md @@ -0,0 +1,32 @@ +--- +title: Conteneurs +status: Completed +category: technology +tags: ["application", "", ""] +--- + +## Ce que c'est + +Un conteneur est un processus qui fonctionne avec des contraintes de ressources et de capacités gérées par le système d'exploitation d'un ordinateur. +Les fichiers accessibles au processus du conteneur sont regroupés dans une image de conteneur. +Les conteneurs sont executés les uns à coté des autres sur la même machine, +mais habituellement le système d'exploitation empêche les processus de conteneurs différents d'interagir ensemble. + +## Problème auquel il répond + +Avant que les conteneurs ne soient disponibles, des machines dédiées étaient nécessaires pour faire fonctionner des applications. +Chaque machine nécessitait son propre système d'exploitation, qui utilisait du CPU, de la mémoire et de l'espace disque, +tout celà pour faire fonctionner une simple application. +De plus, la maintenance, la mise à jour et le lancement d'un système d'exploitation sont des sources de travail en plus. + +## Quel en est l'utilité + +Les conteneurs partagent le même système d'exploitation et ses ressources machine, +et se répartissent la surcharge des ressources dues au système d'exploitation, permettant un usage efficace de la machine physique. +Cette possibilité est uniquement offerte car les conteneurs sont habituellement limités dans leurs interactions mutuelles. +Ceci permet de faire fonctionner plus d'applications sur la même machine physique. + +Il y a cependant des limitations. +Étant donné que les conteneurs partagent le même système d'exploitation, les processus peuvent être considérés moins sécurisés que leurs alternatives. +Les conteneurs nécessitent également des limites sur les ressources partagées. +Pour garantir les ressources, les administrateurs doivent contraindre et limiter l'utilisation de la mémoire et du CPU afin de ne pas impacter les performances des autres applications. From 76199e1e2bc69b87842dd288660dde2cfb4246f5 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Tue, 1 Nov 2022 16:40:01 +0100 Subject: [PATCH 006/295] Add Fydrah feedbacks Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 4 ++-- content/fr/cloud-native-tech.md | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index b0e96a1291..ff6f272755 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -9,7 +9,7 @@ tags: ["application", "", ""] Les applications Cloud Native sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). Ces applications s'intègrent facilement avec leurs architectures cloud respective, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). -Il fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. +Ce terme fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. Aujourd'hui, les applications Cloud native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. ## Problème auquel il répond @@ -21,7 +21,7 @@ Par exemple, les applications nécessitant une intervention manuelle pour démar ## Quel en est l'utilité -Bien qu'il n'y ait pas de solution miracle pour qu'une application soit une application cloud native, les applications +Bien qu'il n'y ait pas de solution miracle pour qu'une application soit définie comme cloud native, les applications Cloud Native présentent des points en commun. Les applications Cloud Native sont résilientes, elles sont manipulables et tirent profit de l'ensemble des services Cloud dans lequel elles sont déployées. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 6f7cd225d0..738031253a 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -9,17 +9,17 @@ tags: ["fundamentals", "", ""] Les technologies Cloud Natives, aussi référencées comme la pile des technologies cloud natives, sont les technologies utilisées pour construire des [applications cloud native](/cloud-native-apps/). -Ces technologies permettent aux organisations de développés des applications capables de se mettre à l'échelle dans des environnements -modernes et dynamiques tels que les clouds publiques, privées et hybrides. +Ces technologies permettent aux organisations de développer des applications capables de se mettre à l'échelle dans des environnements +modernes et dynamiques tels que les clouds publics, privés et hybrides. Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). -Elles sont conçues dès le départ pour exploiter les capacités du cloud computings ainsi que des conteneurs, du service meshes, des micro-services. Les infrastructures immuable illustrent cette approche. +Elles sont conçues dès le départ pour exploiter les capacités du cloud computings ainsi que des conteneurs, du service meshes, des micro-services. Les infrastructures immuables illustrent cette approche. ## Problème auquel il répond -Il y a différentes catégories technologiques qui vont adresser une variété de challenges. +Il y a différentes catégories technologiques qui vont répondre à une variété de défis. Si vous regardez le [CNCF Cloud Native Landscape](https://landscape.cncf.io/), vous verrez combien -de domaines différents, il touche. -Mais à un niveau élevé, ils relèvent un ensemble principal de défis : +de domaines différents il touche. +Mais à un niveau élevé, ils relèvent un ensemble de défis important : Les inconvénients des modèles d'exploitation informatiques traditionnels. Les défis incluent les difficultés à créer des applications évolutives, tolérantes aux pannes et qui sont capable de se réparer toute seule. Il adresse également l'utilisation inefficace de ressources entre autres. @@ -27,5 +27,5 @@ capable de se réparer toute seule. Il adresse également l'utilisation ineffica ## Quel en est l'utilité Bien que chaque technologie réponde à un problème très spécifique, -en tant que groupe, les technologies cloud natives permettent des systèmes faiblement couplés qui sont résilient, gérables et observable. -Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. \ No newline at end of file +en tant que groupe, les technologies cloud natives permettent de créer des systèmes faiblement co uplés qui sont résilients, gérabels et observables.. +Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. From 9f274fca3287879b5b71470d7b9642fc9c630050 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sat, 27 Aug 2022 18:51:27 +0200 Subject: [PATCH 007/295] Localize service-mesh fr Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/fr/service-mesh.md diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md new file mode 100644 index 0000000000..7532f16310 --- /dev/null +++ b/content/fr/service-mesh.md @@ -0,0 +1,32 @@ +--- +title: Service Mesh +status: Completed +category: technology +tags: ["networking", "", ""] +--- + +## Ce que c'est + +Dans un monde de [microservices](/microservices/), les applications sont découpées en plusieurs petits services qui communiquent via +le réseau. +Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiable, piratable et souvent lent. +Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoute de la +[fiabilité](/reliability/), de l'[observabilité](/observability/) et des fonctionnalités liées à la sécurité de manière uniforme pour tous +les services. + +## Problème Qu'il adresse + +Après avoir migré vers une architecture microservices. Les ingénieurs doivent gérer une centaine +voir des milliers de services, qui doivent tous communiqués. +Cela signifie qu'il va y avoir beaucoup de trafic qui va faire des aller et retour sur le réseau. +Par dessus tout cela, chaque application peut avoir besoin de chiffrer ses communications pour des contraintes +réglementaires, fournir des métriques pour les équipes opérationnelles fournir des informations détaillées à propos du trafic +pour aider à diagnostiquer les problèmes. +Si cela devait être géré au niveau de chaque application, chacune avec ses fonctionnalités cela pourrait causer des friction entre les équipes et ralentir le développement de nouvelles fonctionnalités. + +## Quel en est l'utilité + +Les services mesh ajoutent de la fiabilité, de l'observabilité et de la sécurité +pour tous les services du cluster sans avoir à changer le code des services. +Avant les services mesh, cette fonctionnalité devait être implémentée dans chaque service, +devenant une potentielle source de bug, voir une dette technique. \ No newline at end of file From e9b1a46e3d5f43bd5fe8a207ba2ad0416866e145 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 11 Sep 2022 17:13:41 +0200 Subject: [PATCH 008/295] Add feedbacks from Huats Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index 7532f16310..43b72cece4 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -9,20 +9,20 @@ tags: ["networking", "", ""] Dans un monde de [microservices](/microservices/), les applications sont découpées en plusieurs petits services qui communiquent via le réseau. -Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiable, piratable et souvent lent. +Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiables, piratables et souvent lents. Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoute de la [fiabilité](/reliability/), de l'[observabilité](/observability/) et des fonctionnalités liées à la sécurité de manière uniforme pour tous les services. -## Problème Qu'il adresse +## Problème qu'il adresse Après avoir migré vers une architecture microservices. Les ingénieurs doivent gérer une centaine -voir des milliers de services, qui doivent tous communiqués. -Cela signifie qu'il va y avoir beaucoup de trafic qui va faire des aller et retour sur le réseau. +voir des milliers de services, qui doivent tous communiquer. +Cela signifie que beaucoup de trafic va faire des aller et retour sur le réseau. Par dessus tout cela, chaque application peut avoir besoin de chiffrer ses communications pour des contraintes -réglementaires, fournir des métriques pour les équipes opérationnelles fournir des informations détaillées à propos du trafic +réglementaires, fournir des métriques pour les équipes opérationnelles et proposer des informations détaillées sur le traffic pour aider à diagnostiquer les problèmes. -Si cela devait être géré au niveau de chaque application, chacune avec ses fonctionnalités cela pourrait causer des friction entre les équipes et ralentir le développement de nouvelles fonctionnalités. +Si cela devait être géré au niveau de chaque application, chacune de ces fonctionnalités pourrait conduire à créer des frictions entre les équipes et ralentir le développement de nouvelles fonctionnalités. ## Quel en est l'utilité From b484eb361893bbf33c31a32d1aba4deb90062b98 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Wed, 5 Oct 2022 18:18:58 +0200 Subject: [PATCH 009/295] Fix after title have been changed from the template Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index 43b72cece4..a4d818d18e 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -14,7 +14,7 @@ Les services mesh répondent à cette problématique en gérant le trafic (i.e., [fiabilité](/reliability/), de l'[observabilité](/observability/) et des fonctionnalités liées à la sécurité de manière uniforme pour tous les services. -## Problème qu'il adresse +## Problème auquel il répond Après avoir migré vers une architecture microservices. Les ingénieurs doivent gérer une centaine voir des milliers de services, qui doivent tous communiquer. @@ -29,4 +29,4 @@ Si cela devait être géré au niveau de chaque application, chacune de ces fonc Les services mesh ajoutent de la fiabilité, de l'observabilité et de la sécurité pour tous les services du cluster sans avoir à changer le code des services. Avant les services mesh, cette fonctionnalité devait être implémentée dans chaque service, -devenant une potentielle source de bug, voir une dette technique. \ No newline at end of file +devenant une potentielle source de bug, voir une dette technique. From 691b4384facf8323396877a522f0d11ccfd7b3fb Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Wed, 5 Oct 2022 18:30:35 +0200 Subject: [PATCH 010/295] Replace Service Mesh by maillage de services in the title Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index a4d818d18e..040b508d9e 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -1,5 +1,5 @@ --- -title: Service Mesh +title: Maillage de services (Service Mesh) status: Completed category: technology tags: ["networking", "", ""] From dba837d82049547730791b32989af7dfdbf9f3ec Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Tue, 1 Nov 2022 16:30:04 +0100 Subject: [PATCH 011/295] Add fydrah insights Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index 040b508d9e..dea06365cc 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -10,7 +10,7 @@ tags: ["networking", "", ""] Dans un monde de [microservices](/microservices/), les applications sont découpées en plusieurs petits services qui communiquent via le réseau. Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiables, piratables et souvent lents. -Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoute de la +Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoutent de la [fiabilité](/reliability/), de l'[observabilité](/observability/) et des fonctionnalités liées à la sécurité de manière uniforme pour tous les services. @@ -18,7 +18,7 @@ les services. Après avoir migré vers une architecture microservices. Les ingénieurs doivent gérer une centaine voir des milliers de services, qui doivent tous communiquer. -Cela signifie que beaucoup de trafic va faire des aller et retour sur le réseau. +Cela signifie que beaucoup de trafic va transiter sur le réseau. Par dessus tout cela, chaque application peut avoir besoin de chiffrer ses communications pour des contraintes réglementaires, fournir des métriques pour les équipes opérationnelles et proposer des informations détaillées sur le traffic pour aider à diagnostiquer les problèmes. @@ -26,7 +26,7 @@ Si cela devait être géré au niveau de chaque application, chacune de ces fonc ## Quel en est l'utilité -Les services mesh ajoutent de la fiabilité, de l'observabilité et de la sécurité +Le maillage de services (services mesh) ajoute de la fiabilité, de l'observabilité et de la sécurité pour tous les services du cluster sans avoir à changer le code des services. Avant les services mesh, cette fonctionnalité devait être implémentée dans chaque service, devenant une potentielle source de bug, voir une dette technique. From 2a09c2fe37b3115a7c3eb786a3b6f0c6bd8bda8e Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sat, 26 Nov 2022 16:20:11 +0100 Subject: [PATCH 012/295] Fix last error about dette technique Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index dea06365cc..8eea1218c5 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -29,4 +29,4 @@ Si cela devait être géré au niveau de chaque application, chacune de ces fonc Le maillage de services (services mesh) ajoute de la fiabilité, de l'observabilité et de la sécurité pour tous les services du cluster sans avoir à changer le code des services. Avant les services mesh, cette fonctionnalité devait être implémentée dans chaque service, -devenant une potentielle source de bug, voir une dette technique. +devenant une potentielle source de bug, voir de dette technique. From 5bd767b6302e9358e1ecd0837f66c60e3c6caefb Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Fri, 28 Oct 2022 20:21:51 -0400 Subject: [PATCH 013/295] Traduction de monolithic-apps.md Signed-off-by: Christophe Sauthier --- content/fr/monolithic-apps.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/fr/monolithic-apps.md diff --git a/content/fr/monolithic-apps.md b/content/fr/monolithic-apps.md new file mode 100644 index 0000000000..f365804800 --- /dev/null +++ b/content/fr/monolithic-apps.md @@ -0,0 +1,25 @@ +--- +title: Applications Monolithiques +status: Completed +category: concept +tags: ["architecture", "", ""] +--- + +## Ce que c'est + +Une application monolithique contient toutes les fonctionnalités au sein d'un unique logiciel déployable. +C'est souvent la manière la plus simple pour commencer le développement d'une application. +Cependant, lorsque l'application se complexifie, les monolithes peuvent devenir difficiles à maintenir. +Avec plus de développeurs qui travaillent sur la même base de code, la probabilité de conflits dans les changements et donc de communication directe entre les développeurs augmente. + +## Problème auquel il répond + +Transformer une application en [microservices](/microservices/) augmente la charge de travail - comme il y a plus de choses à tester, déployer et à maintenir opérationel. +Au début du cycle de développement d'un produit il peut être avantageux de repousser cette complexité et de construire une application monolithique jusqu'à ce que le produit soit reconnu comme un succès. + +## Quelle en est l'utilité + +Un monolith correctement architecturé peut respecter les principes lean en étant la manière la plus simple d'obtenir une application fonctionnelle. +Lorsque la valeur commerciale d'une application monolithique s'avère être un succès, elle peut être décomposée en microservices. +Créer une application microservices avant que la valeur ne soit attestée peut s'avérer être une dépense prématurée. +Si l'application n'amène aucune valeur, cet effort sera gâché. From 662a69ec5450a1c42a46cd6ad6da997841dd0e86 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Fri, 28 Oct 2022 20:41:06 -0400 Subject: [PATCH 014/295] Traduction de virtual-machine.md Signed-off-by: Christophe Sauthier --- content/fr/virtual-machine.md | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 content/fr/virtual-machine.md diff --git a/content/fr/virtual-machine.md b/content/fr/virtual-machine.md new file mode 100644 index 0000000000..cecba941ba --- /dev/null +++ b/content/fr/virtual-machine.md @@ -0,0 +1,38 @@ +--- +title: Machine Virtuelle +status: Completed +category: Technology +tags: ["fundamentals", "infrastructure", ""] +--- + +## Ce que c'est + +Une machine virtuelle (VM) est un ordinateur et son système d'exploitation +qui n'est pas lié à un matériel particulier. +Les VMs s'appuient sur la [virtualisation](/virtualization/) pour découper un unique ordinateur physique en plusieurs ordinateurs virtuels. +Cette séparation permet aux entités et aux fournisseurs d'infrastructure de +facilement créer et détruire des VMs sans impacter l'infrastructure sous-jacente. + +## Problème auquel il répond + +Les machines virtuelles tirent parti de la virtualisation. +Lorsqu'une [machine physique](/bare-metal-machine/) est liée à un unique système d'exploitation, +la manière donc les ressources peuvent être utilisées est en quelque sorte limitée. +De plus, lorsqu'un système d'exploitation est lié à une unique machine physique, +sa disponibilité est directement liée à ce matériel. +Si la machine physique est indisponible à cause d'une maintenance ou d'un problème matériel, le système d'exploitation l'est également. + +## Quelle en est l'utilité + +En supprimant la relation directe entre un système d'exploitation et la machine physique unique, +vous résolvez plusieurs problèmes des machines physiques: +temps de provisionning, utilisation du matériel et résiliance. + +Sans avoir besoin d'acheter, d'installer ou du configurer du nouveau matériel, le temps de provisionning d'un nouvel ordinateur est considérablement amélioré. +Les VMs vous permettent de mieux utiliser vos ressources matérielles existantes +en plaçant plusieurs machines virtuelles sur une seule machine physique. +N'étant pas lié à une machine physique particulière, les VMs sont également plus +résiliantes que les machines physiques. +Lorsqu'une machine physique a besoin d'être indisponible, +les VMs qui sont éxécutées dessus sont déplacées sur une autre machine avec peu +ou pas d'indisponibilité. From b20e57f52ee341b0fae0e1401d80bdee9bfca904 Mon Sep 17 00:00:00 2001 From: Edson C Date: Thu, 5 Jan 2023 18:25:22 -0300 Subject: [PATCH 015/295] [Portuguese] Update tags to all terms (#1583) * feat: update tags to terms Signed-off-by: edsoncelio --- content/pt-br/abstraction.md | 2 +- content/pt-br/application-programming-interface.md | 2 +- content/pt-br/auto-scaling.md | 2 +- content/pt-br/blue-green-deployment.md | 2 +- content/pt-br/canary-deployment.md | 2 +- content/pt-br/client-server-architecture.md | 2 +- content/pt-br/cloud-computing.md | 2 +- content/pt-br/cloud-native-apps.md | 2 +- content/pt-br/cloud-native-tech.md | 2 +- content/pt-br/cluster.md | 2 +- content/pt-br/container.md | 2 +- content/pt-br/continuous-delivery.md | 2 +- content/pt-br/data-center.md | 2 +- content/pt-br/debugging.md | 2 +- content/pt-br/devsecops.md | 2 +- content/pt-br/event-streaming.md | 1 + content/pt-br/firewall.md | 4 ++-- content/pt-br/idempotence.md | 2 +- content/pt-br/infrastructure-as-code.md | 2 +- content/pt-br/nodes.md | 2 +- content/pt-br/platform-as-a-service.md | 4 ++-- content/pt-br/portability.md | 2 +- content/pt-br/reliability.md | 2 +- content/pt-br/scalability.md | 2 +- content/pt-br/serverless.md | 2 +- content/pt-br/service.md | 4 ++-- content/pt-br/software-as-a-service.md | 4 ++-- content/pt-br/stateful-apps.md | 2 +- content/pt-br/stateless-apps.md | 2 +- content/pt-br/tightly-coupled-architectures.md | 2 +- content/pt-br/transport-layer-security.md | 2 +- content/pt-br/version-control.md | 4 ++-- content/pt-br/virtual-machine.md | 2 +- content/pt-br/virtualization.md | 2 +- 34 files changed, 39 insertions(+), 38 deletions(-) diff --git a/content/pt-br/abstraction.md b/content/pt-br/abstraction.md index fc49197b44..f3eb971b74 100644 --- a/content/pt-br/abstraction.md +++ b/content/pt-br/abstraction.md @@ -2,7 +2,7 @@ title: Abstração status: Completed category: propriedade -tags: ["arquitetura", "", ""] +tags: ["fundamento", "", ""] --- No contexto computacional, uma abstração é uma representação que oculta especificidades para um consumidor de serviços, tornando sua utilização mais genérica e de fácil entendimento. Um bom exemplo é o sistema operacional (S.O) do seu laptop. Ele abstrai todos os detalhes de como o computador funciona. Você não precisa ter nenhum conhecimento sobre CPU, memória e como os programas são executados, você apenas opera o S.O e o S.O lida com os detalhes. Todos esses detalhes são ocultos por trás das cortinas do S.O - ou seja, uma abstração. diff --git a/content/pt-br/application-programming-interface.md b/content/pt-br/application-programming-interface.md index 1be6b66999..c931469757 100644 --- a/content/pt-br/application-programming-interface.md +++ b/content/pt-br/application-programming-interface.md @@ -2,7 +2,7 @@ title: Interface de Programação de Aplicações status: Completed category: tecnologia -tags: ["arquitetura", "", ""] +tags: ["arquitetura", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/auto-scaling.md b/content/pt-br/auto-scaling.md index 0e0b8f24e2..3076503ce5 100644 --- a/content/pt-br/auto-scaling.md +++ b/content/pt-br/auto-scaling.md @@ -2,7 +2,7 @@ title: Auto scaling status: Completed category: propriedade -tags: ["aplicação", "infraestrutura", "arquitetura"] +tags: ["infraestrutura", "", ""] --- O Auto scaling é a capacidade de um sistema de escalar automaticamente, normalmente, em termos de recursos computacionais. Com um sistema de auto scaling, os recursos são adicionados automaticamente quando necessário e podem ser dimensionados para atender às variações de demanda dos usuários. O processo de auto scaling varia e é configurável para escalar com base em diferentes métricas, como memória ou tempo de processamento. Os serviços gerenciados na nuvem geralmente estão associados à funcionalidade de auto scaling, pois há mais opções e implementações disponíveis do que a maioria das implantações no modelo on premise. diff --git a/content/pt-br/blue-green-deployment.md b/content/pt-br/blue-green-deployment.md index 8502e7f148..92ab741946 100644 --- a/content/pt-br/blue-green-deployment.md +++ b/content/pt-br/blue-green-deployment.md @@ -2,7 +2,7 @@ title: Blue Green Deployment status: Completed category: conceito -tags: ["aplicação", "", ""] +tags: ["metodologia", "aplicação", ""] --- ## O que é diff --git a/content/pt-br/canary-deployment.md b/content/pt-br/canary-deployment.md index facce5c49f..b8719cc0b9 100644 --- a/content/pt-br/canary-deployment.md +++ b/content/pt-br/canary-deployment.md @@ -2,7 +2,7 @@ title: Implantação Canário status: Completed category: conceito -tags: ["aplicação", "", ""] +tags: ["metodologia", "aplicação", ""] --- ## O que é diff --git a/content/pt-br/client-server-architecture.md b/content/pt-br/client-server-architecture.md index 761982e889..fb210b4c20 100644 --- a/content/pt-br/client-server-architecture.md +++ b/content/pt-br/client-server-architecture.md @@ -2,7 +2,7 @@ title: Arquitetura Cliente Servidor status: Completed category: conceito -tags: ["arquitetura", "", ""] +tags: ["arquitetura", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/cloud-computing.md b/content/pt-br/cloud-computing.md index 873b40c021..e35ef8d78a 100644 --- a/content/pt-br/cloud-computing.md +++ b/content/pt-br/cloud-computing.md @@ -2,7 +2,7 @@ title: Computação em Nuvem status: Completed category: conceito -tags: ["infraestrutura", "", ""] +tags: ["infraestrutura", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/cloud-native-apps.md b/content/pt-br/cloud-native-apps.md index 983ac62205..b736317ab8 100644 --- a/content/pt-br/cloud-native-apps.md +++ b/content/pt-br/cloud-native-apps.md @@ -2,7 +2,7 @@ title: Aplicações Nativas em Nuvem status: Completed category: conceito -tags: ["aplicação", "", ""] +tags: ["aplicação", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/cloud-native-tech.md b/content/pt-br/cloud-native-tech.md index c496b5ce99..064edfa49d 100644 --- a/content/pt-br/cloud-native-tech.md +++ b/content/pt-br/cloud-native-tech.md @@ -2,7 +2,7 @@ title: Tecnologia Nativa da Nuvem status: Completed category: conceito -tags: ["fundamentos", "", ""] +tags: ["fundamento", "", ""] --- ## O que é diff --git a/content/pt-br/cluster.md b/content/pt-br/cluster.md index ade32615e6..37b67c8a40 100644 --- a/content/pt-br/cluster.md +++ b/content/pt-br/cluster.md @@ -2,7 +2,7 @@ title: Cluster status: Completed category: conceito -tags: ["infraestrutura", "arquitetura", ""] +tags: ["infraestrutura", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/container.md b/content/pt-br/container.md index 50946b5049..0022db3387 100644 --- a/content/pt-br/container.md +++ b/content/pt-br/container.md @@ -2,7 +2,7 @@ title: Contêineres status: Completed category: tecnologia -tags: ["aplicação", "", ""] +tags: ["aplicação", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/continuous-delivery.md b/content/pt-br/continuous-delivery.md index f3e27d46af..a0df9395f2 100644 --- a/content/pt-br/continuous-delivery.md +++ b/content/pt-br/continuous-delivery.md @@ -2,7 +2,7 @@ title: Entrega Contínua (CD) status: Completed category: conceito -tags: ["aplicação", "metodologia", ""] +tags: [metodologia", "aplicação", ""] --- ## O que é diff --git a/content/pt-br/data-center.md b/content/pt-br/data-center.md index bfc2d05aca..c25916748a 100644 --- a/content/pt-br/data-center.md +++ b/content/pt-br/data-center.md @@ -2,7 +2,7 @@ title: Data Center status: Feedback Appreciated category: tecnologia -tags: ["", "", ""] +tags: ["infraestrutura", "", ""] --- ## O que é diff --git a/content/pt-br/debugging.md b/content/pt-br/debugging.md index 4e9eb66139..94154fb178 100644 --- a/content/pt-br/debugging.md +++ b/content/pt-br/debugging.md @@ -2,7 +2,7 @@ title: Debugging status: Completed category: conceito -tags: ["aplicação", "", ""] +tags: ["aplicação", "metodologia", ""] --- ## O que é diff --git a/content/pt-br/devsecops.md b/content/pt-br/devsecops.md index e8d19aa9f5..d462367c11 100644 --- a/content/pt-br/devsecops.md +++ b/content/pt-br/devsecops.md @@ -2,7 +2,7 @@ title: DevSecOps status: Completed category: conceito -tags: ["metodologia", "", ""] +tags: ["metodologia", "segurança", ""] --- ## O que é diff --git a/content/pt-br/event-streaming.md b/content/pt-br/event-streaming.md index 4623564aed..e09b1141ea 100644 --- a/content/pt-br/event-streaming.md +++ b/content/pt-br/event-streaming.md @@ -2,6 +2,7 @@ title: Streaming de Eventos status: Completed category: conceito +tags: ["metodologia", "rede", ""] --- ## O que é diff --git a/content/pt-br/firewall.md b/content/pt-br/firewall.md index bb0ebfd5ab..e03dd0f300 100644 --- a/content/pt-br/firewall.md +++ b/content/pt-br/firewall.md @@ -1,8 +1,8 @@ --- title: Firewall -status: Completed +status: Deprecated category: tecnologia -tags: ["segurança", "", ""] +tags: ["descontinuado", "", ""] --- ## O que é diff --git a/content/pt-br/idempotence.md b/content/pt-br/idempotence.md index 9e90f37643..80ab749b31 100644 --- a/content/pt-br/idempotence.md +++ b/content/pt-br/idempotence.md @@ -2,7 +2,7 @@ title: Idempotência status: Completed category: propriedade -tags: ["infraestrutura", "arquitetura", ""] +tags: ["propriedade", "", ""] --- Em matemática ou na ciência da computação, a idempotência descreve uma operação que sempre leva o mesmo resultado, não importando quantas vezes você execute a operação. diff --git a/content/pt-br/infrastructure-as-code.md b/content/pt-br/infrastructure-as-code.md index b98c1b4352..81d56c371b 100644 --- a/content/pt-br/infrastructure-as-code.md +++ b/content/pt-br/infrastructure-as-code.md @@ -2,7 +2,7 @@ title: Infraestrutura como Código status: Completed category: conceito -tags: ["infraestrutura", "", ""] +tags: ["infraestrutura", "metodologia", ""] --- ## O que é diff --git a/content/pt-br/nodes.md b/content/pt-br/nodes.md index e104d295ca..a63eaef0b0 100644 --- a/content/pt-br/nodes.md +++ b/content/pt-br/nodes.md @@ -2,7 +2,7 @@ title: Nós status: Completed category: conceito -tags: ["arquitetura", "", ""] +tags: ["infraestrutura", "fundamento", ""] --- ## O que é diff --git a/content/pt-br/platform-as-a-service.md b/content/pt-br/platform-as-a-service.md index a2489f2f78..18e5546183 100644 --- a/content/pt-br/platform-as-a-service.md +++ b/content/pt-br/platform-as-a-service.md @@ -1,8 +1,8 @@ --- title: Plataforma como serviço (PaaS) -status: Completed +status: Deprecated category: tecnologia -tags: ["fundamentos", "plataforma", ""] +tags: ["descontinuado", "", ""] --- ## O que é diff --git a/content/pt-br/portability.md b/content/pt-br/portability.md index 4c5b98cfa5..f4274b8dd0 100644 --- a/content/pt-br/portability.md +++ b/content/pt-br/portability.md @@ -2,7 +2,7 @@ title: Portabilidade status: Completed category: propriedade -tags: ["fundamentos", "", ""] +tags: ["fundamento", "propriedade", ""] --- Uma característica do software, a portabilidade é uma forma de reutilização que ajuda a evitar o "travamento" em determinados ambientes operacionais, por exemplo, provedores de nuvem, sistemas operacionais ou fornecedores. diff --git a/content/pt-br/reliability.md b/content/pt-br/reliability.md index d40781feba..9d51cfff4b 100644 --- a/content/pt-br/reliability.md +++ b/content/pt-br/reliability.md @@ -2,7 +2,7 @@ title: Confiabilidade status: Completed category: propriedade -tags: ["fundamentos", "", ""] +tags: ["fundamento", "propriedade", ""] --- Do ponto de vista nativo da nuvem, a confiabilidade refere-se ao quão bem um sistema responde a falhas. diff --git a/content/pt-br/scalability.md b/content/pt-br/scalability.md index 90bb936c7e..cf6d741d29 100644 --- a/content/pt-br/scalability.md +++ b/content/pt-br/scalability.md @@ -2,7 +2,7 @@ title: Escalabilidade status: Completed category: propriedade -tags: ["fundamentos", "", ""] +tags: ["fundamento", "propriedade", ""] --- Escalabilidade refere-se ao quão bem um sistema pode crescer. diff --git a/content/pt-br/serverless.md b/content/pt-br/serverless.md index 1ff9e227a5..cb6293b05e 100644 --- a/content/pt-br/serverless.md +++ b/content/pt-br/serverless.md @@ -2,7 +2,7 @@ Title: Serverless Status: Completed Category: tecnologia -tags: ["infraestrutura", "", ""] +tags: ["arquitetura", "", ""] --- ## O que é diff --git a/content/pt-br/service.md b/content/pt-br/service.md index a31add7c14..3e727142ee 100644 --- a/content/pt-br/service.md +++ b/content/pt-br/service.md @@ -2,7 +2,7 @@ title: Serviço status: Completed category: conceito -tags: ["arquitetura", "", ""] +tags: ["aplicação", "fundamento", ""] --- -Observe que, em Tecnologia da Informação, o termo serviço tem vários significados. Vamos nos concentrar na mais tradicional: serviço como no microsserviço. Como ou mesmo se os serviços diferem dos microsserviços é sutil, e pessoas diferentes podem ter opiniões diferentes. Para uma definição de alto nível, vamos tratá-los da mesma forma. Consulte a definição [microsserviço](/microservices/). \ No newline at end of file +Observe que, em Tecnologia da Informação, o termo serviço tem vários significados. Vamos nos concentrar na mais tradicional: serviço como no microsserviço. Como ou mesmo se os serviços diferem dos microsserviços é sutil, e pessoas diferentes podem ter opiniões diferentes. Para uma definição de alto nível, vamos tratá-los da mesma forma. Consulte a definição [microsserviço](/microservices/). diff --git a/content/pt-br/software-as-a-service.md b/content/pt-br/software-as-a-service.md index 5977ec85dc..d74aa4b0c1 100644 --- a/content/pt-br/software-as-a-service.md +++ b/content/pt-br/software-as-a-service.md @@ -1,8 +1,8 @@ --- Title: Software como Serviço -Status: Completed +Status: Deprecated Category: tecnologia -tags: ["fundamentos", "plataforma", ""] +tags: ["descontinuado", "", ""] --- ## O que é diff --git a/content/pt-br/stateful-apps.md b/content/pt-br/stateful-apps.md index 6cb4d435c5..4d2ffaf410 100644 --- a/content/pt-br/stateful-apps.md +++ b/content/pt-br/stateful-apps.md @@ -2,7 +2,7 @@ title: Aplicações Stateful status: Completed category: conceito -tags: ["fundamentos", "", ""] +tags: ["fundamento", "aplicação", ""] --- ## O que é diff --git a/content/pt-br/stateless-apps.md b/content/pt-br/stateless-apps.md index add6fde209..0b48896079 100644 --- a/content/pt-br/stateless-apps.md +++ b/content/pt-br/stateless-apps.md @@ -2,7 +2,7 @@ title: Aplicações Stateless status: Feedback Appreciated category: tecnologia -tags: ["fundamentos", "", ""] +tags: ["fundamento", "aplicação", ""] --- ## O que é diff --git a/content/pt-br/tightly-coupled-architectures.md b/content/pt-br/tightly-coupled-architectures.md index a9ce413378..476b105c0c 100644 --- a/content/pt-br/tightly-coupled-architectures.md +++ b/content/pt-br/tightly-coupled-architectures.md @@ -2,7 +2,7 @@ title: Arquitetura Acoplada status: Completed category: propriedade -tags: ["fundamentos", "", ""] +tags: ["fundamento", "arquitetura", "propriedade"] --- Arquitetura acoplada é um estilo de arquitetura em que vários componentes da aplicação são interdependentes (o paradigma oposto de [arquiteturas desacopladas](/loosely-coupled-architecture/)). Isso significa que uma mudança em um componente provavelmente afetará outros componentes. Geralmente é mais fácil de implementar do que estilos de arquitetura desacopladas, mas pode deixar um sistema mais vulnerável a falhas em cascata. Esse estilo de arquitetura também tende a exigir implementações coordenadas de componentes, o que pode se tornar um obstáculo à produtividade do desenvolvedor. diff --git a/content/pt-br/transport-layer-security.md b/content/pt-br/transport-layer-security.md index 3f8edab924..7aa7f484bd 100644 --- a/content/pt-br/transport-layer-security.md +++ b/content/pt-br/transport-layer-security.md @@ -2,7 +2,7 @@ title: TLS status: Completed category: conceito -tags: ["segurança", "", ""] +tags: ["segurança", "rede", ""] --- ## O que é diff --git a/content/pt-br/version-control.md b/content/pt-br/version-control.md index c487d4580f..5ff30a6530 100644 --- a/content/pt-br/version-control.md +++ b/content/pt-br/version-control.md @@ -1,8 +1,8 @@ --- title: Controle de Versão -status: Completed +status: Deprecated category: tecnologia -tags: ["metodologia", "", ""] +tags: ["descontinuado", "", ""] --- ## O que é diff --git a/content/pt-br/virtual-machine.md b/content/pt-br/virtual-machine.md index ddb8d912f0..44a23ba6d4 100644 --- a/content/pt-br/virtual-machine.md +++ b/content/pt-br/virtual-machine.md @@ -2,7 +2,7 @@ title: Máquina Virtual status: Completed category: tecnologia -tags: ["fundamentos", "infraestrutura", ""] +tags: ["fundamento", "infraestrutura", ""] --- ## O que é diff --git a/content/pt-br/virtualization.md b/content/pt-br/virtualization.md index bb00140260..8c37647c1e 100644 --- a/content/pt-br/virtualization.md +++ b/content/pt-br/virtualization.md @@ -2,7 +2,7 @@ title: Virtualização status: completed category: tecnologia -tags: ["fundamentos", "infraestrutura", ""] +tags: ["fundamento", "infraestrutura", "metodologia"] --- ## O que é From e5377141182cbf8c41a7f1b72e1ac60609537bdf Mon Sep 17 00:00:00 2001 From: Paulo Alberto Simoes Date: Thu, 12 Jan 2023 22:42:20 -0300 Subject: [PATCH 016/295] Add glossary / pt-br / Event-Driven Architecture (#1206) (#1576) * Add glossary / pt-br / EDA (#1206) Signed-off-by: Paulo Alberto Simoes Signed-off-by: Paulo Simoes * fix typos in title Signed-off-by: Paulo Simoes Signed-off-by: Paulo Alberto Simoes Signed-off-by: Paulo Simoes --- content/pt-br/event-driven-architecture.md | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 content/pt-br/event-driven-architecture.md diff --git a/content/pt-br/event-driven-architecture.md b/content/pt-br/event-driven-architecture.md new file mode 100644 index 0000000000..7353efe1da --- /dev/null +++ b/content/pt-br/event-driven-architecture.md @@ -0,0 +1,26 @@ +--- +title: Arquitetura Orientada por Eventos +status: Completed +category: conceito +tags: ["arquitetura", "", ""] +--- + +## O que é + +A arquitetura orientada por Eventos é uma arquitetura de software que promove a criação, o processamento, e o consumo de eventos. +Um evento é qualquer alteração no estado de uma aplicação ou sistema. +Por exemplo, solicitar uma corrida em um aplicativo de transporte representa um evento. +Essa arquitetura cria a estrutura na qual os eventos podem ser adequadamente roteados da sua fonte (o aplicativo requisitante da corrida) para os seus receptores desejados (os aplicativos dos motoristas disponíveis nas proximidades). + +## Problema relacionado + +À medida que mais dados são gerados em tempo real, encontrar maneiras confiáveis de garantir que os eventos sejam capturados e roteados para o [serviço](/pt-br/service/) apropriado, que deve processar as solicitações de eventos, se torna cada vez mais desafiador. +Os métodos tradicionais de manipulação de eventos geralmente não têm como garantir que as mensagens sejam roteadas adequadamente, ou mesmo que sejam realmente enviadas ou recebidas. +À medida que os aplicativos começam a escalar, se torna mais desafiador orquestrar eventos. + +## Como isso ajuda + +As arquiteturas orientadas por eventos estabelecem um hub central, um concentrador, para todos os eventos (por exemplo, [Apache Kafka](http://kafka.apache.org/)). +Em seguida, você define os produtores de eventos (origem) e os consumidores (receptor) e o hub de eventos central garante o fluxo de eventos. +Essa arquitetura garante que os serviços permaneçam desacoplados e os eventos sejam roteados adequadamente do produtor ao consumidor. +O produtor receberá o evento de entrada, geralmente pelo protocolo HTTP, e roteará as informações do evento. From 2f5d59539f5e9288486ae9271e8818d277a19b5e Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Fri, 28 Oct 2022 00:19:42 -0400 Subject: [PATCH 017/295] Traduction de containerization.md Signed-off-by: Christophe Sauthier --- content/fr/containerization.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/fr/containerization.md diff --git a/content/fr/containerization.md b/content/fr/containerization.md new file mode 100644 index 0000000000..e6ac6b0eec --- /dev/null +++ b/content/fr/containerization.md @@ -0,0 +1,31 @@ +--- +title: Contenérisation +status: Completed +category: Technology +tags: ["application", "", ""] +--- + +## Ce que c'est + +La contenérisation est l'action de regrouper une application et ses dépendances dans une [image de conteneur](/container-image/). +Le processus de construction du conteneur nécessite de respecter le standard de l'[Open Container Initiative](https://opencontainers.org) (OCI). +Du moment que le résultat est une image qui respecte ce standard, l'outil de contenérisation qui sera utilisé n'a pas d'importance. + +## Problème auquel il répond + +Avant que les conteneurs ne se répandent, les organisations s'appuyaient sur les machines virtuelles (VMs) pour orchestrer différentes applications au sein d'une unique [machine physique](/bare-metal-machine/). +Les VMs sont sensiblement plus grosses que les conteneurs et nécessitent un hyperviseur pour fonctionner. +À cause du stockage, du backup et du transfert de ces gros modèles de VM, la création des modèles de VM est également longue. +De plus, les VMs peuvent souffrir d'une dérive de configuration ce qui enfreint le principe de l'[immuabilité](/immutable-infrastructure/). + +## Quel en est l'utilité + +Les images de conteneurs sont légères (par opposition aux VM traditionnelles) et +le processus de contenérisation nécessite un fichier qui liste les dépendances. +Ce fichier peut être versionné et la construction automatisée, permettant +à une organisation de se concentrer sur d'autres priorités pendant que +le processus automatisé va se charger de la construction. +Une image de conteneur est stockée sous un identifiant unique qui est lié à +son contenu et sa configuration exacte. +Etant donné que les conteneurs sont planifiés et replanifiés, ils sont toujours +réinitialisés à leur état initial ce qui élimine toute dérive de configuration. From 2b7ed3f10c7be9904cdea647c413410393627cb0 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Wed, 25 Jan 2023 09:05:10 -0500 Subject: [PATCH 018/295] Applied feedback from Flavien Signed-off-by: Christophe Sauthier --- content/fr/containerization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/containerization.md b/content/fr/containerization.md index e6ac6b0eec..8cc66e94be 100644 --- a/content/fr/containerization.md +++ b/content/fr/containerization.md @@ -15,7 +15,7 @@ Du moment que le résultat est une image qui respecte ce standard, l'outil de co Avant que les conteneurs ne se répandent, les organisations s'appuyaient sur les machines virtuelles (VMs) pour orchestrer différentes applications au sein d'une unique [machine physique](/bare-metal-machine/). Les VMs sont sensiblement plus grosses que les conteneurs et nécessitent un hyperviseur pour fonctionner. -À cause du stockage, du backup et du transfert de ces gros modèles de VM, la création des modèles de VM est également longue. +À cause du stockage, des sauvegardes et du transfert de ces gros modèles de VM, la création des modèles de VM est également longue. De plus, les VMs peuvent souffrir d'une dérive de configuration ce qui enfreint le principe de l'[immuabilité](/immutable-infrastructure/). ## Quel en est l'utilité @@ -27,5 +27,5 @@ Ce fichier peut être versionné et la construction automatisée, permettant le processus automatisé va se charger de la construction. Une image de conteneur est stockée sous un identifiant unique qui est lié à son contenu et sa configuration exacte. -Etant donné que les conteneurs sont planifiés et replanifiés, ils sont toujours +Étant donné que les conteneurs sont instanciés et ré-instanciés, ils sont toujours réinitialisés à leur état initial ce qui élimine toute dérive de configuration. From a2c9f89e42f0e73c21cb82f806d4cb398a6f9ee4 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Wed, 25 Jan 2023 15:58:30 -0500 Subject: [PATCH 019/295] Traduction de container-orchestration en FR Signed-off-by: Christophe Sauthier --- content/fr/container-orchestration.md | 24 ++++++++++++++++++++ content/fr/container.md | 32 --------------------------- 2 files changed, 24 insertions(+), 32 deletions(-) create mode 100644 content/fr/container-orchestration.md delete mode 100644 content/fr/container.md diff --git a/content/fr/container-orchestration.md b/content/fr/container-orchestration.md new file mode 100644 index 0000000000..308a151fce --- /dev/null +++ b/content/fr/container-orchestration.md @@ -0,0 +1,24 @@ +--- +title: Orchestration de Conteneurs +status: Completed +category: Concept +--- + +## Ce que c'est + +L'orchestration de [Conteneurs](/container/) fait référence à la gestion et à l'automatisation du cycle de vie d'applications conteneurisées au sein d'environnements dynamiques. +Réalisée à l'aide d'un orchestrateur de conteneurs (la plupart du temps, [Kubernetes](/kubernetes)), elle permet les déploiements, le passage à l'échelle (automatique), (l'auto-)remédiation et le monitoring. +L'orchestration est une métaphore: +L'outil d'orchestration dirige les conteneurs tel un chef d'orchestre, s'assurant que chaque conteneur (ou musicien) fait ce qu'il doit faire. + +## Problème auquel il répond + +Gérer des [microservices](/microservices), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/distributed-systems) en général — est compliqué, pour ne pas dire impossible, manuellement. +L'orchestration de conteneurs permet aux utilisateurs d'automatiser toutes ces tâches de gestion. + +## Quelle en est l'utilité + +Les outils d'orchestration de conteneurs permettent aux utilisateurs de déterminer l'état d'un système. +Tout d'abord, on déclare tel qu'il devrait être (i.e. x conteneurs, y pods, etc...). +L'outil d'orchestration va ensuite automatiquement surveiller l'infrastructure et la corriger si son état dévie de l'état déclaré (i.e. ajouter un nouveau conteneur si un autre est tombé en panne). +Cette automatisation simplifie nombre des tâches complexes et hautement manuelles qui sont réalisées autrement par les équipes d'ingénieurie, comme l'approvisionnement, le déploiement, la scalabilité (vers le haut ou le bas), la répartition de charge parmi d'autres activités. diff --git a/content/fr/container.md b/content/fr/container.md deleted file mode 100644 index 7f9be0313d..0000000000 --- a/content/fr/container.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Conteneurs -status: Completed -category: technology -tags: ["application", "", ""] ---- - -## Ce que c'est - -Un conteneur est un processus qui fonctionne avec des contraintes de ressources et de capacités gérées par le système d'exploitation d'un ordinateur. -Les fichiers accessibles au processus du conteneur sont regroupés dans une image de conteneur. -Les conteneurs sont executés les uns à coté des autres sur la même machine, -mais habituellement le système d'exploitation empêche les processus de conteneurs différents d'interagir ensemble. - -## Problème auquel il répond - -Avant que les conteneurs ne soient disponibles, des machines dédiées étaient nécessaires pour faire fonctionner des applications. -Chaque machine nécessitait son propre système d'exploitation, qui utilisait du CPU, de la mémoire et de l'espace disque, -tout celà pour faire fonctionner une simple application. -De plus, la maintenance, la mise à jour et le lancement d'un système d'exploitation sont des sources de travail en plus. - -## Quel en est l'utilité - -Les conteneurs partagent le même système d'exploitation et ses ressources machine, -et se répartissent la surcharge des ressources dues au système d'exploitation, permettant un usage efficace de la machine physique. -Cette possibilité est uniquement offerte car les conteneurs sont habituellement limités dans leurs interactions mutuelles. -Ceci permet de faire fonctionner plus d'applications sur la même machine physique. - -Il y a cependant des limitations. -Étant donné que les conteneurs partagent le même système d'exploitation, les processus peuvent être considérés moins sécurisés que leurs alternatives. -Les conteneurs nécessitent également des limites sur les ressources partagées. -Pour garantir les ressources, les administrateurs doivent contraindre et limiter l'utilisation de la mémoire et du CPU afin de ne pas impacter les performances des autres applications. From e3bd7b2f765e1ef5cf26529bdfbabc5b44d1ce7d Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Thu, 26 Jan 2023 18:53:20 +0100 Subject: [PATCH 020/295] Add review from Fydrah Signed-off-by: Ludovic Logiou --- content/fr/service-mesh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index 8eea1218c5..e705315ab9 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -16,7 +16,7 @@ les services. ## Problème auquel il répond -Après avoir migré vers une architecture microservices. Les ingénieurs doivent gérer une centaine +Après avoir migré vers une architecture microservices, les ingénieurs doivent gérer une centaine voir des milliers de services, qui doivent tous communiquer. Cela signifie que beaucoup de trafic va transiter sur le réseau. Par dessus tout cela, chaque application peut avoir besoin de chiffrer ses communications pour des contraintes From 2eaa43a93fc042ffb249c268874b9587196242ba Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Tue, 31 Jan 2023 13:50:51 -0500 Subject: [PATCH 021/295] Integrate Fydrah feedback Signed-off-by: Christophe Sauthier --- content/fr/container-orchestration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/container-orchestration.md b/content/fr/container-orchestration.md index 308a151fce..304636f375 100644 --- a/content/fr/container-orchestration.md +++ b/content/fr/container-orchestration.md @@ -13,7 +13,7 @@ L'outil d'orchestration dirige les conteneurs tel un chef d'orchestre, s'assuran ## Problème auquel il répond -Gérer des [microservices](/microservices), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/distributed-systems) en général — est compliqué, pour ne pas dire impossible, manuellement. +Gérer manuellement des [microservices](/microservices), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/distributed-systems) en général — est compliqué, pour ne pas dire impossible. L'orchestration de conteneurs permet aux utilisateurs d'automatiser toutes ces tâches de gestion. ## Quelle en est l'utilité From 78ebb6eb6863b2b1b5c3481afcfa6e74e9c231b5 Mon Sep 17 00:00:00 2001 From: Adail Horst <3518964+SpawW@users.noreply.github.com> Date: Fri, 3 Feb 2023 23:17:25 +0000 Subject: [PATCH 022/295] Issue 813 - Kubernetes to PT-BR (#1670) * Issue 813 - Kubernetes to PT-BR Signed-off-by: Adail Spinola Horst * Solve issues related by MRErlison and correct some urls to pt-br version * Solve: https://github.com/cncf/glossary/pull/1670#discussion_r1089733332 * Solve: https://github.com/cncf/glossary/pull/1670#discussion_r1089733334 and https://github.com/cncf/glossary/pull/1670#discussion_r1089733328 * Solve: https://github.com/cncf/glossary/pull/1670#discussion_r1089728123 --------- Signed-off-by: Adail Spinola Horst --- content/pt-br/kubernetes.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 content/pt-br/kubernetes.md diff --git a/content/pt-br/kubernetes.md b/content/pt-br/kubernetes.md new file mode 100644 index 0000000000..1079e28308 --- /dev/null +++ b/content/pt-br/kubernetes.md @@ -0,0 +1,33 @@ +--- +title: Kubernetes +status: Completed +category: tecnologia +tags: ["infraestrutura", "fundamental", ""] +--- + +## O que é + +Kubernetes, normalmente abreviado como K8s, é um orquestrador de contêineres de código aberto. +Ele automatiza o ciclo de vida de aplicações em contêineres em infraestruturas modernas, funciona como um "sistema operacional de datacenter" que gerencia aplicativos em um [sistema distribuído](/distributed-systems/). + +O Kubernetes planeja os [contêineres](/pt-br/container/) entre [nós](/pt-br/nodes/) de um [cluster](/pt-br/cluster/), agrupando vários recursos de infraestrutura como balanceador de carga, armazenamento persistente, etc., para executar aplicações em contêineres. + +O Kubernetes permite automação e extensibilidade, permitindo que os usuários implantem aplicativos declarativamente (veja abaixo) de maneira reproduzível. É extensível por meio de sua [API](/pt-br/application-programming-interface/), permitindo que profissionais experientes do Kubernetes aproveitem seus recursos de automação de acordo com suas necessidades. + +## Problema relacionado + +A automação de infraestrutura e o gerenciamento declarativo de configuração são conceitos importantes há muito tempo, mas se tornaram mais prementes à medida que a [computação em nuvem](/pt-br/cloud-computing/) ganhou popularidade. +À medida que a demanda por recursos de computação aumenta e as organizações precisam fornecer mais recursos operacionais com menos engenheiros, novas tecnologias e métodos de trabalho são necessários para atender a essa demanda. + +## Como isso ajuda + +De forma similar às ferramentas tradicionais de [infraestrutura como código](/pt-br/infrastructure-as-code/), o Kubernetes ajuda na automação e tem a vantagem de trabalhar com contêineres. +Os contêineres são mais resistentes ao desvio de configuração do que [máquinas virtuais](/pt-br/virtual-machine/) ou físicas. + +Adicionalmente, o Kubernetes funciona de forma declarativa, o que significa que, em vez de fornecer instruções ao Kubernetes os operadores descrevem o que desejam - geralmente com arquivos de manifesto (por exemplo, no formato YAML) - definindo como a infraestrutura deve ser. + +Kubernetes cuida então do "como" e isso o torna extremamente compatível com a infraestrutura como código. + +O Kubernetes também possui [auto recuperação](/self-healing/). +O estado real do cluster sempre corresponderá ao estado desejado pelo operador. Se for detectado um desvio ao que foi descrito nos arquivos de manifesto um controlador do Kubernetes entrará em ação e procederá com a correção. +Embora a infraestrutura que o Kubernetes possa estar em constante mudança, o Kubernetes se adapta de forma constante e automática a estas mudanças, garantindo que o estado desejado permaneça. From 011c186d92b9ebffba8ad8ccd418b77dc1cb5a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sat, 4 Feb 2023 15:47:10 +0100 Subject: [PATCH 023/295] [fr] Localize abstraction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 content/fr/abstraction.md diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md new file mode 100644 index 0000000000..49c2685d1e --- /dev/null +++ b/content/fr/abstraction.md @@ -0,0 +1,18 @@ +--- +title: Abstraction +status: Feedback Appreciated +category: Property +tags: ["fundamental", "", ""] +--- + +Dans le contexte informatique, une abstraction est une représentation qui masque les détails spécifiques à un consommateur de services (un consommateur étant un programme informatique ou un humain), rendant un système plus générique, et ainsi facilement compréhensible. +Le système d'exploitation de votre ordinateur portable en est un bon exemple. +Il masque tous les détails du fonctionnement de votre ordinateur. + +Vous n'avez pas besoin d'avoir une compréhension approfondie du processeur, de la mémoire et du fonctionnement des programmes, vous utilisez simplement le système d'exploitation et le système d'exploitation s'occupe des détails. +Tous ces détails sont cachés sous le « capot » ou l'abstraction du système d'exploitation. + +Généralement, les systèmes ont plusieurs couches d'abstraction. +Cela simplifie considérablement le développement. +Lors de la programmation, les développeurs construisent des composants compatibles avec une couche d'abstraction particulière et n'ont pas à se soucier de tous les détails sous-jacents qui peuvent être très hétérogènes. +Si cela fonctionne avec la couche d'abstraction, cela fonctionne avec le système — peu importe ce qui se trouve sous le capot. From a6e913bc07e1e28ede37f18bd1be5b22b1163e5b Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 5 Feb 2023 16:28:29 +0100 Subject: [PATCH 024/295] Add feedbacks from Huats Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 6 +++--- content/fr/cloud-native-tech.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index ff6f272755..fd1b72fb4e 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -8,9 +8,9 @@ tags: ["application", "", ""] ## Ce que c'est Les applications Cloud Native sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). -Ces applications s'intègrent facilement avec leurs architectures cloud respective, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). +Ces applications s'intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). Ce terme fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. -Aujourd'hui, les applications Cloud native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. +Aujourd'hui, les applications Cloud Native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. ## Problème auquel il répond @@ -23,7 +23,7 @@ Par exemple, les applications nécessitant une intervention manuelle pour démar Bien qu'il n'y ait pas de solution miracle pour qu'une application soit définie comme cloud native, les applications Cloud Native présentent des points en commun. -Les applications Cloud Native sont résilientes, elles sont manipulables et tirent profit de l'ensemble des services Cloud dans lequel elles +Les applications Cloud Native sont résilientes, elles sont gérables et tirent profit de l'ensemble des services Cloud où elles sont déployées. De nombreux services Cloud mettent à disposition un important niveau d'[observabilité](/observability/), permettant aux utilisateurs de détecter et de régler les problèmes avant qu'ils ne deviennent plus importants. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 738031253a..234acaf04e 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -12,7 +12,7 @@ utilisées pour construire des [applications cloud native](/cloud-native-apps/). Ces technologies permettent aux organisations de développer des applications capables de se mettre à l'échelle dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides. Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). -Elles sont conçues dès le départ pour exploiter les capacités du cloud computings ainsi que des conteneurs, du service meshes, des micro-services. Les infrastructures immuables illustrent cette approche. +Elles sont conçues dès le départ pour exploiter les capacités du cloud computing ainsi que des conteneurs, des service meshes, des micro-services. Les infrastructures immuables illustrent cette approche. ## Problème auquel il répond @@ -27,5 +27,5 @@ capable de se réparer toute seule. Il adresse également l'utilisation ineffica ## Quel en est l'utilité Bien que chaque technologie réponde à un problème très spécifique, -en tant que groupe, les technologies cloud natives permettent de créer des systèmes faiblement co uplés qui sont résilients, gérabels et observables.. +en tant que groupe, les technologies cloud natives permettent de créer des systèmes faiblement couplés qui sont résilients, gérables et observables.. Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. From f3396cfa92a344466def2f364b988418f85431eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sun, 5 Feb 2023 18:37:42 +0100 Subject: [PATCH 025/295] Updates after reviews MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md index 49c2685d1e..cc888a5c7a 100644 --- a/content/fr/abstraction.md +++ b/content/fr/abstraction.md @@ -9,8 +9,8 @@ Dans le contexte informatique, une abstraction est une représentation qui masqu Le système d'exploitation de votre ordinateur portable en est un bon exemple. Il masque tous les détails du fonctionnement de votre ordinateur. -Vous n'avez pas besoin d'avoir une compréhension approfondie du processeur, de la mémoire et du fonctionnement des programmes, vous utilisez simplement le système d'exploitation et le système d'exploitation s'occupe des détails. -Tous ces détails sont cachés sous le « capot » ou l'abstraction du système d'exploitation. +Vous n'avez pas besoin d'avoir une compréhension approfondie du processeur, de la mémoire et du fonctionnement des programmes, vous utilisez simplement le système d'exploitation et ce dernier s'occupe des détails. +Tous ces détails sont cachés sous le « capot » abstrait par le système d'exploitation. Généralement, les systèmes ont plusieurs couches d'abstraction. Cela simplifie considérablement le développement. From 5de6f2935f7da475f6680472f5c336fb1caece4c Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 5 Feb 2023 20:18:16 +0100 Subject: [PATCH 026/295] Fix missing s at application Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index fd1b72fb4e..c0c3d3516d 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -1,5 +1,5 @@ --- -title: Application Cloud Native +title: Applications Cloud Native status: Completed category: concept tags: ["application", "", ""] From c22e48133ab0b6a76fe1947b1e8b2bc1a9eb372b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Tue, 14 Feb 2023 19:33:34 +0100 Subject: [PATCH 027/295] Update after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md index cc888a5c7a..11350e8a72 100644 --- a/content/fr/abstraction.md +++ b/content/fr/abstraction.md @@ -15,4 +15,4 @@ Tous ces détails sont cachés sous le « capot » abstrait par le système d' Généralement, les systèmes ont plusieurs couches d'abstraction. Cela simplifie considérablement le développement. Lors de la programmation, les développeurs construisent des composants compatibles avec une couche d'abstraction particulière et n'ont pas à se soucier de tous les détails sous-jacents qui peuvent être très hétérogènes. -Si cela fonctionne avec la couche d'abstraction, cela fonctionne avec le système — peu importe ce qui se trouve sous le capot. +Si cela fonctionne avec la couche d'abstraction, cela fonctionne avec le système — peu importe ce qui se trouve en dessous. From ba5755667f0e3fcca6766542770d54d78d370aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Wed, 15 Feb 2023 14:32:05 +0100 Subject: [PATCH 028/295] Remove useless space MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md index 11350e8a72..644d3bbe15 100644 --- a/content/fr/abstraction.md +++ b/content/fr/abstraction.md @@ -8,7 +8,6 @@ tags: ["fundamental", "", ""] Dans le contexte informatique, une abstraction est une représentation qui masque les détails spécifiques à un consommateur de services (un consommateur étant un programme informatique ou un humain), rendant un système plus générique, et ainsi facilement compréhensible. Le système d'exploitation de votre ordinateur portable en est un bon exemple. Il masque tous les détails du fonctionnement de votre ordinateur. - Vous n'avez pas besoin d'avoir une compréhension approfondie du processeur, de la mémoire et du fonctionnement des programmes, vous utilisez simplement le système d'exploitation et ce dernier s'occupe des détails. Tous ces détails sont cachés sous le « capot » abstrait par le système d'exploitation. From 2eab0974883355abe82ea6dc92dc24a1c21f9eb3 Mon Sep 17 00:00:00 2001 From: Paulo Alberto Simoes Date: Tue, 21 Feb 2023 16:50:07 -0300 Subject: [PATCH 029/295] Add FaaS description in Portugese (#1738) * Add FaaS description in Portugese Signed-off-by: Paulo Alberto Simoes * Add FaaS description in Portugese Fixing href IaaS, the PT-BR version doesn't exist, pointing to the original EN version until PT-BR is available. Signed-off-by: Paulo Alberto Simoes --------- Signed-off-by: Paulo Alberto Simoes --- content/pt-br/function-as-a-service.md | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/pt-br/function-as-a-service.md diff --git a/content/pt-br/function-as-a-service.md b/content/pt-br/function-as-a-service.md new file mode 100644 index 0000000000..bfa3647336 --- /dev/null +++ b/content/pt-br/function-as-a-service.md @@ -0,0 +1,29 @@ +--- +title: Função como um Serviço (FaaS) +status: Completed +category: Tecnologia +tags: ["infraestrutura", "", ""] +--- + +## O que é + +Função como um Serviço, (FaaS - Function as a Service ), é um tipo de [serviço](/pt-br/service/) de [computação em nuvem](/pt-br/cloud-computing/) [sem servidor](/pt-br/serverless/) que permite a execução de código em resposta a eventos sem manter a complexa infraestrutura normalmente associado à criação e lançamento de aplicações de [microsserviços](/microservices/). + +Com FaaS, os usuários gerenciam apenas funções e dados enquanto o provedor de nuvem gerencia a aplicação. +Isso permite que os desenvolvedores obtenham as funções necessárias sem pagar pelos serviços quando o código não está em execução. + +## Problema relacionado + +Em um cenário tradicional, uma empresa gerencia e mantém seu próprio data center local. A empresa deve investir em servidores, armazenamento, software e outras tecnologias e possivelmente contratar uma equipe de TI ou terceirizados para comprar, gerenciar e atualizar todos os equipamentos e licenças. O data center deve ser construído para atender a demanda de pico, mesmo quando as cargas de trabalho diminuem e esses recursos ficam ociosos. Por outro lado, o departamento de TI pode ter dificuldades para acompanhar se o negócio se expandir. + +Sob um modelo padrão de computação em nuvem [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-service/), os usuários compram antecipadamente unidades de capacidade, o que significa que será pago a um provedor de nuvem pública por componentes de servidor sempre ativos para executar suas aplicações. É, portanto, responsabilidade do usuário aumentar a capacidade do servidor durante períodos de alta demanda e reduzir quando essa capacidade não for mais necessária. + +A infraestrutura de nuvem necessária para executar uma aplicação está ativa mesmo quando a aplicação não está sendo usado. + +## Como isso ajuda + +O FaaS oferece aos desenvolvedores uma [abstração](/pt-br/abstraction/) para executar aplicações Web em resposta a eventos sem gerenciar servidores. Por exemplo, carregar um arquivo pode acionar um código personalizado que transcreve o arquivo em vários formatos. + +A infraestrutura FaaS dimensionará automaticamente o código para uso pesado, e o desenvolvedor não precisa gastar tempo ou recursos criando o código para [escalabilidade](/pt-br/scalability/). + +O faturamento é baseado apenas no tempo de computação, o que significa que as empresas não precisam pagar quando as funções não estiverem em uso. From d81d382f0d6c239b44f55a7101983e28293d65d0 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Wed, 22 Feb 2023 18:06:44 +0100 Subject: [PATCH 030/295] Fix missing S Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 4 ++-- content/fr/cloud-native-tech.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index c0c3d3516d..157b97c4d7 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -1,5 +1,5 @@ --- -title: Applications Cloud Native +title: Applications Cloud Natives status: Completed category: concept tags: ["application", "", ""] @@ -7,7 +7,7 @@ tags: ["application", "", ""] ## Ce que c'est -Les applications Cloud Native sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). +Les applications Cloud Natives sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). Ces applications s'intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). Ce terme fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. Aujourd'hui, les applications Cloud Native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 234acaf04e..5df3904ca0 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -1,5 +1,5 @@ --- -title: Technologies Cloud Native +title: Technologies Cloud Natives status: Completed category: Concept tags: ["fundamentals", "", ""] From 4b308da057d0f24eef4fc9e38a0f674143779997 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Wed, 22 Feb 2023 18:11:02 +0100 Subject: [PATCH 031/295] Missing s again Signed-off-by: Ludovic Logiou --- content/fr/cloud-native-apps.md | 6 +++--- content/fr/cloud-native-tech.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index 157b97c4d7..76c52167b9 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -10,7 +10,7 @@ tags: ["application", "", ""] Les applications Cloud Natives sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). Ces applications s'intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). Ce terme fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. -Aujourd'hui, les applications Cloud Native incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. +Aujourd'hui, les applications Cloud Natives incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. ## Problème auquel il répond @@ -22,8 +22,8 @@ Par exemple, les applications nécessitant une intervention manuelle pour démar ## Quel en est l'utilité Bien qu'il n'y ait pas de solution miracle pour qu'une application soit définie comme cloud native, les applications -Cloud Native présentent des points en commun. -Les applications Cloud Native sont résilientes, elles sont gérables et tirent profit de l'ensemble des services Cloud où elles +Cloud Natives présentent des points en commun. +Les applications Cloud Natives sont résilientes, elles sont gérables et tirent profit de l'ensemble des services Cloud où elles sont déployées. De nombreux services Cloud mettent à disposition un important niveau d'[observabilité](/observability/), permettant aux utilisateurs de détecter et de régler les problèmes avant qu'ils ne deviennent plus importants. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 5df3904ca0..560612b583 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -8,7 +8,7 @@ tags: ["fundamentals", "", ""] ## Ce que c'est Les technologies Cloud Natives, aussi référencées comme la pile des technologies cloud natives, sont les technologies -utilisées pour construire des [applications cloud native](/cloud-native-apps/). +utilisées pour construire des [applications cloud natives](/cloud-native-apps/). Ces technologies permettent aux organisations de développer des applications capables de se mettre à l'échelle dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides. Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). From 82e9fa0bafe9fd15413da4dea153f3086de86366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sat, 25 Feb 2023 14:57:09 +0100 Subject: [PATCH 032/295] [fr] Localize Agile Software Development MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/agile-software-development.md | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/fr/agile-software-development.md diff --git a/content/fr/agile-software-development.md b/content/fr/agile-software-development.md new file mode 100644 index 0000000000..49d5f1b162 --- /dev/null +++ b/content/fr/agile-software-development.md @@ -0,0 +1,25 @@ +--- +title: Développement Agile de logiciels +status: Feedback Appreciated +category: concept +tags: ["methodology", "", ""] +--- + +## Ce que c'est + +Un ensemble de pratiques qui mettent l'accent sur les cycles de développement itératifs et les équipes auto-organisées. +Contrairement aux projets dits en cascade où la valeur n'est générée qu'à la toute fin d'un projet, +le développement Agile de logiciels se concentre sur une livraison de valeur continue et incrémentale, ainsi que sur l'amélioration évolutive du processus lui-même. + +## Problème auquel il répond + +Définir, communiquer et comprendre les exigences pour toutes les parties prenantes d'un projet logiciel est très difficile, voire impossible. +Pourtant, les clients veulent que leurs projets logiciels soient livrés à temps, respectant la qualité, l'étendue des travaux et le budget attendus. +De par sa nature cyclique, le développement Agile de logiciels permet une adaptation continue des exigences et une adaptation plus rapide au-delà de tous les autres facteurs par opposition aux stratégies en cascade. + +## Quel en est l'utilité + +Le développement Agile de logiciels contient toutes les phases des stratégies traditionnelles (en cascade), comme l'ingénierie des exigences, la planification, la mise en œuvre, la revue, les tests et la livraison. +La plus grande différence est que toute la durée d'un projet logiciel est découpée en itérations, qui contiennent chacune de ces phases. +Après chaque itération, la valeur créée peut être revue avec le client et les exigences peuvent être ajustées vis-à-vis de l'objectif final. +De plus, l'équipe de développement réfléchit aux actions à prendre afin d'améliorer le processus lui-même. From 4f55aa7bfddd92bc4756b7a40e8d4440669e7147 Mon Sep 17 00:00:00 2001 From: Erlison Santos <98214640+MrErlison@users.noreply.github.com> Date: Wed, 15 Mar 2023 19:34:11 -0300 Subject: [PATCH 033/295] Add /pt-br/infrastructure-as-a-service.md (#1474) * Add /pt-br/infrastructure-as-a-service.md Signed-off-by: Mr. Erlison * Fixed typo Signed-off-by: Mr. Erlison --------- Signed-off-by: Mr. Erlison --- content/pt-br/infrastructure-as-a-service.md | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 content/pt-br/infrastructure-as-a-service.md diff --git a/content/pt-br/infrastructure-as-a-service.md b/content/pt-br/infrastructure-as-a-service.md new file mode 100644 index 0000000000..46b1739756 --- /dev/null +++ b/content/pt-br/infrastructure-as-a-service.md @@ -0,0 +1,27 @@ +--- +title: Infraestrutura como Serviço (IaaS) +status: Completed +category: tecnologia +tags: ["infraestrutura", "", ""] +--- + +## Como é + +Infraestrutura como serviço, ou IaaS, é um modelo de serviço de [computação em nuvem](/pt-br/cloud-computing/) que oferece máquinas [físicas](/pt-br/bare-metal-machine/) ou [virtualizadas](/pt-br/virtualization/), armazenamento e recursos de rede sob demanda em um modelo pague conforme o uso. +Os provedores de nuvem possuem e operam o hardware e o software, disponíveis para os consumidores em implantações de nuvem pública, privada ou híbrida. + +## Problema relacionado + +Em configurações tradicionais (_on-premise_), as organizações geralmente concentram seus esforços no uso efetivo de recursos de computação. +Os _data centers_ precisam ser construídos para potencializar o pico da demanda, mesmo que seja necessário em apenas 1% do tempo. +Durante a menor demanda, esses recursos de computação ficam ociosos. +E, se a carga de trabalho aumentar acima da demanda esperada, existirá uma carência de recursos de computação para processar a carga de trabalho. +Essa falta de escalabilidade leva ao aumento dos custos e ao uso ineficaz de recursos. + +## Como isso ajuda + +Com o IaaS, as organizações podem evitar a compra e manutenção em ativos computacionais e _data center_ para suas aplicações. +Uma infraestrutura sob demanda permite que as organizações aluguem recursos de computação conforme necessário e adiem grandes gastos de capital, ou [CAPEX](https://pt.wikipedia.org/wiki/CAPEX), ao mesmo tempo em permite a flexibilidade de aumentar ou diminuir a escala. + +O IaaS reduz os custos iniciais para testar uma nova aplicação e para fornecer as instalações para implantar rapidamente uma infraestrutura. +Um provedor de nuvem é uma excelente opção para ambientes de desenvolvimento ou teste, o que ajuda os desenvolvedores a experimentar e inovar. From 887b6ead998eccb26922bb853a1a56f86c5de893 Mon Sep 17 00:00:00 2001 From: Erlison Santos <98214640+MrErlison@users.noreply.github.com> Date: Wed, 15 Mar 2023 19:35:27 -0300 Subject: [PATCH 034/295] Add /pt-br/monolithic-apps (#1517) Signed-off-by: Mr. Erlison --- content/pt-br/monolithic-apps.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/pt-br/monolithic-apps.md diff --git a/content/pt-br/monolithic-apps.md b/content/pt-br/monolithic-apps.md new file mode 100644 index 0000000000..83d73a9aba --- /dev/null +++ b/content/pt-br/monolithic-apps.md @@ -0,0 +1,25 @@ +--- +title: Aplicações Monolíticas +status: Completed +category: conceito +tags: ["arquitetura", "", ""] +--- + +## O que é + +Uma aplicação monolítica contém todas as funcionalidades em um único programa. +Este é muitas vezes o lugar mais simples e fácil para começar ao fazer uma aplicação. +No entanto, uma vez que a aplicação cresce em complexidade, os monólitos podem se tornar difíceis de manter. +Com mais desenvolvedores trabalhando na mesma base de código, a probabilidade de mudanças conflitantes e a necessidade de comunicação interpessoal entre desenvolvedores aumenta. + +## Problema relacionado + +A conversão de uma aplicação em [microsserviços](/microservices/) aumenta sua sobrecarga operacional — existe mais coisas para testar, implantar e executar. +No início do ciclo de vida de um produto, pode ser vantajoso adiar essa complexidade e construir uma aplicação monolítica até que o produto seja determinado como bem-sucedido. + +## Como isso ajuda + +Um monólito bem projetado pode manter os princípios *lean*, sendo a maneira mais simples de colocar uma aplicação em funcionamento. +Quando o valor comercial da aplicação monolítica prova ser bem-sucedido, ela pode ser decomposta em microsserviços. +Desenvolver uma aplicação com base em microsserviços antes que ela tenha se mostrado valiosa pode ser um gasto prematuro de esforço de engenharia. +Se a aplicação não produzir valor, esse esforço se torna desperdiçado. From b165131322ce7684e188a5a3d089df3db80840d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 17 Mar 2023 12:12:57 +0100 Subject: [PATCH 035/295] Fix after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/agile-software-development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/agile-software-development.md b/content/fr/agile-software-development.md index 49d5f1b162..7aa88ea36f 100644 --- a/content/fr/agile-software-development.md +++ b/content/fr/agile-software-development.md @@ -8,7 +8,7 @@ tags: ["methodology", "", ""] ## Ce que c'est Un ensemble de pratiques qui mettent l'accent sur les cycles de développement itératifs et les équipes auto-organisées. -Contrairement aux projets dits en cascade où la valeur n'est générée qu'à la toute fin d'un projet, +Contrairement aux projets dits en cascade où la valeur n'est générée qu'à la toute fin du projet, le développement Agile de logiciels se concentre sur une livraison de valeur continue et incrémentale, ainsi que sur l'amélioration évolutive du processus lui-même. ## Problème auquel il répond From 97fd892e06d7d4c989009e3a9000d93e02108a65 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Thu, 30 Mar 2023 16:21:53 +0200 Subject: [PATCH 036/295] [it] Localizzazione termine Service Proxy (#1746) * Added Service Proxy Italian Localization Signed-off-by: Paolo * Update content/it/service-proxy.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/service-proxy.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/service-proxy.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/service-proxy.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/service-proxy.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/it/service-proxy.md diff --git a/content/it/service-proxy.md b/content/it/service-proxy.md new file mode 100644 index 0000000000..be60a56d94 --- /dev/null +++ b/content/it/service-proxy.md @@ -0,0 +1,29 @@ +--- +title: Service Proxy +status: Completed +category: tecnologia +tags: ["networking", "", ""] +--- + +## Cos'è + +Un service proxy intercetta il traffico verso o proveniente da un determinato [servizio](/it/service/), +vi applica delle logiche, e in seguito inoltra quel traffico a un altro servizio. +Essenzialmente si comporta come un intermediario che raccoglie informazioni riguardo il traffico di rete e/o applica delle regole su di esso. + +## Quali problematiche affronta + +Per tenere traccia delle comunicazioni tra servizi, ovvero di ciò che viene definito traffico di rete, e potenzialmente trasformarlo o reindirizzarlo, è evidentemente necessario raccogliere dati. +Tradizionalmente, il codice che abilitava la raccolta di dati e la gestione del traffico di rete era incorporato all'interno di ogni applicazione. + +## In che modo aiuta + +Un service proxy permette di "esternalizzare" questa funzionalità. +Quel codice non deve più necessariamente essere all'interno delle applicazioni, +ma diviene parte integrante della piattaforma, cioè dove l'applicazione è in esecuzione. + +Fungendo da porta d'accesso ai servizi, i proxy forniscono informazioni riguardo a che tipo di comunicazione sta avvenendo. +Basandosi su queste informazioni, determinano dove inviare una particolare richiesta, o anche rigettarla del tutto. + +I proxy raccolgono dati fondamentali, gestiscono il routing (distribuendo uniformemente il traffico tra i servizi o reindirizzandolo se qualche servizio si interrompe), +criptano le connessioni e salvano su cache il contenuto (riducendo il consumo di risorse). From e84fdc04dea3bff1e9959fd4d3742651b3f4d304 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Fri, 31 Mar 2023 14:19:16 -0400 Subject: [PATCH 037/295] Traduction de scalability.md Signed-off-by: Christophe Sauthier --- content/fr/scalability.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 content/fr/scalability.md diff --git a/content/fr/scalability.md b/content/fr/scalability.md new file mode 100644 index 0000000000..de4f68fa01 --- /dev/null +++ b/content/fr/scalability.md @@ -0,0 +1,21 @@ +--- +title: Extensibilité (Scalabilité) +status: Completed +category: property +tags: ["fundamentals", "", ""] +--- + +L'extensibilité (ou scalabilité) correspond à la capacité d'un système à s'agrandir. +C'est à dire augmenter la capacité d'un système à faire ce qu'il supposé faire. +Par exemple, un [cluster](/cluster/) [Kubernetes](/kubernetes/) change d'echelle en augmentant +ou en réduisant le nombre d'applications [contenerisées](/containerization/), +mais cette scalabilité dépend de plusieurs facteurs. +Combien de [nodes](/nodes/) possède-t-il, combien de [conteneurs](/container/) peut gérer chaque noeud, +et combien d'enregistrements et d'opérations le plan de contrôle (control plane) peut-il supporter ? + +Un système extensible permet de rajouter simplement plus de capacité. +On différencie deux types d'extension. +D'un coté, il y a l'[extensibilité horizontale](/horizontal-scaling/) aui ajoute des noeuds pour supporter l'augmentation de charge. +A l'opposé, il y a l'[extensibilité verticale](/vertical-scaling/) où les nodes individuelles sont rendues plus performantes pour permettre plus de transactions +(i.e. en ajoutant plus de mémoire ou de CPU à une machine individuelle). +Un système extensible est capable de changer facilement pour satisfaire les besoins des utilisateurs. From 20a68eaa24b5e68f3f04518d73e0ae72be65d91e Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Mon, 3 Apr 2023 08:58:20 -0400 Subject: [PATCH 038/295] scalability-fr: fix typos following Ludovic's feedback Signed-off-by: Christophe Sauthier --- content/fr/scalability.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/scalability.md b/content/fr/scalability.md index de4f68fa01..6f50169c20 100644 --- a/content/fr/scalability.md +++ b/content/fr/scalability.md @@ -6,7 +6,7 @@ tags: ["fundamentals", "", ""] --- L'extensibilité (ou scalabilité) correspond à la capacité d'un système à s'agrandir. -C'est à dire augmenter la capacité d'un système à faire ce qu'il supposé faire. +C'est à dire augmenter la capacité d'un système à faire ce qu'il est supposé faire. Par exemple, un [cluster](/cluster/) [Kubernetes](/kubernetes/) change d'echelle en augmentant ou en réduisant le nombre d'applications [contenerisées](/containerization/), mais cette scalabilité dépend de plusieurs facteurs. @@ -15,7 +15,7 @@ et combien d'enregistrements et d'opérations le plan de contrôle (control plan Un système extensible permet de rajouter simplement plus de capacité. On différencie deux types d'extension. -D'un coté, il y a l'[extensibilité horizontale](/horizontal-scaling/) aui ajoute des noeuds pour supporter l'augmentation de charge. +D'un coté, il y a l'[extensibilité horizontale](/horizontal-scaling/) qui ajoute des noeuds pour supporter l'augmentation de charge. A l'opposé, il y a l'[extensibilité verticale](/vertical-scaling/) où les nodes individuelles sont rendues plus performantes pour permettre plus de transactions (i.e. en ajoutant plus de mémoire ou de CPU à une machine individuelle). Un système extensible est capable de changer facilement pour satisfaire les besoins des utilisateurs. From 1fade666f8c8e45804cd36e8a1b72a1460e1a284 Mon Sep 17 00:00:00 2001 From: Erlison Santos <98214640+MrErlison@users.noreply.github.com> Date: Sun, 9 Apr 2023 17:46:29 -0300 Subject: [PATCH 039/295] Add /pt-br/microservices.md (#1445) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add /pt-br/microservices.md Signed-off-by: Mr. Erlison * Update content/pt-br/microservices.md Co-authored-by: Jéssica Lins Signed-off-by: Erlison Santos <98214640+MrErlison@users.noreply.github.com> --------- Signed-off-by: Mr. Erlison Signed-off-by: Erlison Santos <98214640+MrErlison@users.noreply.github.com> Co-authored-by: Jéssica Lins --- content/pt-br/microservices.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/pt-br/microservices.md diff --git a/content/pt-br/microservices.md b/content/pt-br/microservices.md new file mode 100644 index 0000000000..4aefb95ad1 --- /dev/null +++ b/content/pt-br/microservices.md @@ -0,0 +1,32 @@ +--- +title: Microsserviços +status: Completed +category: conceito +tags: ["arquitetura", "", ""] +--- + +## O que é + +Os microsserviços têm uma abordagem moderna para o desenvolvimento de aplicações que aproveita as tecnologias nativas da nuvem. +Embora as aplicações modernas, como a Netflix, pareçam ser uma única aplicação, elas são na verdade uma coleção de serviços menores - todos trabalhando em colaboração. +Por exemplo, uma única página que permite acessar, pesquisar e visualizar vídeos provavelmente é alimentada por serviços menores que lidam com um aspecto (por exemplo, pesquisa, autenticação e execução de visualizações no seu navegador). +Em resumo, os microsserviços referem-se a um padrão de arquitetura de aplicações geralmente contrária as [aplicações monolíticas](/monolithic-apps/). + +## Problema relacionado + +Os microsserviços são uma resposta aos desafios colocados por aplicações monolíticas. +Geralmente, diferentes partes de uma aplicação precisarão ser dimensionadas separadamente. +Por exemplo, uma loja online terá mais visualizações de produtos do que a finalização da compra. +Isso significa que você precisará de mais cópias da funcionalidade de visualização do produto em execução do que a conclusão da compra. +Em uma aplicação monolítica, essa lógica não pode ser implantada individualmente. +Se você não conseguir dimensionar a funcionalidade do produto individualmente, terá que duplicar toda a aplicação com todos os outros componentes que não precisa - um uso ineficiente de recursos. +As aplicações monolíticas também tornam mais fácil para os desenvolvedores sucumbirem às armadilhas do projeto. +Como todo o código está em um só lugar, é mais fácil tornar esse [código bem acoplado](/pt-br/tightly-coupled-architectures/) e mais difícil de impor o princípio da separação de responsabilidades. +Os monólitos geralmente exigem que os desenvolvedores entendam toda a base de código antes que possam ser produtivos. + +## Como isso ajuda + +Separar a funcionalidade em diferentes microsserviços facilita a implantação, atualização e escala de forma independente. +Ao permitir que diferentes equipes se concentrem em sua própria e pequena parte de uma aplicação maior, você também torna mais fácil para elas trabalharem em suas aplicações sem afetar negativamente o resto da organização. +Embora os microsserviços resolvam muitos problemas, eles também criam sobrecarga operacional — as coisas que você precisa para implantar e acompanhar têm um aumento na ordem de grandeza ou mais. +Muitas [tecnologias nativas da nuvem](/pt-br/cloud-native-tech/) visam tornar os microsserviços mais fáceis de implantar e gerenciar. From 7e3d43d3e067b4d907c17c249a0614fb48c18ead Mon Sep 17 00:00:00 2001 From: Erlison Santos <98214640+MrErlison@users.noreply.github.com> Date: Sun, 9 Apr 2023 17:46:53 -0300 Subject: [PATCH 040/295] Add /pt-br/observability (#1444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add /pt-br/observability.md Signed-off-by: Mr. Erlison * Update content/pt-br/observability.md Co-authored-by: Jéssica Lins Signed-off-by: Erlison Santos <98214640+MrErlison@users.noreply.github.com> * Update content/pt-br/observability.md Co-authored-by: Jéssica Lins Signed-off-by: Erlison Santos <98214640+MrErlison@users.noreply.github.com> * Update content/pt-br/observability.md Co-authored-by: Jéssica Lins Signed-off-by: Erlison Santos <98214640+MrErlison@users.noreply.github.com> * Rewrite insights Signed-off-by: Mr. Erlison --------- Signed-off-by: Mr. Erlison Signed-off-by: Erlison Santos <98214640+MrErlison@users.noreply.github.com> Co-authored-by: Jéssica Lins --- content/pt-br/observability.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 content/pt-br/observability.md diff --git a/content/pt-br/observability.md b/content/pt-br/observability.md new file mode 100644 index 0000000000..5a33f18482 --- /dev/null +++ b/content/pt-br/observability.md @@ -0,0 +1,24 @@ +--- +title: Observabilidade +status: Completed +category: conceito +tags: ["metodologia", "aplicação", "infraestrutura"] +--- + +## O que é + +Observabilidade é a capacidade de gerar e descobrir continuamente insights acionáveis com base em sinais do sistema sob observação. +Em outras palavras, a observabilidade permite que os usuários entendam o estado de um sistema a partir de sua saída externa e tome ação (corretiva). + +## Problema relacionado + +Os sistemas de computador são medidos observando os sinais de baixo nível, tais como o tempo de CPU, a memória, o espaço em disco e os sinais de alto nível e de lógica de negócios, incluindo tempos de resposta de uma API, erros, transações por segundo, etc. + +A observabilidade de um sistema tem um impacto significativo em seus custos operacionais e de desenvolvimento. +Sistemas observáveis produzem dados significativos e acionáveis para seus operadores, permitindo que eles obtenham resultados favoráveis (resposta mais rápida a incidentes, aumento da produtividade do desenvolvedor) e menos trabalho e tempo de inatividade. + +## Como isso ajuda + +Entender que mais informações não se traduzem necessariamente em um sistema mais observável é fundamental. +Na verdade, às vezes, a quantidade de informações geradas por um sistema pode dificultar a identificação de sinais valiosos a partir de ruído gerado pela aplicação. +A observabilidade requer os dados certos no momento certo para que o consumidor certo (humano ou software) tome as decisões certas. From ac75dd69f1bea5a73ebb360e13ff2a827751847f Mon Sep 17 00:00:00 2001 From: Azanul Haque <42029519+Azanul@users.noreply.github.com> Date: Tue, 11 Apr 2023 03:07:21 +0530 Subject: [PATCH 041/295] [Spanish] localize 'Site Reliability Engineering' (#1858) * [LOCALIZE] SRE in spanish Signed-off-by: Azanul --- content/es/.wordlist.txt | 4 +++ content/es/site-reliability-engineering.md | 29 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 content/es/site-reliability-engineering.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 378a6a610b..5080482a33 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -61,6 +61,7 @@ community Completed concept confiabilidad +confiablemente Container containers contenedores @@ -182,6 +183,7 @@ microservicios Microsoft Mike mitigarse +monitorea monitorean monitorear monitoreará @@ -229,6 +231,7 @@ Rael Ramer RDS relevantes +Reliability reprogramados request requests @@ -244,6 +247,7 @@ Seokho Server service sign +Site Slack sobreescriba Sockets diff --git a/content/es/site-reliability-engineering.md b/content/es/site-reliability-engineering.md new file mode 100644 index 0000000000..c5e402cdec --- /dev/null +++ b/content/es/site-reliability-engineering.md @@ -0,0 +1,29 @@ +--- +title: Site Reliability Engineering +status: Completed +category: Concepto +tags: ["methodology", "", ""] +--- + +## ¿Qué es? + +Site Reliability Engineering o SRE es una disciplina que combina operaciones e ingeniería de software. +Este último se aplica a problemas de infraestructura y operaciones, específicamente. +Es decir, en lugar de crear características del producto, los ingenieros de confiabilidad del sitio crean sistemas para ejecutar aplicaciones. +Hay similitudes con [DevOps](/es/devops/), pero mientras DevOps se enfoca en llevar el código a producción, +SRE garantiza que el código que se ejecuta en producción funcione correctamente. + +## Problema que aborda + +Asegurar que las aplicaciones se ejecuten [confiablemente](/es/reliability/) requiere múltiples capacidades, +desde la supervisión del rendimiento, las alertas, la [depuración](/es/debugging/) hasta la resolución de problemas. +Sin estos, los operadores del sistema solo pueden reaccionar a los problemas en lugar de trabajar de manera proactiva para evitarlos +— el tiempo de inactividad solo se convierte en una cuestión de tiempo. + +## ¿Cómo ayuda? + +Un enfoque SRE minimiza el costo, el tiempo y el esfuerzo del proceso de desarrollo de software +mejorando continuamente el sistema subyacente. +El sistema mide y monitorea continuamente la infraestructura y los componentes de la aplicación. +Cuando algo sale mal, el sistema indica a los ingenieros de confiabilidad del sitio cuándo, dónde y cómo solucionarlo. +Este enfoque ayuda a crear sistemas de software altamente [escalables](/es/scalability/) y confiables mediante la automatización de tareas operativas. From 24a8537439f2e6c763a51c0b2d58820dd78c77b2 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Wed, 12 Apr 2023 19:45:35 +0200 Subject: [PATCH 042/295] [ES] added content/es/hypervisor.md (#1883) * added content/es/hypervisor.md * fixed content references Signed-off-by: marianogg9 --- content/es/hypervisor.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/es/hypervisor.md diff --git a/content/es/hypervisor.md b/content/es/hypervisor.md new file mode 100644 index 0000000000..3d1d9d195b --- /dev/null +++ b/content/es/hypervisor.md @@ -0,0 +1,34 @@ +--- +title: Hipervisor +status: Feedback Appreciated +category: Tecnología +tags: ["application", "", ""] +--- + +## ¿Qué es? + +Un hipervisor utiliza el concepto de [virtualización](/virtualization/) +aprovechando los recursos de la llamada [máquina bare metal](/es/bare-metal-machine/) +(CPU, memoria, recursos de red, y almacenamiento), dividiéndolos en partes más pequeñas, +y ubicando recursos suficientes para crear [máquinas virtuales](/virtual-machine/) +hasta que el servidor base alcanza su límite de funcionamiento. + +## Problema que aborda + +Tradicionalmente un servidor podía ejecutar aplicaciones de un sólo sistema operativo. +El proceso de adquisición de software requiere tiempo, como así también infraestructura con un ambiente específico +y un equipo de Ingenieros para el mantenimiento y monitoreo del mismo. +Por lo tanto, los servidores se veían utilizados por debajo de su capacidad - considerando su poder computacional, un servidor puede ejecutar sistemas operativos múltiples y más aplicaciones. +Por ello, ejecutar aplicaciones directamente en una [máquina bare metal](/es/bare-metal-machine/) no era suficiente para satisfacer las necesidades de tráfico fluctuante. + +## ¿Cómo ayuda? + +En el mundo de la [computación en la nube](/es/cloud-computing/), un hipervisor se convierte en una herramienta efectiva. +En contraste con los métodos tradicionales de crear máquinas virtuales, un hipervisor hace al proceso mucho más simple y rápido. +Los recursos de hardware son distribuidos de manera lógica y asignados a cada máquina virtual, manteniéndolos aislados unos de otros en unidades separadas, +asegurando que funcionen de manera independiente, y así un eventual problema en uno no afecta a los demás. +De esta manera cada máquina virtual puede instalar su sistema operativo propio. +Un hipervisor es una abstracción lógica del hardware físico, haciéndose cargo del manejo y mantenimiento de las máquinas virtuales, +quitándoles dependencia del hardware base, y ayudando a una organización a migrar sus aplicaciones a los servidores de la nube +y auto escalar sus servicios. +Mediante el uso de este software de [Tenencia Múltiple (multitenancy)](/es/multitenancy/) se ha logrado reducir los costos computacionales. \ No newline at end of file From 0cb00a0bf364868b016da2a1beb95b5f1bd2ebd1 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Wed, 12 Apr 2023 23:02:51 +0200 Subject: [PATCH 043/295] [ES] added missing sections + semantic line breaks in content/es/style-guide & content/es/contribute (#1867) * added missing sections + semantic line breaks in content/es/style-guide/_index.md. * added a missing section in content/es/contribute/_index.md. Signed-off-by: marianogg9 Signed-off-by: Victor Morales Co-authored-by: Victor Morales --- content/es/contribute/_index.md | 13 +++++ content/es/style-guide/_index.md | 98 +++++++++++++++++++++++++------- 2 files changed, 92 insertions(+), 19 deletions(-) diff --git a/content/es/contribute/_index.md b/content/es/contribute/_index.md index 24ca78c559..cc9ad66180 100644 --- a/content/es/contribute/_index.md +++ b/content/es/contribute/_index.md @@ -18,6 +18,19 @@ Existen cuatro formas en las que se puede contribuir: 3) [Actualizar un término existente](#update-an-existing-term) 4) [Ayudar a traducir el glosario](#help-translate-the-glossary) +## ¿Quién puede contribuir? + +El objetivo de este Glosario es simplificar el espacio Cloud Native - notorio por su complejidad - haciéndolo más fácil de entender. +Para ello, debemos focalizarnos en la simplicidad. + +Explicar conceptos complejos en palabras simples es muy difícil. +Y mientras pueda parecer fácil crear un contenido entendible y amigable, llegar a esa simplicidad es fruto del trabajo arduo y colaborativo entre expertos de Cloud Native. +En concreto, para agregar un nuevo término, usted debería tener un conocimiento profundo al respecto. + +El esfuerzo de traducción es algo diferente. +Dado que existen definiciones sólidas en Inglés, contribuidores menos experimentados técnicamente pueden también proveer términos traducidos. +Esta parte del proyecto es más amigable para principiantes. + ## Unirse a la comunidad del glosario {#join-the-glossary-community} Si desea contribuir con regularidad, considere unirse a nuestras reuniones mensuales del Grupo de trabajo del glosario. diff --git a/content/es/style-guide/_index.md b/content/es/style-guide/_index.md index 95980f2444..e7ea12065d 100644 --- a/content/es/style-guide/_index.md +++ b/content/es/style-guide/_index.md @@ -3,13 +3,14 @@ title: Guía de estilos toc_hide: true status: Completed menu: - main: - weight: 10 + main: + weight: 10 --- Esta guía de estilos te ayudará a entender la audiencia del Glosario, la estructura de las definiciones, el nivel de detalle requerido, y como mantener un estilo consistente. -El Glosario Cloud Native sigue las [guías de estilo por defecto](https://github.com/cncf/foundation/blob/master/style-guide.md) del repositorio de CNCF. Adicionalmente, sigue las siguientes reglas: +El Glosario Cloud Native sigue las [guías de estilo por defecto](https://github.com/cncf/foundation/blob/master/style-guide.md) del repositorio de CNCF. +Adicionalmente, sigue las siguientes reglas: 1. Utilice un lenguaje sencillo y accesible, evitando la jerga técnica y palabras de moda. 2. [Evite el lenguaje coloquial](https://en.wikipedia.org/wiki/Colloquialism) @@ -24,7 +25,17 @@ El Glosario Cloud Native sigue las [guías de estilo por defecto](https://github ## Audiencia -El Glosario está escrito para una audiencia técnica Y no técnica. Asegúrese de que las definiciones sean explicadas en términos simples y no asuma conocimientos técnicos. Más acerca de eso a continuación en Definición. +El Glosario está escrito para una audiencia técnica y no técnica. +Asegúrese de que las definiciones sean explicadas en términos simples y no asuma conocimientos técnicos. Más acerca de eso a continuación en Definición. + +## Contenido mínimo viable + +Nuestro objetivo es facilitar la comprensión de términos nativos de nube a cualquiera. +Por lo tanto, nos focalizamos en la simplicidad. +Lo que significa utilizar lenguaje simple y conciso con ejemplos que cualquiera que usa tecnología pueda identificarse, pero también proveyendo un *contenido mínimo viable*, al menos desde un punto de vista técnico. +No queremos ahorrar en contexto o ejemplos - que ayudan al lector a entender el concepto - pero si el detalle técnico no es necesario para entender lo explicado, no serán incluidos. +El objetivo es no complicar las cosas. Una vez que el lector entienda el concepto básico, otros recursos ayudarán a ahondar. +Esa parte está fuera del control de este Glosario. ## Plantilla de definición @@ -77,19 +88,31 @@ title: Plantilla de Definición status: Feedback Appreciated ``` -### Category +### Etiquetas + +La **etiqueta** vendrá a continuación de la sección status. +Para que las etiquetas sean de ayuda para el usuario, deberemos usarlas de manera estricta. +Agregar demasiadas etiquetas terminará por diluir su significado. +Exceptuando "fundamental", que simplemente indica que el término referido es vital para entender otros conceptos de Cloud Native, la mayoría de los términos utilizara solo una etiqueta. -La etiqueta de **category** vendrá después de la etiqueta de estado. Su valor debe ser uno de los siguientes valores: +**Nota**: Por favor no cree nuevas etiquetas a menos que sean aprobadas por los mantenedores. Cuando agregue etiquetas, asegúrese de que estén correctamente deletreadas como se lista a continuación (en singular, sin errores). -- Tecnología -- Propiedad -- Concepto +Las etiquetas existentes son: + +- application +- architecture +- fundamental +- infrastructure +- methodology +- networking +- property +- security ```md --- title: Plantilla de Definición status: Feedback Appreciated -category: Concepto +tags: ["etiqueta 1"], ["etiqueta 2"] --- ``` @@ -100,31 +123,68 @@ category: Concepto Las definiciones de las categorías **technology** y **concept** contienen tres subrúbricas: - **Qué es**: proporciona una descripción breve y clara de lo que estamos hablando. -- **Problema que aborda**: enfócate en el problema, no en la solución (que viene en la siguiente sección). De hecho, evite mencionar el término que se esta definiendo. El problema se centra en *qué* nos llevó a necesitar esto. +- **Problema que aborda**: enfócate en el problema, no en la solución (que viene en la siguiente sección). + De hecho, evite mencionar el término que se esta definiendo. El problema se centra en *qué* nos llevó a necesitar esto. - **Cómo ayuda**: ahora, vuelve al término. ¿Cómo aborda el problema descrito anteriormente? -Tenga en cuenta que la etiqueta **properties** no requiere secciones separadas. Una definición será suficiente. +Tenga en cuenta que la etiqueta **properties** no requiere secciones separadas.Una definición será suficiente. + +Para facilitar la revisión, por favor utilice **[semántica de saltos de línea](https://sembr.org/)** (una oración por línea). + +#### La calidad es esencial + +Si ha sido agregada, su contribución sera la definición oficial de la CNCF para ese término (hasta que alguien más la mejore). +Crear un término que cumpla con los altos estándares de la CNCF no puede ser un proceso apurado - la calidad toma su tiempo y esfuerzo. + +**Haga su investigación**: Incluso si usted se siente confiado de que conoce el término, verifique que realmente es como lo piensa. +Habitualmente utilizamos términos en una organización de una cierta manera que no refleja el panorama completo. +Cuando haga su investigación, especialmente cuando el término no sea del todo familiar, utilice múltiples fuentes. +Muchas definiciones son algo subjetivas, especialmente si provienen de un proveedor. +El Glosario debe contener definiciones aceptadas globalmente y sin perspectivas particulares. + +**No cometa plagio**. Como cualquier publicación seria, las mismas reglas aplican al Glosario +No copie y pegue definiciones de otras personas a menos que les de crédito y sea una referencia. +Si a usted le gusta una cierta sección de una definición, intente parafrasearla en sus propias palabras. + +**Agregue referencias a recursos de autor**. Cuando sea posible, agregue referencias a recursos de autor, como documentación oficial de un proyecto. +Nótese que no podemos agregar referencias a documentación de un proveedor externo. #### Manteniéndolo simple -El Glosario tiene como objetivo **explicar conceptos complejos en palabras sencillas**; esta es una tarea sorprendentemente difícil que probablemente requerirá múltiples revisiones. Siempre tenga en cuenta a la audiencia cuando redacte su definición. Evite usar términos de la industria y palabras de moda; probablemente se encontrará volviendo a ellos y es posible que deba corregirlos automáticamente. +El Glosario tiene como objetivo **explicar conceptos complejos en palabras sencillas**; esta es una tarea sorprendentemente difícil que probablemente requerirá múltiples revisiones. +Siempre tenga en cuenta a la audiencia cuando redacte su definición. +Evite usar términos de la industria y palabras de moda; probablemente se encontrará volviendo a ellos y es posible que deba corregirlos automáticamente. Cuando corresponda, use **ejemplos del mundo real** que ayuden a los lectores (especialmente a los no técnicos) a comprender mejor *cuándo* y *por qué* el concepto que está explicando es relevante. Cuando se use en su definición, siempre **enlace a los términos existentes del glosario** (solo la primera mención debe tener un hipervínculo). -**Ejemplo**: eche un vistazo a la sección "Qué es" de la [definición de service mesh](/service-mesh/). Se vincula con las definiciones de microservicios, servicio, fiabilidad y observabilidad. Además, utiliza un ejemplo del mundo real que compara los desafíos de la red en un entorno de microservicios (algo con lo que las personas no técnicas no pueden relacionarse) con los problemas de wifi (algo que cualquiera que use una computadora portátil puede entender). Siempre que sea posible, trate de hacer esa conexión. +**Ejemplo**: eche un vistazo a la sección "Qué es" de la [definición de service mesh](/service-mesh/). +Se vincula con las definiciones de microservicios, servicio, fiabilidad y observabilidad. +Además, utiliza un ejemplo del mundo real que compara los desafíos de la red en un entorno de microservicios +(algo con lo que las personas no técnicas no pueden relacionarse) con los problemas de wifi (algo que cualquiera que use una computadora portátil puede entender). +Siempre que sea posible, trate de hacer esa conexión. #### Comience con un documento de Google o Word -Recomendamos comenzar con un documento de Google o Word, déjalo pasar durante unos días y volver a visitarlo. Esto te permitirá captar frases o expresiones que podrían redactarse de una forma más sencilla y accesible. Además, asegúrese de ejecutar un corrector ortográfico antes de enviar un PR. +Recomendamos comenzar con un documento de Google o Word, déjalo pasar durante unos días y volver a visitarlo. +Esto te permitirá captar frases o expresiones que podrían redactarse de una forma más sencilla y accesible. +Además, asegúrese de ejecutar un corrector ortográfico antes de enviar un PR. -Para asegurarse de que nadie más envíe un PR mientras trabaja en un término, asegúrese de reclamar un issue (o crear uno) y que se le asigne. Más sobre eso en el documento [Cómo contribuir](/es/contribute/). +Para asegurarse de que nadie más envíe un PR mientras trabaja en un término, asegúrese de reclamar un issue (o crear uno) y que se le asigne. +Más sobre eso en el documento [Cómo contribuir](/es/contribute/). -Antes de comenzar, lea algunos de los términos publicados del Glosario para tener una idea del nivel de detalle y dificultad y cuándo los ejemplos son apropiados. +Antes de comenzar, lea algunos de los términos publicados del Glosario +para tener una idea del nivel de detalle y dificultad y cuándo los ejemplos son apropiados. ## El proceso de revisión: qué esperar -Tenga en cuenta que actualmente solo hay tres mantenedores haciendo esto en su tiempo libre. Ocasionalmente, podremos revisar los términos rápidamente; en otras ocasiones, puede llevar algo de tiempo. Agradecemos su paciencia. Si tiene alguna pregunta, comuníquese con nosotros en el canal #glossary de Slack (para saber dónde y cómo encontrarlo, consulte nuestro documento de [Cómo contribuir](/es/contribute/)). +Tenga en cuenta que actualmente solo hay tres mantenedores haciendo esto en su tiempo libre. +Ocasionalmente, podremos revisar los términos rápidamente; en otras ocasiones, puede llevar algo de tiempo - agradecemos su paciencia. +Si tiene alguna pregunta, comuníquese con nosotros en el canal #glossary de Slack +(para saber dónde y cómo encontrarlo, consulte nuestro documento de [Cómo contribuir](/es/contribute/)). -Nuestro objetivo es que el Glosario sea el mejor recurso posible. Una vez que envíe un PR, podemos solicitar una o más revisiones. No se sienta frustrado, ese es el caso de muchos relaciones públicas. Esas idas y venidas y nuestra colaboración asegurarán que su contribución se convierta en una definición verdaderamente útil leída y referida por lectores de todo el mundo. +Nuestro objetivo es que el Glosario sea el mejor recurso posible. +Una vez que envíe un PR, podemos solicitar una o más revisiones. +No se sienta frustrado, ese es el caso de muchos relaciones públicas. +Esas idas y venidas y nuestra colaboración asegurarán que su contribución se convierta en una definición verdaderamente útil leída y referida por lectores de todo el mundo. \ No newline at end of file From 85d2ed9efe399308cde22038842389e82dad21b5 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Thu, 13 Apr 2023 19:24:10 +0200 Subject: [PATCH 044/295] [ES] content/es/serverless.md (#1939) * added content/es/serverless.md Signed-off-by: marianogg9 --- content/es/.wordlist.txt | 1 + content/es/serverless.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 content/es/serverless.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 5080482a33..5efef8cd70 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -245,6 +245,7 @@ Secure security Seokho Server +Serverless service sign Site diff --git a/content/es/serverless.md b/content/es/serverless.md new file mode 100644 index 0000000000..2bd5aa79e8 --- /dev/null +++ b/content/es/serverless.md @@ -0,0 +1,34 @@ +--- +Title: Sin servidor (Serverless) +Status: Completed +Category: Tecnología +tags: ["architecture", "", ""] +--- + +## ¿Qué es? + +Sin servidor (Serverless) es un modelo de desarrollo nativo en la nube que ayuda a los desarrolladores a +crear y ejecutar aplicaciones sin tener que mantener servidores. +Hay servidores en el modelo sin servidor, pero han sido [abstraídos](/es/abstraction/) del proceso de desarrollo. +Un proveedor de nube se encarga del aprovisionamiento, mantenimiento y [escalamiento](/es/scalability/) de la infraestructura de servidores. +Luego los desarrolladores pueden empacar su código en [contenedores](/es/containers/) para el despliegue. +Una vez desplegado el código, las aplicaciones sin servidor satisfacen la demanda y escalan automáticamente según sea necesario. +La modalidad sin servidor en proveedores de nube públicas usualmente es una medida bajo demanda a través de un modelo de ejecución basado en eventos. +Como resultado, cuando una función sin servidor está inutilizada, no representa costo alguno. + +## Problema que aborda + +En un modelo de [Infraestructura como Servicio](/es/infrastructure-as-a-service/), +los usuarios compran unidades de cómputo o capacidad de forma anticipada, es decir, se paga a un proveedor de nube pública por componentes de servidores de ejecución continua para las aplicaciones. +Es responsabilidad del usuario luego aumentar la capacidad de cómputo durante periodos de alta demanda y +reducirla cuando ya no sea necesaria. +La infraestructura en la nube necesaria para ejecutar una aplicación está activa incluso cuando la aplicación no está en uso. + +## ¿Cómo ayuda? + +En contraste, con la arquitectura sin servidor las aplicaciones son ejecutadas solo cuando es necesario. +Cuando un evento llama a una aplicación a ejecutarse, el proveedor de nube pública garantiza dinámicamente una serie de recursos para que se ejecute dicho código. +Además del beneficio de costo y eficiencia, +el modelo sin servidor libera a los desarrolladores de las tareas rutinarias asociadas al escalado y aprovisionamiento de servidores. +Con el modelo sin servidor, las tareas rutinarias como mantenimiento de los sistemas operativos y sistemas de archivos, parches de seguridad, +balanceo de carga, manejo de capacidad, escalado, auditoría y monitoreo pasan a estar en manos del proveedor de servicios de nube. \ No newline at end of file From 28deb537b5cebfaac917a4587e7c3ef982fe1742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 14 Apr 2023 19:36:27 +0200 Subject: [PATCH 045/295] [fr] Localize API gateway MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/api-gateway.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 content/fr/api-gateway.md diff --git a/content/fr/api-gateway.md b/content/fr/api-gateway.md new file mode 100644 index 0000000000..fb4652a678 --- /dev/null +++ b/content/fr/api-gateway.md @@ -0,0 +1,24 @@ +--- +title: Passerelle d'API +status: Feedback Appreciated +category: technology +tags: ["networking", "", ""] +--- + +## Ce que c'est + +Une passerelle d'[API](/application-programming-interface/) est un outil qui regroupe des APIs d'applications individuelles, les rendant toutes disponibles en un seul endroit. +Elle permet aux organisations de déplacer des fonctions clés, telles que l'authentification et l'autorisation ou la limitation du nombre de requêtes entre applications, vers un emplacement géré de manière centralisée. +Une passerelle d'API fonctionne comme une interface commune pour les consommateurs d'API (souvent externes). + +## Problème auquel il répond + +Si vous mettez des APIs à la disposition de consommateurs externes, vous voudrez un point d'entrée unique pour gérer et contrôler tous les accès. +De plus, si vous devez appliquer une fonctionnalité sur ces interactions, une passerelle d'API vous permettra de l'appliquer uniformément à tout le trafic sans nécessiter de modifications du code de l'application. + +## Quel en est l'utilité + +En fournissant un seul point d'accès pour diverses APIs d'applications, les passerelles d'API facilitent, pour les organisations, la mise en place de logiques transversales métier ou de sécurité dans un emplacement centralisé. +Elles permettent également aux consommateurs d'applications de se rendre à une adresse unique pour tous leurs besoins. +Une passerelle d'API peut simplifier les préoccupations opérationnelles telles que la sécurité et l'[observabilité](/observability/) en fournissant un point d'accès unique pour les requêtes vers tous les services web d'un système. +Comme toutes les requêtes transitent par la passerelle d'API, celle-ci représente un endroit unique pour ajouter des fonctionnalités telles que la collecte de métriques, la limitation du débit et l'autorisation. From 8f475981b00dadbbf35cdf19b23e534a990fd7d2 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Fri, 14 Apr 2023 17:40:39 -0400 Subject: [PATCH 046/295] Traduction de tightly-coupled-architectures.md Signed-off-by: Christophe Sauthier --- content/fr/tightly-coupled-architectures.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 content/fr/tightly-coupled-architectures.md diff --git a/content/fr/tightly-coupled-architectures.md b/content/fr/tightly-coupled-architectures.md new file mode 100644 index 0000000000..d14a1b7a7a --- /dev/null +++ b/content/fr/tightly-coupled-architectures.md @@ -0,0 +1,20 @@ +--- +title: Architectures Fortement Couplées +status: Completed +category: Property +tags: ["fundamentals", "", ""] +--- + +L'architecture fortement couplée est un type d'architecture où un nombre de composants d'application sont interdépendants +(le paradigme opposé est les [architectures faiblement couplées](/loosely-coupled-architecture/)). +Celà signifie qu'un changement dans un composant aura sûrement un impact sur les autres composants. +Souvent plus simples à mettre en oeuvre que les architectures faiblement couplées, +elles peuvent mettre un système à risque par rapport aux erreurs en cascade. +Elles ont également tendance à nécessiter des déploiements synchronisés des composants +ce qui peut devenir un frein à la productivité des développeurs. + +Les architectures fortement couplées sont une manière assez traditionnelle de construction d'applications. +Bien qu'elles ne soient pas nécessairement conformes avec les meilleures pratiques de développement de [microservices](/microservices/) +elles peuvent être utiles dans des circonstances spécifiques. +Elles ont tendances à être plus rapides et plus simples à mettre en oeuvre et +à la manière des [applications monolithiques](/monolithic-apps/) elles peuvent accélérer le cycle de développement initial. From 357c9a749f55785d045c3858add41430fb7e7bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sat, 15 Apr 2023 12:16:00 +0200 Subject: [PATCH 047/295] Fix after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/api-gateway.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/api-gateway.md b/content/fr/api-gateway.md index fb4652a678..0152f301fd 100644 --- a/content/fr/api-gateway.md +++ b/content/fr/api-gateway.md @@ -1,5 +1,5 @@ --- -title: Passerelle d'API +title: Passerelle d'API (API Gateway) status: Feedback Appreciated category: technology tags: ["networking", "", ""] @@ -8,7 +8,7 @@ tags: ["networking", "", ""] ## Ce que c'est Une passerelle d'[API](/application-programming-interface/) est un outil qui regroupe des APIs d'applications individuelles, les rendant toutes disponibles en un seul endroit. -Elle permet aux organisations de déplacer des fonctions clés, telles que l'authentification et l'autorisation ou la limitation du nombre de requêtes entre applications, vers un emplacement géré de manière centralisée. +Celà permet aux organisations de déplacer des fonctions clés, telles que l'authentification et l'autorisation ou la limitation du nombre de requêtes entre applications, vers un emplacement géré de manière centralisée. Une passerelle d'API fonctionne comme une interface commune pour les consommateurs d'API (souvent externes). ## Problème auquel il répond @@ -18,7 +18,7 @@ De plus, si vous devez appliquer une fonctionnalité sur ces interactions, une p ## Quel en est l'utilité -En fournissant un seul point d'accès pour diverses APIs d'applications, les passerelles d'API facilitent, pour les organisations, la mise en place de logiques transversales métier ou de sécurité dans un emplacement centralisé. +En fournissant un seul point d'accès pour diverses APIs d'applications, les passerelles d'API facilitent, pour les organisations, la mise en place de logiques métiers ou de sécurité transversales dans un emplacement centralisé. Elles permettent également aux consommateurs d'applications de se rendre à une adresse unique pour tous leurs besoins. Une passerelle d'API peut simplifier les préoccupations opérationnelles telles que la sécurité et l'[observabilité](/observability/) en fournissant un point d'accès unique pour les requêtes vers tous les services web d'un système. Comme toutes les requêtes transitent par la passerelle d'API, celle-ci représente un endroit unique pour ajouter des fonctionnalités telles que la collecte de métriques, la limitation du débit et l'autorisation. From b075bf02360b2b575e08999889cfbbde7b694ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sat, 15 Apr 2023 14:23:10 +0200 Subject: [PATCH 048/295] [fr] Localize API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- .../fr/application-programming-interface.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 content/fr/application-programming-interface.md diff --git a/content/fr/application-programming-interface.md b/content/fr/application-programming-interface.md new file mode 100644 index 0000000000..6127468719 --- /dev/null +++ b/content/fr/application-programming-interface.md @@ -0,0 +1,26 @@ +--- +title: Interface de Programmation d'Application (API) +status: Feedback Appreciated +category: technology +tags: ["architecture", "fundamental", ""] +--- + +## Ce que c'est + +Une API est un moyen pour les programmes informatiques d'interagir entre eux. +Tout comme les humains interagissent avec un site web via une page web, une API permet aux programmes informatiques d'interagir les uns avec les autres. +Contrairement aux interactions humaines, les APIs ont des contraintes sur ce qui peut ou non leur être demandé. +Les contraintes sur leurs interactions permettent de créer une communication stable et fonctionnelle entre les programmes. + +## Problème auquel il répond + +Au fur et à mesure que les applications deviennent plus complexes, de petites modifications du code peuvent avoir des effets drastiques sur d'autres fonctionnalités. +Les applications doivent adopter une approche modulaire de leur fonctionnement si elles veulent simultanément croître et maintenir leur stabilité. +Sans API, il manque un cadre pour l'interaction entre les applications. +Sans un cadre partagé, il est difficile pour les applications de [passer à l'échelle](/scalability/) et de s'intégrer. + +## Quel en est l'utilité + +Les APIs permettent aux programmes informatiques ou aux applications d'interagir et de partager des informations de manière définie et compréhensible. +Elles sont les éléments constitutifs des applications modernes et elles offrent aux développeurs un moyen d'intégrer les applications entre elles. +Lorsque vous entendez parler de [microservices](/microservices/) travaillant ensemble, vous pouvez en déduire qu'ils interagissent via une API. From b72b781a9d83704f3a9a4f319b4301bcaa6e1f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sun, 16 Apr 2023 12:07:54 +0200 Subject: [PATCH 049/295] [fr] Localize Observability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/observability.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 content/fr/observability.md diff --git a/content/fr/observability.md b/content/fr/observability.md new file mode 100644 index 0000000000..a97d53315d --- /dev/null +++ b/content/fr/observability.md @@ -0,0 +1,16 @@ +--- +title: Observability +status: Feedback Appreciated +category: concept +tags: ["property", "", ""] +--- + +L'observabilité est une propriété des systèmes qui définit le degré auquel le système peut générer des informations exploitables. +Elle permet aux utilisateurs de comprendre l'état d'un système à partir de ses sorties externes et de prendre des mesures (correctives). + +Les systèmes informatiques sont mesurés en observant des signaux de bas niveau tels que le temps CPU, la mémoire, l'espace disque, et des signaux de niveau supérieur et métiers, notamment les temps de réponse de l'API, les erreurs, le nombre de transactions par seconde, etc. +Ces systèmes observables sont **observés** (ou surveillés) grâce à des outils spécialisés, appelés outils d'observabilité. Une liste de ces outils peut être consultée dans la [section observabilité du Cloud Native Landscape](https://landscape.cncf.io/card-mode?category=observability-and-analysis&grouping=category). + +Les systèmes observables fournissent des données significatives et exploitables à leurs opérateurs, leur permettant ainsi d'obtenir des résultats intéressants (intervention plus rapide en cas d'incident, augmentation de la productivité des développeurs) et de réduire le temps improductif. + +Par conséquent, le degré d'observabilité d'un système aura un impact significatif sur ses coûts d'exploitation et de développement. From bd88bb694dd7515f11044be2bbae630b658f5dfc Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Sun, 16 Apr 2023 09:39:51 -0700 Subject: [PATCH 050/295] [es] Update references (#1951) Signed-off-by: Victor Morales --- content/es/application-programming-interface.md | 4 ++-- content/es/auto-scaling.md | 2 +- content/es/bare-metal-machine.md | 4 ++-- content/es/chaos-engineering.md | 6 +++--- content/es/cloud-native-security.md | 2 +- content/es/cluster.md | 2 +- content/es/container-image.md | 4 ++-- content/es/containers-as-a-service.md | 2 +- content/es/continuous-integration.md | 2 +- content/es/devops.md | 2 +- content/es/distributed-apps.md | 4 ++-- content/es/distributed-systems.md | 4 ++-- content/es/immutable-infrastructure.md | 2 +- content/es/infrastructure-as-code.md | 2 +- content/es/kubernetes.md | 4 ++-- content/es/load-balancer.md | 2 +- content/es/monolithic-apps.md | 2 +- content/es/platform-as-a-service.md | 2 +- content/es/reliability.md | 2 +- content/es/scalability.md | 4 ++-- 20 files changed, 29 insertions(+), 29 deletions(-) diff --git a/content/es/application-programming-interface.md b/content/es/application-programming-interface.md index 8963036f47..870c665765 100644 --- a/content/es/application-programming-interface.md +++ b/content/es/application-programming-interface.md @@ -17,10 +17,10 @@ La limitación en la interacción ayuda a crear comunicaciones estables y funcio A medida que las aplicaciones se vuelven más complejas, cualquier tipo de cambio en el mismo puede afectar drásticamente otras funcionalidades. Las aplicaciones deben adoptar un enfoque modular para sus funcionalidades así pueden crecer y mantener la estabilidad simultáneamente. Sin las APIs, falta un marco para la interacción entre las aplicaciones. -Sin un marco compartido, la [escalabilidad](/scalability/) y la integración es un desafío para las aplicaciones. +Sin un marco compartido, la [escalabilidad](/es/scalability/) y la integración es un desafío para las aplicaciones. ## ¿Cómo ayuda? Las APIs permiten a los programas o aplicaciones interactuar y compartir información en una manera definida y entendible. Estas están construidas en bloques para aplicaciones modernas y proveen a los desarrolladores una manera de integrar aplicaciones. -Siempre que escuche acerca de [microservicios](/microservices/) trabajando en conjunto, se puede inferir que están interactuando a través de una API. +Siempre que escuche acerca de [microservicios](/es/microservices/) trabajando en conjunto, se puede inferir que están interactuando a través de una API. diff --git a/content/es/auto-scaling.md b/content/es/auto-scaling.md index 3c6440092f..35dc891624 100644 --- a/content/es/auto-scaling.md +++ b/content/es/auto-scaling.md @@ -24,5 +24,5 @@ incrementando el número de servidores que permitirán una mayor transmisión de ## Términos relacionados -* [Escalado Horizontal](/horizontal-scaling/) +* [Escalado Horizontal](/es/horizontal-scaling/) * [Escalado Vertical](/vertical-scaling/) diff --git a/content/es/bare-metal-machine.md b/content/es/bare-metal-machine.md index ccdd46048e..46ac906ed7 100644 --- a/content/es/bare-metal-machine.md +++ b/content/es/bare-metal-machine.md @@ -27,8 +27,8 @@ Si necesita ejecutar una carga de trabajo que debe tener un acceso extremadament bare metal puede ser la solución adecuada. En el contexto de las [aplicaciones nativas para la nube](/es/cloud-native-apps/), -generalmente pensamos en el rendimiento en términos de [escalabilidad](/scalability/) para una gran cantidad de eventos simultáneos, -que pueden mitigarse mediante el [escalado horizontal](/horizontal-scaling/) (agregando más máquinas a su grupo de recursos). +generalmente pensamos en el rendimiento en términos de [escalabilidad](/es/scalability/) para una gran cantidad de eventos simultáneos, +que pueden mitigarse mediante el [escalado horizontal](/es/horizontal-scaling/) (agregando más máquinas a su grupo de recursos). Sin embargo, algunas cargas de trabajo pueden requerir [escalado vertical](/vertical-scaling/) (agregar más potencia a una máquina física existente) y/o una respuesta extremadamente rápida de hardware físico, en cuyo caso se adapta mejor el bare metal. Bare metal también le permite ajustar el hardware físico y posiblemente incluso los controladores de hardware para ayudarlo a realizar su tarea. diff --git a/content/es/chaos-engineering.md b/content/es/chaos-engineering.md index 951b3fe71b..9d1b81606a 100644 --- a/content/es/chaos-engineering.md +++ b/content/es/chaos-engineering.md @@ -7,17 +7,17 @@ tags: ["methodology", "", ""] ## ¿Qué es? -Ingeniería del Caos o CE (Chaos Engineering) es la disciplina de experimentación sobre un [Sistema Distribuido](/distributed_systems/) en producción +Ingeniería del Caos o CE (Chaos Engineering) es la disciplina de experimentación sobre un [Sistema Distribuido](/es/distributed-systems/) en producción para construir confianza en la capacidad del sistema para soportar condiciones inesperadas y turbulentas. ## Problema que aborda -Las prácticas de [SRE](/site_reliability_engineering/) y [DevOps](/es/devops/) se centran en +Las prácticas de [SRE](/es/site-reliability-engineering/) y [DevOps](/es/devops/) se centran en técnicas para el incremento de la resiliencia del producto y de la [confiabilidad](/es/reliability/). La capacidad del sistema para tolerar fallos al mismo tiempo que aseguran una calidad de servicio adecuado suele ser un típico requerimiento de desarrollo de software. Existen muchos aspectos involucrados al momento de la indisponibilidad de una aplicación, -como la infraestructura, la plataforma o otras partes del ecosistema de las aplicaciones basadas en ([microservicios](/microservices/)). +como la infraestructura, la plataforma o otras partes del ecosistema de las aplicaciones basadas en ([microservicios](/es/microservices/)). La alta frecuencia de despliegues de funcionalidades hacia el ambiente productivo puede aumentar la posibilidad de un incidente crítico o estar fuera de línea, generando consecuencias considerables para el negocio. diff --git a/content/es/cloud-native-security.md b/content/es/cloud-native-security.md index 5ba2013d80..7236d145b5 100644 --- a/content/es/cloud-native-security.md +++ b/content/es/cloud-native-security.md @@ -12,7 +12,7 @@ Garantiza que la seguridad sea parte de todo el ciclo de vida de la aplicación, La seguridad nativa para la nube busca garantizar los mismos estándares que los modelos de seguridad tradicionales mientras se adapta a las particularidades de los entornos nativos para la nube, es decir, cambios rápidos de código e infraestructura altamente efímera. -La seguridad nativa para la nube está muy relacionada con la práctica denominada [DevSecOps](/devsecops/). +La seguridad nativa para la nube está muy relacionada con la práctica denominada [DevSecOps](/es/devsecops/). ## Problema que aborda diff --git a/content/es/cluster.md b/content/es/cluster.md index 111374103d..8c99be929a 100644 --- a/content/es/cluster.md +++ b/content/es/cluster.md @@ -17,7 +17,7 @@ El conjunto de todos estos servicios [contenedorizados](/es/containerization/), Un software que es ejecutado en un solo ordenador es un único punto de fallo — Si este ordenador falla, o alguien por accidente desconecta el cable de alimentación, algún sistema crítico para el negocio puede quedar fuera de funcionamiento. -Es por esto que el software moderno se construye generalmente como [aplicaciones distribuidas](/distributed-apps), agrupadas en clústeres. +Es por esto que el software moderno se construye generalmente como [aplicaciones distribuidas](/es/distributed-apps), agrupadas en clústeres. ## ¿Cómo ayuda? diff --git a/content/es/container-image.md b/content/es/container-image.md index 6b58d783f3..cf8e7c8c87 100644 --- a/content/es/container-image.md +++ b/content/es/container-image.md @@ -7,7 +7,7 @@ tags: ["", "", ""] ## ¿Qué es? -Una imagen es un fichero estático e inmutable que contiene las dependencias para la creación de un [contenedor](/container/). +Una imagen es un fichero estático e inmutable que contiene las dependencias para la creación de un [contenedor](/es/container/). Estas dependencias pueden incluir un archivo binario ejecutable, librerías del sistema, herramientas del sistema, variables de entorno y otras configuraciones de plataforma necesarias. Las imágenes son el resultado de la [contenerización](/es/containerization) de una aplicación y típicamente están guardadas en los registros de contenedor, @@ -21,7 +21,7 @@ Cualquier configuración errónea entre los entornos es problemática, a menudo Un entorno de aplicación tiene que ser fácil de replicar, además de estar bien definido; en caso contrario, la posibilidad de bugs y errores relacionados con el entorno aumenta. Cuando los entornos de aplicación no están configurados de manera adecuada o son inexactos, -el escalado [horizontal](/horizontal-scaling/) y [vertical](/vertical-scaling/) de las aplicaciones se complica y reduce su efectividad. +el escalado [horizontal](/es/horizontal-scaling/) y [vertical](/vertical-scaling/) de las aplicaciones se complica y reduce su efectividad. ## ¿Cómo ayuda? diff --git a/content/es/containers-as-a-service.md b/content/es/containers-as-a-service.md index e739da9b12..99ddbc1f4c 100644 --- a/content/es/containers-as-a-service.md +++ b/content/es/containers-as-a-service.md @@ -9,7 +9,7 @@ tags: ["platform", "", ""] ## ¿Qué es? Contenedores como Servicio (CaaS, por sus siglas en inglés _containers as a service_) es un servicio en la nube que ayuda a administrar e implementar aplicaciones -mediante la [abstracción](/es/abstraction/) basada en [contenedores](/container/). +mediante la [abstracción](/es/abstraction/) basada en [contenedores](/es/container/). Este servicio se puede implementar en las instalaciones o en la nube. Los proveedores de CaaS ofrecen un marco de trabajo o plataforma de orquestación que diff --git a/content/es/continuous-integration.md b/content/es/continuous-integration.md index f780430452..5993e39b05 100644 --- a/content/es/continuous-integration.md +++ b/content/es/continuous-integration.md @@ -30,4 +30,4 @@ CI permite que los equipos de software conviertan cada cambio de código en un f ## Términos relacionados * [Entrega Continua](/es/continuous-delivery/) -* [Despliegue Continuo](/continuous-deployment/) +* [Despliegue Continuo](/es/continuous-deployment/) diff --git a/content/es/devops.md b/content/es/devops.md index b81d0a6742..e541f92508 100644 --- a/content/es/devops.md +++ b/content/es/devops.md @@ -13,7 +13,7 @@ DevOps requiere grupos de ingenieros que trabajen en componentes pequeños (en l ## Problema que aborda -Tradicionalmente, en organizaciones complejas con [aplicaciones monolíticas](/monolithic-apps/) con arquitecturas [estrechamente acopladas](/tightly-coupled-architectures/), +Tradicionalmente, en organizaciones complejas con [aplicaciones monolíticas](/es/monolithic-apps/) con arquitecturas [estrechamente acopladas](/tightly-coupled-architectures/), el trabajo generalmente se distribuía entre varios equipos. Esta fragmentación del desarrollo dio lugar a numerosos traspasos y largos plazos de entrega. Cada vez que un componente o alguna actualización estaba lista, se colocaba en una cola para el siguiente equipo. diff --git a/content/es/distributed-apps.md b/content/es/distributed-apps.md index a29f50e979..684f9d84ca 100644 --- a/content/es/distributed-apps.md +++ b/content/es/distributed-apps.md @@ -10,7 +10,7 @@ tags: ["architecture", "", ""] Una aplicación distribuida es una aplicación en la que la funcionalidad se divide en múltiples partes independientes más pequeñas. Las aplicaciones distribuidas suelen estar formadas por componentes individuales llamados [microservicios](/es/microservices/) que se ocupan de diferentes responsabilidades dentro de una aplicación más extensa. -En un entorno nativo para la nube, los componentes individuales suelen ejecutarse como [contenedores](/container/) en un [clúster](/es/cluster/). +En un entorno nativo para la nube, los componentes individuales suelen ejecutarse como [contenedores](/es/container/) en un [clúster](/es/cluster/). ## Problema que aborda @@ -26,6 +26,6 @@ porque más desarrolladores tienen que trabajar en una base de código compartid Al dividir una aplicación en diferentes partes y ejecutarlas en muchos lugares, el sistema global puede tolerar más fallos. También permite a una aplicación aprovechar características de escalado no disponibles para aplicaciones de una única instancia, -es decir, permite aprovechar la capacidad de [escalar horizontalmente](/horizontal-scaling/). +es decir, permite aprovechar la capacidad de [escalar horizontalmente](/es/horizontal-scaling/). Sin embargo, esto tiene un precio: una mayor complejidad y sobrecarga operativa. — ahora estás ejecutando muchos componentes en lugar de una aplicación única. diff --git a/content/es/distributed-systems.md b/content/es/distributed-systems.md index ef161aabd4..7717ecd254 100644 --- a/content/es/distributed-systems.md +++ b/content/es/distributed-systems.md @@ -9,7 +9,7 @@ tags: ["architecture", "", ""] Un sistema distribuido es una colección de elementos computacionales autónomos conectados entre sí a través de una red que se muestra a los usuarios como un sistema único coherente. -Conocidos generalmente como [nodos](/es/nodes/), estos elementos pueden ser dispositivos de hardware (por ejemplo, computadoras o teléfonos móviles) o procesos de software. +Conocidos generalmente como [nodos](/es/nodes/), estos elementos pueden ser dispositivos de hardware (por ejemplo, computadoras o teléfonos móviles) o procesos de software. Los nodos están programados para lograr un objetivo común e intercambian mensajes a través de la red para poder colaborar. ## Problema que aborda @@ -25,7 +25,7 @@ El escalamiento vertical consume mucho tiempo, requiere de un periodo de inactiv ## ¿Cómo ayuda? -Los sistemas distribuidos permiten el [escalamiento horizontal](/horizontal-scaling/) (por ejemplo, añadir más nodos al sistema siempre que éste lo requiera). +Los sistemas distribuidos permiten el [escalamiento horizontal](/es/horizontal-scaling/) (por ejemplo, añadir más nodos al sistema siempre que éste lo requiera). Este proceso se puede automatizar, lo que permite al sistema manejar un incremento repentino de la carga de trabajo o del consumo de recursos. Un sistema no distribuido está expuesto a los riesgos de falla porque cuando una máquina deja de funcionar, todo el sistema falla. diff --git a/content/es/immutable-infrastructure.md b/content/es/immutable-infrastructure.md index 2e71ecc5c8..034c0527ed 100644 --- a/content/es/immutable-infrastructure.md +++ b/content/es/immutable-infrastructure.md @@ -6,7 +6,7 @@ tags: ["infrastructure", "property", ""] --- Infraestructura inmutable se refiere a la infraestructura informática -([máquinas virtuales](/virtual-machine/), [contenedores](/container/), dispositivos de red) +([máquinas virtuales](/virtual-machine/), [contenedores](/es/container/), dispositivos de red) que no se puede cambiar una vez implementada. Esto se puede hacer cumplir mediante un proceso automatizado que sobreescriba los cambios no autorizados o a través de un sistema que no permita cambios en primer lugar. diff --git a/content/es/infrastructure-as-code.md b/content/es/infrastructure-as-code.md index 9e2a0a8664..c24c4aeb90 100644 --- a/content/es/infrastructure-as-code.md +++ b/content/es/infrastructure-as-code.md @@ -22,5 +22,5 @@ Los cambios manuales no son reproducibles, rápidamente se enfrentan a limites d Representados los recursos del [centro de datos](/data-center/) tales como servidores, balanceadores de carga y sub-redes como código, les permite a los equipos de infraestructura poseer una fuente única de verdad para todas las configuraciones y -también les permite administrar sus [centro de datos](/data-center/) en flujos de [CI](/es/continuous-integration/)/[CD](/continuous-delivery/) +también les permite administrar sus [centro de datos](/data-center/) en flujos de [CI](/es/continuous-integration/)/[CD](/es/continuous-delivery/) implementando un sistema de control de versiones y estrategias de despliegue. diff --git a/content/es/kubernetes.md b/content/es/kubernetes.md index bf349a3a9a..c84a6e40e5 100644 --- a/content/es/kubernetes.md +++ b/content/es/kubernetes.md @@ -8,9 +8,9 @@ tags: ["infrastructure", "fundamental", ""] ## ¿Qué es? Kubernetes, comúnmente abreviado como K8s, es un orquestador de contenedores de código abierto. -Automatiza el ciclo de vida de las aplicaciones contenedorizadas en infraestructuras modernas, funcionando como un "sistema operativo en un Centro de Datos" que administra las aplicaciones ejecutándose en [sistemas distribuidos](/distributed-systems/). +Automatiza el ciclo de vida de las aplicaciones contenedorizadas en infraestructuras modernas, funcionando como un "sistema operativo en un Centro de Datos" que administra las aplicaciones ejecutándose en [sistemas distribuidos](/es/distributed-systems/). -Kubernetes gestiona [contenedores](/container/) en los [nodos](/nodes/) de un [clúster](/es/cluster/), agrupa muchos componentes de infraestructura, en ocasiones referidos como "primitivos", como una instancia de una aplicación, balanceadores de carga, almacenamiento persistente y otros, de manera que puedan integrarse en aplicaciones. +Kubernetes gestiona [contenedores](/es/container/) en los [nodos](/es/nodes/) de un [clúster](/es/cluster/), agrupa muchos componentes de infraestructura, en ocasiones referidos como "primitivos", como una instancia de una aplicación, balanceadores de carga, almacenamiento persistente y otros, de manera que puedan integrarse en aplicaciones. Kubernetes permite la automatización y extensibilidad, permitiendo a los usuarios desplegar sus aplicaciones de una manera declarativa y reproducible. Kubernetes puede ser extendido a través de su [API](/es/application-programming-interface/), permitiendo aprovechar la automatización de Kubernetes y hacer que sus herramientas sean más accesibles para profesionistas experimentados de Kubernetes. diff --git a/content/es/load-balancer.md b/content/es/load-balancer.md index 08bd651695..437cb7d564 100644 --- a/content/es/load-balancer.md +++ b/content/es/load-balancer.md @@ -8,7 +8,7 @@ tags: ["infrastructure", "networking", ""] ## ¿Qué es? Un balanceador de carga es una herramienta que distribuye eficientemente las solicitudes entrantes entre varias instancias de una aplicación. -Tome una arquitectura de [microservicio](/microservices/) como ejemplo, donde cada servicio se puede [escalar horizontalmente](/escala-horizontal/). +Tome una arquitectura de [microservicio](/es/microservices/) como ejemplo, donde cada servicio se puede [escalar horizontalmente](/es/horizontal-scaling/). Un balanceador de carga se encuentra frente a un microservicio escalado y garantiza que ninguna instancia reciba la mayor parte de las solicitudes. Los balanceadores de carga pueden estar basados en software o hardware. diff --git a/content/es/monolithic-apps.md b/content/es/monolithic-apps.md index bd27af1dcf..4a3c27aee0 100644 --- a/content/es/monolithic-apps.md +++ b/content/es/monolithic-apps.md @@ -15,7 +15,7 @@ la probabilidad de conflictos y la necesidad de comunicación interpersonal entr ## Problema que aborda -La división de una aplicación en [microservicios](/microservices/) aumenta su sobrecarga operativa +La división de una aplicación en [microservicios](/es/microservices/) aumenta su sobrecarga operativa ya que hay más cosas que probar, desplegar y mantener en funcionamiento. Al principio del ciclo de vida de un producto, puede ser ventajoso reducir la complejidad y construir una aplicación monolítica hasta que se determine que el producto tiene éxito. diff --git a/content/es/platform-as-a-service.md b/content/es/platform-as-a-service.md index ecc60dc953..3983f07336 100644 --- a/content/es/platform-as-a-service.md +++ b/content/es/platform-as-a-service.md @@ -12,7 +12,7 @@ Heroku, Cloud Foundry y App Engine son ejemplos de ofertas de PaaS. ## Problema que aborda -Para aprovechar los patrones de las aplicaciones nativas para la nube como son los [microservicios](/microservices/) o las [aplicaciones distribuidas](/distributed-apps/), +Para aprovechar los patrones de las aplicaciones nativas para la nube como son los [microservicios](/es/microservices/) o las [aplicaciones distribuidas](/es/distributed-apps/), los equipos de operaciones y los desarrolladores necesitan ser capaces de descargar un tiempo significativo de trabajo en operaciones y mantenimiento. Estos incluyen tareas como el aprovisionamiento de infraestructura, el manejo del [descubrimiento de servicios](/service-discovery/) y balanceo de cargas, y [escalamiento](/scalability/) de aplicaciones. diff --git a/content/es/reliability.md b/content/es/reliability.md index e54eb40991..3d8a482430 100644 --- a/content/es/reliability.md +++ b/content/es/reliability.md @@ -6,6 +6,6 @@ tags: ["fundamental", "property", ""] --- Desde una perspectiva nativa a la nube, fiabilidad se refiere a qué tan bien un sistema responde ante las fallas. -Si tenemos un [sistema distribuido](/distributed-systems/) que continúa funcionando mientras la infraestructura cambia y los componentes individuales fallan, este es fiable. +Si tenemos un [sistema distribuido](/es/distributed-systems/) que continúa funcionando mientras la infraestructura cambia y los componentes individuales fallan, este es fiable. Por otro lado, si falla fácilmente y los operadores deben intervenir manualmente para mantenerlo en ejecución, entonces es poco confiable. La meta de las [aplicaciones nativas para la nube](/es/cloud-native-apps/) es construir sistemas inherentemente fiables. diff --git a/content/es/scalability.md b/content/es/scalability.md index 5af2083079..fb25f2e9d3 100644 --- a/content/es/scalability.md +++ b/content/es/scalability.md @@ -10,12 +10,12 @@ Esto es, aumentando la capacidad para hacer lo que sea que el sistema deba hacer Por ejemplo, un [clúster](/es/cluster/) de [Kubernetes](/es/kubernetes/) escala aumentando o reduciendo el número de aplicaciones [en contenedores](/es/containerization/), pero esa escalabilidad depende de varios factores. -¿Cuántos [nodos](/es/nodes/) tiene?, ¿cuántos [contenedores](/container/) puede manejar cada nodo?, +¿Cuántos [nodos](/es/nodes/) tiene?, ¿cuántos [contenedores](/es/container/) puede manejar cada nodo?, y ¿cuántos registros y operaciones puede soportar el plano de control? Un sistema escalable facilita agregar más capacidad. Diferenciamos entre dos enfoques de escala. -Por un lado, está el [escalado horizontal](/horizontal-scaling/) que agrega más nodos para manejar una mayor carga. +Por un lado, está el [escalado horizontal](/es/horizontal-scaling/) que agrega más nodos para manejar una mayor carga. Por el contrario, en el [escalado vertical](/vertical-scaling/) los nodos individuales se vuelven más poderosos para realizar más transacciones (por ejemplo, agregando más memoria o CPU a una máquina individual). Un sistema escalable es capaz de cambiar fácilmente y satisfacer las necesidades del usuario. From 515ea588e9c0c32ff250b3920980acf3adc052a1 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Sun, 16 Apr 2023 18:34:46 -0400 Subject: [PATCH 051/295] Fix Ludo's comment Signed-off-by: Christophe Sauthier --- content/fr/tightly-coupled-architectures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/tightly-coupled-architectures.md b/content/fr/tightly-coupled-architectures.md index d14a1b7a7a..9902c95ef7 100644 --- a/content/fr/tightly-coupled-architectures.md +++ b/content/fr/tightly-coupled-architectures.md @@ -13,7 +13,7 @@ elles peuvent mettre un système à risque par rapport aux erreurs en cascade. Elles ont également tendance à nécessiter des déploiements synchronisés des composants ce qui peut devenir un frein à la productivité des développeurs. -Les architectures fortement couplées sont une manière assez traditionnelle de construction d'applications. +Les architectures fortement couplées sont une manière assez traditionnelle de construction des applications. Bien qu'elles ne soient pas nécessairement conformes avec les meilleures pratiques de développement de [microservices](/microservices/) elles peuvent être utiles dans des circonstances spécifiques. Elles ont tendances à être plus rapides et plus simples à mettre en oeuvre et From efb3a6dcc014829ef7f2c558cbaadc854c6e99c6 Mon Sep 17 00:00:00 2001 From: "Alexis \"Horgix\" Chotard" Date: Fri, 21 Apr 2023 01:38:00 +0200 Subject: [PATCH 052/295] fr: add missing translation for `distributed-systems` (resolves #1973) Signed-off-by: Alexis "Horgix" Chotard --- content/fr/distributed-systems.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/fr/distributed-systems.md diff --git a/content/fr/distributed-systems.md b/content/fr/distributed-systems.md new file mode 100644 index 0000000000..c6ccc3aa83 --- /dev/null +++ b/content/fr/distributed-systems.md @@ -0,0 +1,30 @@ +--- +title: Système distribué +status: Feedback Appreciated +category: concept +tags: ["architecture"] +--- + +## Ce que c'est + +Un système distribué est un ensemble de composants autonomes connectés via un réseau, et qui apparaît à ses utilisateurs comme un seul système cohérent. +La plupart du temps appelés [nœuds](/nodes/), ces composants peuvent aussi bien être des machines physiques (des ordinateurs ou des téléphones portables par exemple) que des processus logiciels. +Les nœuds sont programmés pour atteindre un objectif commun et échangent des messages via le réseau afin de collaborer. + +## Problème auquel il répond + +De nombreuses applications modernes de nos jours sont si conséquentes de par leur taille qu'elles nécessiteraient de superordinateurs afin de pouvoir fonctionner. +Pensez à Gmail ou Netflix: il n'existe aucune machine physique suffisamment puissante pour héberger ces applications dans leur intégralité. +En connectant entre elles de multiples machines physiques, la puissance de calcul devient quasiment infinie. +Sans calcul distribué, beaucoup d'applications sur lesquelles nous nous appuyons aujourd'hui ne pourraient pas exister. + +Traditionnellement, les systèmes [passent à l'échelle](/scalability/) verticalement, ce qui correspond à l'ajout de processeur ou de mémoire à une seule machine. +Le passage à l'échelle vertical est chronophage, nécessite un temps d'arrêt, et atteint rapidement ses limites. + +## Quel en est l'utilité + +Les systèmes distribués permettent un [passage à l'échelle horizontal](/horizontal-scaling/) (par exemple en ajoutant des nœuds au système lorsque nécessaire). +Ceci peut être automatisé, permettant ainsi au système de gérer une croissance soudaine de charge de travail (workload) ou de consommation de ressources. + +Un système non distribué s'expose à des risques de panne dans la mesure où, si une machine physique venait à tomber en échec, l'intégralité du système viendrait à tomber avec elle. +Un système distribué peut être pensé et conçu afin que, dans l'éventualité où une machine physique viendrait à tomber, le système au global puisse continuer de fonctionner avec le même résultat. From b1fd0038be18c08ee574c97b207d1dd5296af77d Mon Sep 17 00:00:00 2001 From: "Alexis \"Horgix\" Chotard" Date: Fri, 21 Apr 2023 13:20:54 +0200 Subject: [PATCH 053/295] fr/distributed-systems: swap two parts of a sentence following @Krast76 suggestion Signed-off-by: Alexis "Horgix" Chotard --- content/fr/distributed-systems.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/distributed-systems.md b/content/fr/distributed-systems.md index c6ccc3aa83..ff7977aef4 100644 --- a/content/fr/distributed-systems.md +++ b/content/fr/distributed-systems.md @@ -13,7 +13,7 @@ Les nœuds sont programmés pour atteindre un objectif commun et échangent des ## Problème auquel il répond -De nombreuses applications modernes de nos jours sont si conséquentes de par leur taille qu'elles nécessiteraient de superordinateurs afin de pouvoir fonctionner. +De nos jours, de nombreuses applications modernes sont si conséquentes de par leur taille qu'elles nécessiteraient de superordinateurs afin de pouvoir fonctionner. Pensez à Gmail ou Netflix: il n'existe aucune machine physique suffisamment puissante pour héberger ces applications dans leur intégralité. En connectant entre elles de multiples machines physiques, la puissance de calcul devient quasiment infinie. Sans calcul distribué, beaucoup d'applications sur lesquelles nous nous appuyons aujourd'hui ne pourraient pas exister. From e985a60db19d27434025df557a79da43dd400a2c Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Sat, 22 Apr 2023 06:48:18 -0700 Subject: [PATCH 054/295] [es] Sync node term (#1950) Signed-off-by: Victor Morales --- content/es/nodes.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/content/es/nodes.md b/content/es/nodes.md index 2f62cee720..a89fb2547b 100644 --- a/content/es/nodes.md +++ b/content/es/nodes.md @@ -2,17 +2,27 @@ title: Nodos status: Completed category: Tecnología -tags: ["architecture"] +tags: ["infrastructure", "fundamental", ""] --- ## ¿Qué es? -Un nodo es un servidor que trabaja en conjunto a otros servidores, o nodos, para realizar una tarea común. Por ejemplo, tu laptop, el módem y la impresora están conectados a través de tu red wifi comunicándose y colaborando, cada uno representa un nodo. En [computación en la nube](/es/cloud-computing/), un nodo puede ser un servidor físico, un servidor virtual, denominado [VM](/virtual-machine/), o incluso un [contenedor](/container/). +Un nodo es un servidor que trabaja en conjunto a otros servidores, o nodos, para realizar una tarea común. +Toma tu laptop, el módem y la impresora como ejemplo. +Están conectados a través de tu red wifi comunicándose y colaborando, cada uno representa un nodo. +En [computación en la nube](/es/cloud-computing/), un nodo puede ser un servidor físico, +un servidor virtual, denominado [VM](/virtual-machine/), o incluso un [contenedor](/es/container/). ## Problema que aborda -Una aplicación podría (y muchas lo hacen) ejecutarse en una sola máquina, esto conlleva algunos riesgos como el fallo del sistema subyacente interrumpirá la aplicación. Para solucionar esto, los desarrolladores comenzaron a crear [aplicaciones distribuidas](/distributed-apps/) donde cada proceso se ejecuta en su propio nodo. Así, los nodos ejecutan aplicaciones o procesos como parte de un grupo que forma un [clúster](/es/cluster/), o grupo, de nodos que trabajan juntos para lograr un objetivo común. +Una aplicación podría (y muchas lo hacen) ejecutarse en una sola máquina, esto conlleva algunos riesgos. +Concretamente, el fallo del sistema subyacente interrumpirá la aplicación. +Para solucionar esto, los desarrolladores comenzaron a crear [aplicaciones distribuidas](/es/distributed-apps/) donde cada proceso se ejecuta en su propio nodo. +Así, los nodos ejecutan aplicaciones o procesos como parte de un grupo que forma un [clúster](/es/cluster/), o grupo, de nodos que trabajan juntos para lograr un objetivo común. ## ¿Cómo ayuda? -Un nodo es una unidad de cálculo distinta (memoria, CPU, red) que se puede asignar a un clúster. En una plataforma o aplicación [nativa para la nube](/es/cloud-native-tech/) un nodo representa una única unidad que puede realizar trabajo. Idealmente, los nodos individuales son indiferenciados en el sentido de que cualquier nodo de un tipo particular es indistinguible de cualquier otro nodo del mismo tipo. +Un nodo es una unidad de cálculo distinta (memoria, CPU, red) que se puede asignar a un clúster. +En una plataforma o aplicación [nativa para la nube](/es/cloud-native-tech/) un nodo representa una única unidad que puede realizar trabajo. +Idealmente, los nodos individuales son indiferenciados en el sentido de que +cualquier nodo de un tipo particular es indistinguible de cualquier otro nodo del mismo tipo. From a67ba189acc24027ba258507dfd09db4b0631215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sat, 22 Apr 2023 16:11:27 +0200 Subject: [PATCH 055/295] Fixes after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/observability.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/observability.md b/content/fr/observability.md index a97d53315d..75af2fe047 100644 --- a/content/fr/observability.md +++ b/content/fr/observability.md @@ -1,5 +1,5 @@ --- -title: Observability +title: Observabilité status: Feedback Appreciated category: concept tags: ["property", "", ""] @@ -8,7 +8,7 @@ tags: ["property", "", ""] L'observabilité est une propriété des systèmes qui définit le degré auquel le système peut générer des informations exploitables. Elle permet aux utilisateurs de comprendre l'état d'un système à partir de ses sorties externes et de prendre des mesures (correctives). -Les systèmes informatiques sont mesurés en observant des signaux de bas niveau tels que le temps CPU, la mémoire, l'espace disque, et des signaux de niveau supérieur et métiers, notamment les temps de réponse de l'API, les erreurs, le nombre de transactions par seconde, etc. +Les systèmes informatiques sont mesurés en observant des signaux de bas niveau tels que le temps processeur, la mémoire, l'espace disque, et des signaux de niveau supérieur et métiers, notamment les temps de réponse de l'API, les erreurs, le nombre de transactions par seconde, etc. Ces systèmes observables sont **observés** (ou surveillés) grâce à des outils spécialisés, appelés outils d'observabilité. Une liste de ces outils peut être consultée dans la [section observabilité du Cloud Native Landscape](https://landscape.cncf.io/card-mode?category=observability-and-analysis&grouping=category). Les systèmes observables fournissent des données significatives et exploitables à leurs opérateurs, leur permettant ainsi d'obtenir des résultats intéressants (intervention plus rapide en cas d'incident, augmentation de la productivité des développeurs) et de réduire le temps improductif. From 207f2183882b7f7efa9622b3668fee99b7360159 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Sat, 22 Apr 2023 16:28:23 +0200 Subject: [PATCH 056/295] [ES] content/es/security-chaos-engineering.md (#1941) * added content/es/security-chaos-engineering.md --- content/es/.wordlist.txt | 1 + content/es/security-chaos-engineering.md | 35 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 content/es/security-chaos-engineering.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 5efef8cd70..45decc389c 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -240,6 +240,7 @@ Rodolfo Runtime SaaS Salesforce +SCE scripts Secure security diff --git a/content/es/security-chaos-engineering.md b/content/es/security-chaos-engineering.md new file mode 100644 index 0000000000..2308389ed3 --- /dev/null +++ b/content/es/security-chaos-engineering.md @@ -0,0 +1,35 @@ +--- +title: Seguridad en Ingeniería del Caos +status: Completed +category: Concepto +tags: ["security", "methodology", ""] +--- + +## ¿Qué es? + +Seguridad en Ingeniería del Caos, o SCE en Inglés, es una disciplina basada en la [Ingeniería del Caos](/es/chaos-engineering/). +SCE ejecuta experimentos de seguridad de manera proactiva en un sistema distribuido +para aportar confianza en la capacidad del sistema de soportar condiciones maliciosas o turbulentas. +Los ingenieros a cargo de llevar a cabo esta práctica utilizan métodos científicos, +incluyendo el estado inicial, hipótesis, verificación continua, lecciones aprendidas e implementación de mitigaciones. + +## Problema que aborda + +La mayor prioridad de los [ingenieros de confiabilidad del sitio](/es/site-reliability-engineering/) (o SRE en Inglés) e ingenieros de seguridad informática es +restaurar el servicio tan pronto como sea posible con el objetivo global de alcanzar cero interrupciones y minimizar el impacto al negocio. +Tanto los SRE como los ingenieros de seguridad se enfrentan con incidentes y sus respectivas situaciones anteriores y posteriores. +La mayoría de los problemas de seguridad son difíciles de encontrar y mitigar rápidamente, impactando la funcionalidad de la aplicación o el sistema. +Adicionalmente, los incidentes de seguridad no son tan evidentes en la fase de desarrollo. + +## ¿Cómo ayuda? + +La Seguridad en Ingeniería del Caos está construida alrededor de la [observabilidad](/es/observability/) y las prácticas de resiliencia informática. +Apunta a dejar en evidencia lo desconocido y establecer confianza en el sistema, +aumentando la resiliencia informática y mejorando la observabilidad. + +Los equipos de ingeniería aumentaran progresivamente el entendimiento de los eventuales problemas de seguridad +en infraestructuras complejas, plataformas y sistemas distribuidos. +SCE mejora la resiliencia informática del producto en su totalidad, visibilizando problemas de seguridad ocultos, +exponiendo el clásico punto ciego y preparando a los equipos para casos extremos. +Este método ayuda a los SRE e ingenieros [DevOps](/es/devops/) y [DevSecOps](/es/devsecops/) +a crear confianza en el sistema, incrementando la resiliencia informática y mejorando la observabilidad. \ No newline at end of file From 4113b74b40381fe1702339be2127123b69176efd Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Tue, 25 Apr 2023 17:56:10 +0200 Subject: [PATCH 057/295] [ES] added content/es/data-center.md (#1801) * added content/es/data-center.md * added latest changes from document in main * fixed typo in data-center * updated es-datacenter with latest content * Update content/es/data-center.md Signed-off-by: marianogg9 --- content/es/data-center.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/es/data-center.md diff --git a/content/es/data-center.md b/content/es/data-center.md new file mode 100644 index 0000000000..a55d5dcebc --- /dev/null +++ b/content/es/data-center.md @@ -0,0 +1,31 @@ +--- +title: Centro de Datos +status: Completed +category: Tecnología +tags: ["infrastructure", "fundamental", ""] +--- + +## ¿Qué es? + +Un centro de datos es un edificio diseñado específicamente para almacenar computadoras, habitualmente referidas como servidores. +Estos centros de datos suelen estar conectados a líneas de Internet de alta velocidad, especialmente en el caso de los centros de datos para [computación en la nube](/es/cloud-computing/). +Las edificaciones donde se alojan los centros de datos poseen equipamiento para mantener el servicio incluso en caso de fuerza mayor, como generadores para proveer energía durante apagones y aire acondicionado para la dispersión del calor generado por los servidores. + +## Problema que aborda + +Antes de que los centros de datos tomaran notoriedad en los años 90, existían mayormente computadoras individuales con tareas específicas y otras utilizadas por usuarios particulares. + +Pero las computadoras tienen recursos limitados (almacenamiento, memoria y CPU). +Lo que conlleva que las aplicaciones que son ejecutadas en ellas, tienen sus mismos límites, condicionando así el tipo de aplicaciones que pueden ejecutarse. +Antes de los centros de datos, la escala de una aplicación era limitada por la capacidad de la computadora donde era ejecutada. +Pero si se piensa en aplicaciones a escala, como Gmail o Netflix (refiriendo a la aplicación, no a la interfaz de usuario que tenemos en nuestros teléfonos o computadoras), necesitan mucha más capacidad computacional que cualquier computadora puede proveer. +Y allí es donde los centros de datos entran en juego. + +## ¿Cómo ayuda? + +Conectando varios servidores, los usuarios pueden crear [sistemas distribuidos](/es/distributed-systems/) que funcionan como una "súper computadora". +Ya que estamos combinando la potencia de muchas máquinas, podemos ejecutar aplicaciones o procesos mucho más grandes y con tareas computacionales más poderosas. +Los centros de datos dan vida a muchas de las aplicaciones que hoy utilizamos a diario. + +La [computación en la nube](/es/cloud-computing/) es en sí misma centros de datos que rentan su capacidad computacional a sus clientes. +A lo largo de los últimos años, hemos visto un cambio desde centros de datos propios en una compañía hacia la nube. \ No newline at end of file From 8fdb9b7d583cef793153792873b702694e9fc1c5 Mon Sep 17 00:00:00 2001 From: Naymul Islam <68547750+ai-naymul@users.noreply.github.com> Date: Tue, 25 Apr 2023 23:12:32 +0600 Subject: [PATCH 058/295] [es] #1775 Issue: Localized the software-as-a-service.md document (#1856) * #1775 Issue: Localized the content/en/software-as-a-service.md document to Spanish * Fix the spelling and translated the English part of the file * Fixes the spell check failure and update the content/es/software-as-a-service.md Signed-off-by: Naymul Islam Signed-off-by: Naymul Islam <68547750+ai-naymul@users.noreply.github.com> --- content/es/software-as-a-service.md | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/es/software-as-a-service.md diff --git a/content/es/software-as-a-service.md b/content/es/software-as-a-service.md new file mode 100644 index 0000000000..33fdc3e663 --- /dev/null +++ b/content/es/software-as-a-service.md @@ -0,0 +1,31 @@ +--- +Title: Software como Servicio (SaaS) +Status: Deprecated +Category: Tecnología +draft: true +tags: ["fundamental", "platform", ""] +--- + +## ¿Qué es? + +El software como servicio (SaaS) permite a los usuarios conectarse y utilizar servicios basados en la nube a través de Internet. +Los ejemplos comunes son el correo electrónico, el calendario y las herramientas de oficina (como Gmail, Amazon Web Servicios, GitHub, Slack). +SaaS proporciona soluciones de software completas mediante pago por uso. +Todas las tareas de operación y mantenimiento, y los datos de la aplicación, son manejados por el proveedor de servicios. + +## Problema que aborda + +Tradicionalmente, el software comercial se instala en computadoras individuales, lo que requiere un administrador para mantenerlo y actualizarlo. +Como ejemplo: una organización puede usar software local para la gestión de relaciones con los clientes (CRM). +Este software debe comprarse, instalarse, protegerse, mantenerse y actualizarse regularmente +por el departamento de TI interno, lo que supone una carga para el equipo de TI. +El costo inicial asociado con las licencias, la instalación y el hardware potencialmente adicional puede ser prohibitivo. +También puede ser difícil responder a la demanda y [escala](/es/scalability/) hacia arriba y hacia abajo +según sea necesario rápidamente en respuesta al crecimiento o cambio. + +## ¿Cómo ayuda? + +Las aplicaciones SaaS funcionan sin requerir ningún esfuerzo particular por parte de su organización de TI interna. +Son instalados, mantenidos, actualizados y asegurados por el proveedor. +Los problemas de escala, disponibilidad y capacidad son manejados por el proveedor de servicios y, +con un modelo de pago por uso, pueden ser una forma asequible para que las organizaciones aprovechen las aplicaciones empresariales. From 9f7f406a3e8d92d6736d3f1805610b8b7c6ce5c0 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Thu, 27 Apr 2023 17:56:09 +0200 Subject: [PATCH 059/295] [ES] added es/content/service-mesh.md (#1982) * added es/content/service-mesh.md Signed-off-by: marianogg9 --- content/es/service-mesh.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/es/service-mesh.md diff --git a/content/es/service-mesh.md b/content/es/service-mesh.md new file mode 100644 index 0000000000..2a429f781f --- /dev/null +++ b/content/es/service-mesh.md @@ -0,0 +1,30 @@ +--- +title: Malla de Servicios +status: Completed +category: Tecnología +tags: ["networking", "", ""] +--- + +## ¿Qué es? + +En un mundo de [arquitectura de microservicios](/es/microservices-architecture/)], las aplicaciones se dividen en múltiples [servicios](/service/) que se comunican a través de una red. +Al igual que las redes de wifi, las redes de computadoras son poco confiables, proclives a ser atacadas y en muchos casos lentas. +Las mallas de servicios afrontan estos nuevos desafíos mediante el manejo de tráfico (por ejemplo la comunicación) entre servicios y +agregando [fiabilidad](/es/reliability/), [observabilidad](/es/observability/) e implementaciones de seguridad a todos los servicios. + +## Problema que aborda + +Cuando se ha migrado a una arquitectura de microservicios, los ingenieros ahora deben lidiar con cientos, +incluso miles de servicios individuales que necesitan comunicarse. +Lo que significa que existe mucho tráfico hacia y desde estos servicios a través de la red. +Sumado a lo anterior, las aplicaciones individuales podrían necesitar codificar la comunicación para cumplir con requerimientos legales, +proveer métricas a los equipos de operaciones o proporcionar información detallada sobre el tráfico para ayudar a diagnosticar problemas. +Si todas estas funcionalidades se agregaran a cada aplicación, +cada una causaría una duplicación innecesaria y podría hacer más lento el desarrollo de nuevas funcionalidades. + +## ¿Cómo ayuda? + +Las mallas de servicios agregan fiabilidad, observabilidad y funcionalidades de seguridad +uniformemente a todos los servicios en un clúster sin requerir cambios en el código. +Antes de las mallas de servicios, esta funcionalidad tenía que ser agregada al código en cada servicio, +potencialmente convirtiéndose en una fuente de errores y deuda técnica. \ No newline at end of file From dfdb37173ddd66e9a3e035bf9b0ee7680857bc9e Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Thu, 27 Apr 2023 17:57:48 +0200 Subject: [PATCH 060/295] [ES] virtual machine (#1980) * added content/virtual-machine.md Signed-off-by: marianogg9 --- content/es/bare-metal-machine.md | 2 +- content/es/virtual-machine.md | 37 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 content/es/virtual-machine.md diff --git a/content/es/bare-metal-machine.md b/content/es/bare-metal-machine.md index 46ac906ed7..1c960d9b6f 100644 --- a/content/es/bare-metal-machine.md +++ b/content/es/bare-metal-machine.md @@ -8,7 +8,7 @@ tags: ["infrastructure", "", ""] ## ¿Qué es? Bare metal se refiere a una computadora física, más específicamente un servidor, que tiene un solo sistema operativo. -La distinción es importante en la informática moderna porque muchos, si no es que la mayoría, de los servidores son [máquinas virtuales](/virtual-machine/). +La distinción es importante en la informática moderna porque muchos, si no es que la mayoría, de los servidores son [máquinas virtuales](/es/virtual-machine/). Un servidor físico suele ser una computadora bastante grande con un potente hardware incorporado. La instalación de un sistema operativo y la ejecución de aplicaciones directamente en ese hardware físico, sin [virtualización](/virtualization/), se conoce como ejecución "bare metal". diff --git a/content/es/virtual-machine.md b/content/es/virtual-machine.md new file mode 100644 index 0000000000..cae79f4b0f --- /dev/null +++ b/content/es/virtual-machine.md @@ -0,0 +1,37 @@ +--- +title: Máquina Virtual +status: Completed +category: Tecnología +tags: ["fundamental", "infrastructure", ""] +--- + +## ¿Qué es? + +Una máquina virtual (VM según sus siglas en Inglés) es una computadora y su sistema operativo +no relacionados a un hardware específico. +Las máquinas virtuales utilizan el método de [virtualización](/virtualization/) que crea múltiples computadoras virtuales dentro una sola computadora física. +Esta separación facilita a organizaciones y proveedores de infraestructura +a crear y eliminar máquinas virtuales sin impactar el hardware de base. + +## Problema que aborda + +Las máquinas virtuales se basan en la virtualización. +Cuando una [máquina bare metal](/es/bare-metal-machine/) utiliza un solo sistema operativo, +la posibilidad de utilización de sus recursos es limitada. +Además, cuando un sistema operativo está directamente ligado a una sola máquina física, +su disponibilidad está directamente vinculada a ese hardware. +Si la máquina física se encontrase fuera de línea debido a tareas de mantenimiento o fallas de hardware, su sistema operativo también lo estará. + +## ¿Cómo ayuda? + +Eliminando la relación directa entre un sistema operativo y una sola máquina física, +se resuelven varios problemas de las máquinas bare metal: +el tiempo de aprovisionamiento, la utilización de hardware y la resiliencia. + +Sin la necesidad de tener que comprar nuevo hardware, instalarlo o configurarlo, +el tiempo de aprovisionamiento de una nueva computadora mejora considerablemente. +Las máquinas virtuales permiten utilizar los recursos de un hardware existente de mejor manera +colocando múltiples máquinas virtuales en una misma máquina física. +Sin estar limitadas a una máquina física específica, las máquinas virtuales aumentan su resiliencia frente a las físicas. +Cuando una máquina física necesita dejar de funcionar, +las máquinas virtuales que se estén ejecutando allí pueden ser migradas a otra máquina física con un impacto mínimo en su operatividad. \ No newline at end of file From 0d7a453573967e438fc8069faabb71934af06836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Mon, 1 May 2023 16:12:28 +0200 Subject: [PATCH 061/295] [fr] Localize self-healing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/self-healing.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 content/fr/self-healing.md diff --git a/content/fr/self-healing.md b/content/fr/self-healing.md new file mode 100644 index 0000000000..656866be58 --- /dev/null +++ b/content/fr/self-healing.md @@ -0,0 +1,11 @@ +--- +title: Auto-réparant +status: Feedback Appreciated +category: property +tags: ["infrastructure", "property"] +--- + + +Un système auto-réparant est capable de se remettre de certains types de défaillance sans aucune intervention humaine. +Il possède une boucle de "convergence" ou de "contrôle" qui examine activement l'état courant du système et le compare à l'état souhaité initialement par les opérateurs. +S'il y a une différence (par exemple, moins d'instances d'application sont en cours d'exécution que souhaité), il prendra des mesures correctives (par exemple, démarrer de nouvelles instances). From 3877ff05f6f3f597724bcfcc6b20a7c9a4046abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodolfo=20Mart=C3=ADnez=20Vega?= Date: Tue, 2 May 2023 13:49:34 -0600 Subject: [PATCH 062/295] [es] Translate tags section in es.toml file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rodolfo Martínez Vega --- i18n/es.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/i18n/es.toml b/i18n/es.toml index af79f393d0..080b177ee4 100644 --- a/i18n/es.toml +++ b/i18n/es.toml @@ -28,13 +28,13 @@ other = "Etiquetas" [ui_search_by_tags] other = "Browse by Tags" [ui_tags_intro] -other = "We've categorized the glossary terms. Use the filters to browse terms by tag." +other = "Hemos clasificado los términos del glosario. Utiliza los filtros para buscar términos por etiqueta." [ui_or_search_by_tags] -other = "...or browse by tag" +other = "...o busca por etiqueta" [ui_select_all] -other = "Select All" +other = "Seleccionar todas" [ui_deselect_all] -other = "Deselect All" +other = "Deseleccionar todas" # Footer text [footer_all_rights_reserved] From 7c6061740fe8aaeca92a48651e26c0cd46f34f29 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Wed, 8 Feb 2023 10:35:50 -0500 Subject: [PATCH 063/295] Traduction de infrastrcuture-as-code.md Signed-off-by: Christophe Sauthier --- content/fr/infrastructure-as-code.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/fr/infrastructure-as-code.md diff --git a/content/fr/infrastructure-as-code.md b/content/fr/infrastructure-as-code.md new file mode 100644 index 0000000000..565b6a825d --- /dev/null +++ b/content/fr/infrastructure-as-code.md @@ -0,0 +1,23 @@ +--- +title: Infrastructure en tant que code +status: Feedback Appreciated +category: concept +--- + + +## Ce que c'est + +L'infrastructure en tant que code est la pratique de stocker la définition d'infrastructure dans un ou plusieurs fichiers. +Ceci remplace le modèle traditionnel où l'infrastructure en tant que service est provisionnée manuellement, +habituellement au travers de scripts ou autres outils de configuration. + +## Problème auquel il répond + +Construire des applications d'une manière Cloud Native nécessite des infrastructures qui peuvent être duplicables et jettables. +Il est également nécessaire de pouvoir [mettre à l'échelle](/scalability/) à la demande de manière automatique et répétable, potentiellement sans intervention humaine. +Le provisionnement manuel ne pouvant pas répondre aux besoins de réactivité et de passage à l'échelle des [applications cloud natives](/cloud-native-apps/). +Les changements manuels sur l'infrastructure ne sont pas reproductibles, affichent rapidement des problèmes de mise à l'échelle, et amènent des erreurs de configuration. + +## Quel en est l'utilité + +En représentant les ressources des centres de données comme les serveurs, les équilibreurs de charge, et les sous-réseaux en tant que code, celà permet aux équipes en charge de l'infrastructure d'avoir une seule source de vérité pour toutes les configurations mais aussi de gérer leurs centres de données dans un pipeline [CI](/continuous-integration/)/[CD](/continuous-delivery/), qui implémente la gestion de version et des stratégies de déploiement. From 6bf3eb07737ebe61abf09d4dc43a6d0f8930eb7e Mon Sep 17 00:00:00 2001 From: "Alexis \"Horgix\" Chotard" Date: Wed, 3 May 2023 18:21:21 +0200 Subject: [PATCH 064/295] =?UTF-8?q?pr-suggestion(fydrah):=20fix=20de=20?= =?UTF-8?q?=E2=86=92=20des=20superordinateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis "Horgix" Chotard --- content/fr/distributed-systems.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/distributed-systems.md b/content/fr/distributed-systems.md index ff7977aef4..6a55345095 100644 --- a/content/fr/distributed-systems.md +++ b/content/fr/distributed-systems.md @@ -13,7 +13,7 @@ Les nœuds sont programmés pour atteindre un objectif commun et échangent des ## Problème auquel il répond -De nos jours, de nombreuses applications modernes sont si conséquentes de par leur taille qu'elles nécessiteraient de superordinateurs afin de pouvoir fonctionner. +De nos jours, de nombreuses applications modernes sont si conséquentes de par leur taille qu'elles nécessiteraient des superordinateurs afin de pouvoir fonctionner. Pensez à Gmail ou Netflix: il n'existe aucune machine physique suffisamment puissante pour héberger ces applications dans leur intégralité. En connectant entre elles de multiples machines physiques, la puissance de calcul devient quasiment infinie. Sans calcul distribué, beaucoup d'applications sur lesquelles nous nous appuyons aujourd'hui ne pourraient pas exister. From 287b721a1dd4536b6b843153d36744c1223870c6 Mon Sep 17 00:00:00 2001 From: ydFu Date: Fri, 28 Apr 2023 14:45:47 +0800 Subject: [PATCH 065/295] Settings and initial contents for Traditional Chinese localization Signed-off-by: ydFu --- config.toml | 6 + content/zh-tw/_index.md | 46 +++++ content/zh-tw/cloud-native-tech.md | 25 +++ content/zh-tw/contribute/_index.md | 221 +++++++++++++++++++++ content/zh-tw/contributor-ladder/_index.md | 122 ++++++++++++ content/zh-tw/style-guide/_index.md | 183 +++++++++++++++++ i18n/zh-tw.toml | 87 ++++++++ 7 files changed, 690 insertions(+) create mode 100644 content/zh-tw/_index.md create mode 100644 content/zh-tw/cloud-native-tech.md create mode 100644 content/zh-tw/contribute/_index.md create mode 100644 content/zh-tw/contributor-ladder/_index.md create mode 100644 content/zh-tw/style-guide/_index.md create mode 100644 i18n/zh-tw.toml diff --git a/config.toml b/config.toml index 7ecb318d9c..fdc72a301b 100644 --- a/config.toml +++ b/config.toml @@ -130,6 +130,12 @@ languageName ="اردو(Urdu)" contentDir = "content/ur" weight = 10 +[languages.zh-tw] +title = "Cloud Native(雲原生) Glossary" +description = "CNCF 雲原生 Glossary 專案旨在用作討論雲原生應用程式時常用術語的參考" +languageName ="繁體中文(Traditional Chinese)" +contentDir = "content/zh-tw" +weight = 11 [markup] [markup.goldmark] diff --git a/content/zh-tw/_index.md b/content/zh-tw/_index.md new file mode 100644 index 0000000000..0d891b39d6 --- /dev/null +++ b/content/zh-tw/_index.md @@ -0,0 +1,46 @@ +--- +title: "雲原生詞彙表" +status: Completed +--- + +# 雲原生詞彙表 {#cloud-native-glossary} + +雲原生詞彙表旨在通過使人們更容易理解來使雲原生領域 — 以其複雜而聞名 — 變得更簡單,不僅適用於技術人員,還適用於商業人員。 +為了實現這一目標,我們注重簡潔(例如,使用不帶行話的簡單語言,使用任何使用技術的人都可以相關的示例,省略不必要的細節)。 +本詞彙表是由 CNCF 商業價值小組(Business Value Subcommittee; BVS)領導的專案。 + +

People watching a Kubecon presentation

+ +## 貢獻 {#contributing} + +歡迎所有人對雲原生詞彙表提出更改、補充和改進。 +我們採用由 CNCF 管理的社群驅動的流程來開發和改進這個共享詞彙表。 +詞彙表提供了一個供所有參與者使用的供應商中立平台,以組織雲原生技術的共享詞彙。 +歡迎所有遵守本專案宗旨和章程的參與者做出貢獻。 + +任何希望做出貢獻的人都可以提交 GitHub 議題或創建拉取請求。 +請確保您遵循[風格指南](/zh-tw/style-guide/),閱讀[如何貢獻](/zh-tw/contribute/)文檔,並加入 CNCF Slack上的[#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB)頻道。 +也有一個 [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF)頻道,供那些想將詞彙表翻譯為其本地化語言的人使用。 + +## 致謝 {#acknowledgements} + +雲原生詞彙表由 CNCF 行銷委員會 (CNCF Marketing Committee)(商業價值小組委員會)發起,包括來自 +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/)、 +[Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/)、 +[Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk)、 +[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/)、 +[Katelin Ramer](https://www.linkedin.com/in/katelinramer/)、 +[Mike Foster](https://www.linkedin.com/in/mfosterche/?originalSubdomain=ca)和許多的貢獻者。 +如想獲得完整的貢獻者名單,請參考[此 GitHub page](https://github.com/cncf/glossary/graphs/contributors)。 + +詞彙表主要維護由 +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/)、 +[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/)、 +[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/)、 +[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/) +和 [Seokho Son](https://www.linkedin.com/in/seokho-son/)。 + +## 授權條款 {#license} + +所有程式碼貢獻都在 Apache 2.0 許可下。 +文檔在 CC BY 4.0 下發布。 diff --git a/content/zh-tw/cloud-native-tech.md b/content/zh-tw/cloud-native-tech.md new file mode 100644 index 0000000000..8c9f7f6d40 --- /dev/null +++ b/content/zh-tw/cloud-native-tech.md @@ -0,0 +1,25 @@ +--- +title: 雲原生技術 +status: Completed +category: 概念 +tags: ["基本原理", "", ""] +--- + +## 什麼是雲原生技術 {#what-it-is} + +雲原生技術,也稱為雲原生技術棧,是用於構建[雲原生應用程式](/zh-tw/cloud-native-apps/)的技術。 +這些技術使組織能夠在現代和動態環境中構建和運行可擴展的應用程式,例如公有、私有和混合雲,同時充分利用[雲計算](/zh-tw/cloud-computing/)的好處。 +它們從頭開始設計,以利用雲計算和容器,服務網格、微服務和不可變基礎架構的能力。 + +## 解決的問題 {#problem-it-addresses} + +雲原生技術棧有許多不同的技術類別,解決了各種挑戰。 +如果您查看 [CNCF Cloud Native Landscape](https://landscape.cncf.io/),您將看到它涉及許多不同領域。 +但從高層次上看,它們解決了一組主要的挑戰:傳統 IT 操作模型的缺點。 +挑戰包括難以創建可擴展、容錯、自我修復的應用程式,以及低效的資源利用率,等等。 + +## 如何幫助 {#how-it-helps} + +雖然每種技術都解決了非常具體的問題,但作為一組,雲原生技術使鬆散耦合的系統具有彈性、可管理和可觀察性。 +結合堅強的自動化,它們允許工程師頻繁且可預測地進行高影響的更改,並減少不必要的工作。 +雲原生技術棧有助於實現雲原生系統的期望特性。 diff --git a/content/zh-tw/contribute/_index.md b/content/zh-tw/contribute/_index.md new file mode 100644 index 0000000000..72f8061387 --- /dev/null +++ b/content/zh-tw/contribute/_index.md @@ -0,0 +1,221 @@ +--- +title: 如何貢獻 +toc_hide: true +status: Completed +menu: + main: + weight: 10 +--- + +## 歡迎 + +歡迎使用 Cloud Native Glossary 的貢獻指南,感謝您的關注。 +您可以透過以下方式參與貢獻,我們將在此進行詳細說明: + +1) [處理現有議題](#work-on-an-existing-issue) +2) [提出新術語](#propose-new-terms) +3) [更新現有術語](#update-an-existing-term) +4) [本地化術語表](#help-localize-the-glossary) + +## CNCF Glossary 概述 + +該 Glossary 的目標是簡化複雜的雲原生領域,使其更容易被人們理解和使用。 + +Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.com/cncf/glossary) 中, +您可以在那裡找到有關 Glossary 的[議題](https://github.com/cncf/glossary/issues)、拉取請求(([PRs](https://github.com/cncf/glossary/pulls))和 +[討論](https://github.com/cncf/glossary/discussions)。 + +## 誰可以貢獻? + +您如何參與此專案取決於您的雲原生專業知識水準。 +簡化複雜的概念需要對該主題有深入的了解。 +因此,要貢獻新術語,您必須精通該主題。 +貢獻者通常是在這些技術上工作了一段時間的工程師或專注於雲原生的學者。 + +專業知識是必需的,因為用簡單的話語解釋複雜的概念 _真的_ 很難。而且,儘管易於理解的結果可能看起來很簡單,但達到所需的簡單性需要雲原生專家之間的努力和協作。 + +如果您尚未成為雲原生專家但仍想貢獻,我們建議與專家合作。 +一旦專家確信術語準確描述概念,您就可以做出第一個 Glossary 貢獻。 + +本地化是初學者可以為 Glossary 提供有價值貢獻的地方。 +在英語中有堅實的現有定義的情況下,經驗較少的貢獻者可以將術語本地化到目標語言。您可以加入現有的本地化團隊或創建新的本地化團隊。閱讀本指南的[幫助本地化 Glossary](#help-localize-the-glossary)章節,了解如何開始。 + +## 開始之前 + +在開始您的 Glossary 貢獻之前,請確認完成以下步驟: + +1. 建立 [GitHub 帳號](https://docs.github.com/zh/get-started/signing-up-for-github/signing-up-for-a-new-github-account),如果您還沒有的話。 +2. 簽署[貢獻者授權協議(Contributor License Agreement)](https://docs.linuxfoundation.org/lfx/easycla/v2-current/contributors) (CLA)。 +3. [驗證您的提交簽名](https://docs.github.com/zh/authentication/managing-commit-signature-verification/about-commit-signature-verification)。 +4. 啟用 [vigilant mode](https://docs.github.com/zh/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode)在您的 GitHub 帳戶上,以顯示 "Verified" 狀態在您的提交上。 + +## 最佳實踐 {#best-practices} + +為了方便審核過程,請使用 [semantic line breaks](https://sembr.org/)(例如,每句話一行)。 +我們建議查看這份 [markdown cheat sheet](https://www.markdownguide.org/cheat-sheet/) 以正確地在 GitHub 中格式化 Markdown 文本(例如,超連結、粗體、斜體)。 +並且在命名 .md 文件時,請使用小寫字母和連字符而不是空格來分隔議題,避免使用括號。 + +## 樣式指南 + +閱讀我們的[樣式指南](/zh-tw/style-guide/) 以了解我們的格式和撰寫文件的指南,使貢獻流程更加高效。 + +## 加入 Glossary 社群! {#join-the-glossary-community} + +如果您想定期貢獻,請考慮加入我們的 Glossary 工作組月會。 +您可以在 [CNCF 行事曆](https://www.cncf.io/calendar/) 中找到會議詳細資訊。 +您也可以在 CNCF Slack 的 [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) 頻道中與維護人員和其他貢獻者聯繫 - 我們很樂意認識您! + +## 在現有議題上進行工作 {#work-on-an-existing-issue} + +前往[Glossary GitHub 存儲庫的議題](https://github.com/cncf/glossary/issues)找到可用議題列表。您可以使用標籤(例如,英語語言、需要幫助、良好的第一個議題)過濾議題。 + +![議題和標籤](/images/how-to/issue-and-labels.png) + +確保您選擇的術語還沒有被分配給任何人。例如,您可以看到前三個術語是可用的,而第四個術語已被分配。 + +![分配術語](/images/how-to/howto-04.png) + +選擇一個要處理的術語後,在該議題上發表評論。 + +![聲明議題](/images/how-to/claiming-an-issue.png) + +此外,請在 CNCF Slack 工作區的 [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) 頻道中通知維護者 +並標記 _@Catherine Paganini_, _@Seokho Son_, _@Jihoon Seo_, 和/或 _@iamnoah_,以確保他們不會錯過它。 + +有關下一步,請參閱[提交新術語(創建 PR)](#submitting-a-new-term) 部分。 + +**注意**:您只能在維護人員將議題分配給您後開始處理議題。 +您一次只能聲明一個術語。 +處理多個術語是有連續性的,必須在聲明下一個術語之前完成當前術語。 + +## 提議新術語 {#propose-new-terms} + +您可以提出新術語供他人研究,或自己創建新定義。 +不管哪種方式,您都需要從[新增議題](#creating-an-issue)開始。 +每個新術語必須符合 [CNCF的雲原生定義](https://github.com/cncf/toc/blob/main/DEFINITION.md)才能被添加到 glossary 中。 +唯一的例外是理解雲原生概念所需的基礎術語。 + +以下是對於不熟悉 GitHub 的人的逐步指南。 +**如果您是 GitHub 專家**,請掃描本指南以獲取有關以下主題的足夠資訊: + +1. 定位議題和新術語的樣板。 +2. 聲明議題。 +3. 解決[拼寫檢查](#spell-check)失敗的問題。 + +### 新增議題 {#creating-an-issue} + +前往 [Glossary GitHub 存儲庫](https://github.com/cncf/glossary/issues)議題,然後點擊 "New issue"。 + +![議題](/images/how-to/howto-01.png) + +從樣板列表中選擇 "Request to add a new term (English)"。 + +![樣板](/images/how-to/english-issue-template.jpg) + +添加您建議的單字,回答議題,勾選方框,然後點擊 "Submit new issue"。 +如果您只是提出新術語,那麼您已經完成了!如果您想要創建定義,請繼續閱讀。 + +### 緊急處理您的議題 {#triaging-your-issue} + +接下來,維護者將會進行緊急處理。這意味著他們將評估該術語是否應該成為 Glossary 的一部分。 +並不是每個術語都會被批准。若要納入 Glossary,它們應該是建立且廣泛使用的雲原生概念。 + +請讓維護者知道您已在 Slack 上提出新術語並標記 _@Catherine Paganini_、_@Seokho Son_、_@Jihoon Seo_ 和/或 _@iamnoah_,以便他們不會錯過。 +如果您想編寫定義,請讓維護者知道,他們會指派它給您。 + +### 提交新術語(創建 PR){#submitting-a-new-term} + +如我們的[風格指南](/zh-tw/style-guide/)所述,我們強烈建議先使用Google 文檔或 Word 文檔進行起草。 + +一旦術語準備好提交,請轉到 content(在<>程式碼下)… + +![content](/images/how-to/howto-05.png) + +…然後轉到 "zh-tw" 或您要貢獻的語言的前兩個字母… + +![語言文件夾](/images/how-to/howto-06.png) + +…並選擇 `_TEMPLATE.md` + +![樣板](/images/how-to/howto-07.png) + +複製內容… + +![複製內容](/images/how-to/howto-08.png) + +…然後返回 "zh-tw" 文件夾。單擊 "Add file" 並選擇 "Create new file"。 + +![創建新文件](/images/how-to/howto-09.png) + +按照[最佳實踐](#best-practices)中所述,在 URL 中添加術語的名稱。在名稱的末尾添加 .md 副檔名(如果沒有此副檔名,您將無法預覽文件)。 +現在在下面的部分中粘貼樣板內容。將定義文本的內容複製並粘貼到文件中。為了驗證您已按照[最佳實踐](#best-practices)中所述使用 Markdown,請單擊 "Preview"。 + +![最終確定術語](/images/how-to/howto-10.png) + +向下滾動並為新提交的文件命名。當您準備好提交時,請點擊 "Commit new file" + +![完成術語](/images/how-to/howto-10.png) + +往下滾動並為新提交的檔案命名。當您準備好提交時,點擊 "Commit new file" 按鈕... + +![提交新檔案](/images/how-to/howto-11.png) + +...現在您已準備好創建新的 PR: + +![創建 PR](/images/how-to/howto-12.png) + +當您按下 "Create pull request" 按鈕時,您的 PR 應顯示在 "Pull requests" 標籤中。 + +![PRs](/images/how-to/howto-13.png) + +## 更新現有術語 {#update-an-existing-term} + +要更新現有術語,您可以通過新增議題要求更改, +或可以自行進行更改並提交 PR。 + +### 透過議題要求更改 {#request-a-change-via-an-issue} + +如果您想要標記術語的議題,您可以使用 CNCF Glossary 網頁的 "Report issue" 選項。 +在您想要標記的概念的 CNCF 頁面上定位自己,然後點擊 "Report issue"。 +這會自動為您打開一個議題 + +![報告議題](/images/how-to/howto-14.png) + +請描述您的建議以及為什麼需要它們。點擊提交,就完成了。 + +![提交議題](/images/how-to/howto-15.png) + +### 直接更新術語 {#update-a-term-directly} + +若要修改術語並提交建議,請點擊 "Edit this page."。 + +![編輯此頁面](/images/how-to/howto-16.png) + +這將打開術語的 GitHub 頁面。進行修改並建立 PR。 +請參考上面的[最佳實踐](#best-practices)部分, +並閱讀我們的[樣式指南](/zh-tw/style-guide/)以確保您遵循我們的指南。 + +## 幫助本地化術語表 {#help-localize-the-glossary} + +如果要幫助將術語表本地化為目標語言,請加入 CNCF Slack 工作區中的[#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF)頻道,然後發送消息給我們。 +您可以加入現有團隊或創建新團隊 +(要查看需要什麼,請閱讀我們的[本地化指南](https://github.com/cncf/glossary/blob/main/LOCALIZATION.md))。 +請閱讀目標語言的**如何貢獻**指南,以了解該團隊的具體貢獻流程。 + +## 拼寫檢查 {#spell-check} + +拼寫檢查可能失敗的兩個主要原因: + +- PR 中包含拼寫錯誤。 +- PR 中包含未在單字列表中註冊的單字。 + +要將新單字添加到列表中,請按照以下步驟進行操作: + +1. 在您的 PR 中,找到 "wordlist.txt" 文件。 +2. 點擊 "Edit this file" 並按字母順序添加缺少的單字。 +3. 添加提交消息,然後選擇 "Sign off and propose changes"。 + +**注意**:拼寫檢查不區分大小寫。 + + +**我們基於[The Good Docs Project](https://thegooddocsproject.dev/)的樣板更新了此指南。** diff --git a/content/zh-tw/contributor-ladder/_index.md b/content/zh-tw/contributor-ladder/_index.md new file mode 100644 index 0000000000..7bf5d14e1e --- /dev/null +++ b/content/zh-tw/contributor-ladder/_index.md @@ -0,0 +1,122 @@ +--- +title: 貢獻者階梯 +toc_hide: true +status: Completed +menu: + main: + weight: 10 +--- + +嗨!👋 感謝您對貢獻 CNCF 雲原生 Glossary 專案感到興趣。 +無論您貢獻新術語、協助本地化 Glossary 成為您的母語, +或者想要幫助他人入門,都有很多方式成為此社群的活躍成員。 +本文檔概述了專案中的不同貢獻者角色以及隨之而來的職責和權限。 + +## 1. 貢獻者 {#contributors} + +Glossary 歡迎所有人參與。任何人只要有貢獻都可以成為 Glossary 的貢獻者。所有貢獻者都應遵守 [CNCF 行為準則](https://github.com/cncf/foundation/blob/main/code-of-conduct.md)。 + +有多種方式可以貢獻此專案,包括: + +- **內容貢獻者**:改進現有術語或新增術語的所有人, +- **本地化貢獻者**:協助將 Glossary 翻譯成另一種語言的人, +- **幫助者**:在 GitHub、Slack 或其他社群成員需要支援時協助他人的人, +- **大使**:幫忙傳達訊息、教育社群如何貢獻,以及為什麼他們應該這麼做的任何人。 + +貢獻者可以擔任多個角色或僅專注於一個領域。 +**所有這些貢獻同等重要**和有助於促進繁榮的社群。 +有關內容和本地化貢獻,請參閱[如何貢獻](/zh-tw/contribute/)和[風格指南](/zh-tw/style-guide/)。 + +## 2. 審核者 {#approvers} + +審核者提供 PR 的回饋並核准他們。任何活躍的貢獻者都可以成為審核者(參見[成為審核者](#becoming-an-approvers))。 +Glossary 區分兩種審核者:(1)英文 Glossary 的審核者和(2)本地化團隊的審核者。 + +Glossary 審核者應該: + +- 審核 PR 的技術準確性, +- 分配貢獻者議題並適當地標記他們, +- 為貢獻者提供反饋並在需要時指導他們, +- 校對和編輯提交。 + +如果審核者不再感興趣或無法執行上述職責,他們應讓維護人員知道並下台。 + +### 英文 Glossary 審核者 {#english-glossary-approvers} + +有三種類型的審核者: + +1)擁有強大技術背景的審核者, +2)具有扎實的寫作能力的審核者, +3)精通兩者的審核者。 + +**技術審核者**:具有強大技術背景的人可以成為審核者,而不必具備扎實的英文寫作能力。但是,如果他們基於技術的優點核准了 PR,則必須確保經由一位(編輯)審核者進行了審核。 + +**編輯者**:編輯人員校對術語並確保其根據樣式指南用簡單的語言解釋。如果術語被大量編輯,編輯人員必須要求技術審核者再次審核,以確保含義未被更改。 + +### 本地化審核者 {#localization-approvers} + +Glossary 還有本地化審核者。這些是本地化團隊(翻譯 Glossary 的團隊)之一的審核者。 +本地化審核者僅允許為其自己的團隊執行核准任務,並有能力將 PR 合併到其專屬的開發分支。 +任何本地化審核者都可以成為英文 Glossary 的審核者,如果符合要求的話。 + +### 成為審核者 {#becoming-an-approvers} + +批准者候選人應該有提交高品質 PR 和幫助其他人使他們的 PR 處於可合併狀態的良好記錄。 +如果他們的時區允許,他們還應定期參加 [Glossary 工作組會議](https://www.cncf.io/calendar/)。 + +要成為審核者,首先要向現有維護者表達興趣。 +現有維護者將要求您在其指導下貢獻 PR,進行審核以及執行其他此類任務,以展示上述資格。 +在一段時間的合作後,維護者將決定是否授予您審核者員身份。 +這個決定將基於您展示的熟練程度和積極應對。 + +## 3. 維護者 {#maintainers} + +維護者是可以批准並合併 PR 的審核者。任何人都可以成為 Glossary 的維護者(參見[成為維護者](#becoming-a-maintainer))。 +維護者有一些期望,包括: + +- 成為一個積極和負責任的審核者(參見上文), +- 幫助維護存儲庫,包括網站配置、權限、議題-模板、GitHub 工作流程等, +- 監控 Glossary Slack 頻道,並在可能的情況下提供幫助, +- 定期參加 [Glossary 工作組會議](https://www.cncf.io/calendar/)(如果時區允許)。 + +如果一個維護者不再對上述職責感興趣或不能執行,則應自行移動到名譽狀態。 + +### 成為維護者 {#becoming-an-maintainers} + +維護者應該有成功的審核者和提交高品質 PR 的良好記錄。 +如果時區允許,他們還應該定期參加 Glossary 工作組會議。 + +要成為維護者,首先要向現有的維護者表達興趣。 +現有的維護者然後會要求您在他們的指導下展示上述資格,包括提交 PR、進行審核和執行其他任務。 +經過一段時間的合作,維護者將決定是否授予維護者身份。 +這個決定將基於您展示的熟練程度和反應能力。 + +## 4. 社群經理 {#community-managers} + +社群經理協助培育一個友好且引人入勝的社群。任何社群成員都可以成為社群經理。他們有以下職責: + +- 歡迎新成員並確保他們獲得所需資訊, +- 協助回答社群問題或尋找能夠提供幫助的人, +- 監控 Slack 上的對話。 + +### 成為社群經理 {#becoming-an-community-managers} + +任何人都可以成為 Glossary 社群經理。 +社群經理必須對貢獻和本地化流程有扎實的理解,並喜歡與他人互動並提供幫助。 +要成為社區經理,首先要向現有維護者表達興趣。 +在入職/試用期後,維護人員將根據表現決定是否授予社群經理身份。 + +## 強制移除 {#involuntary-removal} + +當貢獻者未能履行職責和要求時,將發生強制移除。 +這可能包括反覆無效活動,延長的無效活動期以及/或違反行為準則。 +此過程很重要,因為保護了社群及其成果,同時也開放了機會讓新的貢獻者加入。 + +## 卸任/名譽流程 {#stepping-down-emeritus-Process} + +如果和當貢獻者的承諾級別改變, +貢獻者可以考慮卸任(降低貢獻者階層)與轉為名譽狀態(完全退出專案)。 + +## 重回角色 {#stepping-back-into-a-role} + +如果有人可以重回之前的貢獻者角色,專案領導者可以安排並考慮此事。 diff --git a/content/zh-tw/style-guide/_index.md b/content/zh-tw/style-guide/_index.md new file mode 100644 index 0000000000..e7b2121c23 --- /dev/null +++ b/content/zh-tw/style-guide/_index.md @@ -0,0 +1,183 @@ +--- +title: 風格指南 +toc_hide: true +status: Completed +menu: + main: + weight: 10 +--- + +以下的風格指南旨在幫助你了解雲原生 Glossary 的定義結構,並在整個過程中保持一致的風格。 + +雲原生詞彙遵循位於 CNCF 資源庫中的[預設風格指南](https://github.com/cncf/foundation/blob/master/style-guide.md)。 +此外,它還遵循以下規則: + +1. 使用簡單、易懂的語言,避免技術術語和流行語 +2. [避免使用俚語](https://en.wikipedia.org/wiki/Colloquialism) +3. [使用字面和具體的語言](https://guidetogrammar.org/grammar/composition/abstract.htm) +4. [省略縮略語](https://en.wikipedia.org/wiki/Contraction_(grammar)) +5. [少用被動語態](https://www.ef.com/ca/english-resources/english-grammar/passive-voice/) +6. [力求以積極的形式表述](https://examples.yourdictionary.com/positive-sentence-examples.html) +7. [引號外不加感歎號](https://www.grammarly.com/blog/exclamation-mark/) +8. 不要誇大其詞 +9. 避免重複 +10. 要簡明扼要 + +## 受眾 + +本 Glossary 是針對技術和非技術人員編寫的。 +請確保定義使用簡單的術語並不要假定技術知識。有關定義的更多細節請參閱下面的“定義”部分。 + + +## 最小可行定義 + +我們的目標是讓任何人都能夠輕鬆理解雲原生術語。 +因此,我們專注於簡潔明瞭。 +這意味著使用清晰簡單的語言,並提供任何使用技術的人都可以理解的示例(下面更多內容),同時提供一個*最小可行定義*,至少從技術角度上來說。 +我們不希望省略上下文和示例 — 畢竟,這些東西可以幫助讀者理解概念 — 但如果技術細節不需要理解它,我們就會跳過它。 +目標不是讓事情變得過於複雜。一旦讀者了解了基本概念,其他資源將有助於他們進一步深入挖掘。 +這部分超出了本 Glossary 的範圍。 + +## 定義樣板 + +每個 Glossary 術語都存儲在一個 markdown 文件中,並遵循這個樣板: + +```md +--- +title: +status: +category: +--- + +## 是什麼 + +對該技術或概念的快速總結。 + +## 解決的問題 + +關於它所解決的問題的幾句話。 + +## 如何幫助 + +用幾句話說明這個東西是如何解決問題的。 +``` + +### 標題 + +**title** label 將始終位於定義布局的頂部,其值應使用標題大小寫。 + +```md +--- +title: 定義樣板 +``` + +### 狀態 + +**status** label 將出現在 title label 之後。status label 表明定義是經過徹底審查還是未完成的。 + +有效值: + +- Completed +- Feedback Appreciated +- Not Started + +你可以隨時對一個已完成的定義提出議題。當一個定義處於變化中時,它的狀態將被改變為 *Feedback Appreciated*。 + +```md +--- +title: 定義模版 +status: Feedback Appreciated +``` + +### Tags + +**tag** label 跟隨著 status label。 +為了讓 tag 有意義且對使用者有幫助,我們將嚴格使用它們。 +應用太多的 tag 只會削弱其意義。 +除了 "fundamental",它僅表示需要理解其他雲原生概念的術語,大多數術語可能只有一個 tag。 + +**注意**:請勿在未經維護者批准的情況下引入新 tag。在為條目添加 tag 時,請確保它們的拼寫與下面列出的完全相同(單數,無錯字)。 + +目前的 tag 有: + +- application +- architecture +- fundamental +- infrastructure +- methodology +- networking +- property +- security + +```md +--- +title: 定義樣板 +status: Feedback Appreciated +tags: ["tag 1"], ["tag 2"] +--- +``` + +### 定義 + +#### 三個小標題 + +**技術**和**概念**類別的定義包含三個小標題。 + +- **是什麼**:對我們正在談論的內容提供一個簡短而清晰的概述。 +- **解決的問題**:關注問題,而不是解決方案(這在下一節會有)。事實上,避免提及所定義的術語。問題的重點是 *什麼* 導致我們需要那個東西。 +- **如何幫助**:現在,回到這個術語上。它是如何解決上面描述的問題的? + +注意,**屬性** 不需要單獨的章節。一個定義就足夠了。 + +為了便於審查,請使用**語義的換行符**(每行一句話)。 + +#### 品質至上 + +如果被合併,你的提交將成為該術語的 CNCF 官方定義(直到其他人改進它)。 +創建一個符合 CNCF 高標準的術語不能操之過急,品質則需要時間和努力。 + +**做你的研究**:即使你確信你知道這個術語,也要驗證你是否得到了它。 +我們經常在組織中以某種方式使用術語,但這可能並不反映全貌。 +當你做研究時,特別是當你對這個術語不是 100% 熟悉時,要使用多種資源。 +許多定義是片面的,尤其是由供應商提供的定義。Glossary 必須包含供應商中立的、全球公認的定義。 + +**不要盜竊**:同樣的規則適用於 Glossary 和任何其他嚴肅的出版物。 +不要複製和粘貼其他人的作品,除非你是引用和貢獻給他們的。 +如果你喜歡某個定義的某個部分,請用你自己的話來轉述它。 + +**參考權威資源**:在可能的情況下,連接到權威的資源,如專案文件。 +注意,我們不能連接到供應商開發的內容。 + +#### 保持簡單 + +本 Glossary 旨在 **用簡單的文字解釋複雜的概念** --這是一項令人驚訝的艱巨任務,可能需要多次修訂。 +在起草你的定義時,要始終牢記受眾。避免使用行業術語和流行語--你可能會發現自己又回到了這些術語和流行語,而且可能需要自動更正。 + +在適當的時候,使用 **現實世界的例子**,幫助讀者(尤其是非技術性的)更好地理解你所解釋的概念在 *什麼時候* 和 *為什麼* 是相關的。 + +當在你的定義中使用時,一定要 **連接到現有的 glossary 術語**(只有第一次提到的時候應該有超鏈接)。 + +**例子**:看看[服務網格](/zh-tw/service_mesh/) 的"是什麼"部分。它鏈接到了微服務、服務、可靠性和可觀察性的定義。 +此外,它還使用了一個真實的例子,將微服務環境中的網路挑戰(非技術人員無法理解的問題)與 wifi 問題(使用筆記型電腦的人都能理解的問題)進行比較。 +在可能的情況下,嘗試建立這種聯繫。 + +#### 從 Google 或 Word 文件開始 + +我們建議從 Google 或 Word 文件開始,讓它靜置幾天,然後再重新審視。 +這將使你能夠抓住那些可以用更簡單和更容易理解的方式來表達的短語或表達方式。 +此外,確保在提交 PR 前進行拼寫檢查。 + +為了確保在工作期間沒有其他人提交 PR,請確保申請一個議題(或創建一個),並將其分配給你。更多資訊請參見[如何貢獻](/zh-tw/contribute/) 文檔。 + +在開始之前,請閱讀一些已發表的 Glossary 術語,以了解其詳細程度和難度,以及何時舉例合適。 + +## 評審過程:期待什麼 + +請注意,我們目前只有兩個維護者在業餘時間做這個工作。 +偶爾,我們會很快審查術語;在其他情況下,可能需要一些時間 — 我們感謝你的耐心。 +如果你有任何問題,請在 #glossary-localization-traditional-chinese Slack 頻道與我們聯繫(關於在哪裡以及如何找到該頻道,請參考我們的[如何貢獻](/zh-tw/contribute/) 文檔)。 + +我們的目標是讓雲原生 Glossary 成為盡可能最好的資源。 +一旦你提交了一個 PR,我們可能會要求進行一次或多次修改。 +不要感到沮喪 — 許多 PR 都是這樣的情況。 +這些來回的修改和我們的合作將確保你的貢獻成為一個真正有用的定義,被全球各地的讀者所閱讀和參考。 diff --git a/i18n/zh-tw.toml b/i18n/zh-tw.toml new file mode 100644 index 0000000000..4d4f3904b5 --- /dev/null +++ b/i18n/zh-tw.toml @@ -0,0 +1,87 @@ + + +# UI strings. Buttons and similar. + +[ui_pager_prev] +other = "上一頁" + +[ui_pager_next] +other = "下一頁" + +[ui_read_more] +other = "閱讀更多" + +[ui_search] +other = "搜尋本站..." + +# Used in sentences such as "Posted in News" +[ui_in] +other = "於" + +# Phrases for tags +[ui_see_all_tags] +other = "查看所有標籤" +[ui_tag] +other = "標籤" +[ui_tags] +other = "標籤" +[ui_search_by_tags] +other = "按標籤瀏覽" +[ui_tags_intro] +other = "我們已經將詞彙分類。使用篩選器按標籤瀏覽詞彙。" +[ui_or_search_by_tags] +other = "...或按標籤瀏覽" +[ui_select_all] +other = "全選" +[ui_deselect_all] +other = "全不選" + +# Footer text +[footer_all_rights_reserved] +other = "版權所有" + +[footer_privacy_policy] +other = "隱私政策" + +[footer_hub_button_text] +other = "所有 CNCF 網站" + +# Post (blog, articles etc.) +[post_byline_by] +other = "作者:" +[post_created] +other = "建立於" +[post_last_mod] +other = "最後編輯" +[post_edit_this] +other = "編輯此頁面" +[post_create_child_page] +other = "建立子頁面" +[post_create_issue] +other = "建立文件問題" +[post_create_project_issue] +other = "建立專案問題" +[post_posts_in] +other = "發佈於" +[post_reading_time] +other = "分鐘閱讀" + +# Print support +[print_printable_section] +other = "這是這個部分的多頁列印檢視。" +[print_click_to_print] +other = "點擊這裡列印" +[print_show_regular] +other = "返回此頁面的常規檢視" +[print_entire_section] +other = "列印整個部分" + +# Feedback section +[feedback_title] +other = "回饋" +[feedback_question] +other = "這個頁面對您有幫助嗎?" +[feedback_answer_yes] +other = "是" +[feedback_answer_no] +other = "否" From 5924c04c681245b19ac7b9ab385d92a92d9fb8e1 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Tue, 9 May 2023 09:33:37 +0200 Subject: [PATCH 066/295] [it] Localizzazione termine Service Discovery (#1885) * Added Service discovery italian localization Signed-off-by: Paolo * Apply suggestions from code review Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/service-discovery.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/it/service-discovery.md diff --git a/content/it/service-discovery.md b/content/it/service-discovery.md new file mode 100644 index 0000000000..f1ad1eb802 --- /dev/null +++ b/content/it/service-discovery.md @@ -0,0 +1,23 @@ +--- +title: Service Discovery +status: Completed +category: concetto +tags: ["networking", "", ""] +--- + +## Che cos'è + +Il service discovery è il processo di individuazione delle singole istanze che compongono un servizio. +Uno strumento di service discovery tiene traccia dei vari nodi o endpoint che compongono un servizio. + +## Quali problematiche affronta + +Le architetture cloud native sono dinamiche e fluide, ossia sono in costante cambiamento. +Un'applicazione [containerizzata](/it/containerization/) probabilmente partirà e si fermerà più volte durante il suo ciclo di vita. +Ogni volta che ciò accadrà, l'applicazione avrà un nuovo indirizzo: qualunque altra applicazione che vorrà individuarla avrà bisogno di un servizio che possa fornire le informazioni circa il suo nuovo indirizzo. + +## In che modo aiuta + +Il service discovery tiene traccia delle applicazioni all'interno del network in modo che ciascuna possa individuare le altre quando ne ha necessità. +Fornisce un unico punto comune nel quale trovare e potenzialmente identificare i singoli servizi. +I motori di service discovery sono strumenti simili a database, che archiviano informazioni su quali servizi esistono e su come individuarli. From 004a4a191031458227737d97030ad930ab3e4d52 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Tue, 9 May 2023 09:35:18 +0200 Subject: [PATCH 067/295] [it] Localizzazione termine mTLS (#1803) * Added mTLS Italian localization Signed-off-by: Paolo * Update content/it/mutual-transport-layer-security.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/mutual-transport-layer-security.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 content/it/mutual-transport-layer-security.md diff --git a/content/it/mutual-transport-layer-security.md b/content/it/mutual-transport-layer-security.md new file mode 100644 index 0000000000..9b19203c92 --- /dev/null +++ b/content/it/mutual-transport-layer-security.md @@ -0,0 +1,26 @@ +--- +title: Mutual Transport Layer Security (mTLS) +status: Completed +category: Concetto +tags: ["sicurezza", "networking", ""] +--- + +## Cos'è + +Il Mutual TLS (mTLS) è una tecnica utilizzata per autenticare e criptare i messaggi inviati tra due [servizi](/it/service/). +Il Mutual TLS è il protocollo [Transport Layer Security](/it/transport-layer-security/) (TLS) standard, +che permette la validazione dell'identità di entrambi gli estremi della connessione. + + +## Quali problematiche affronta + +I [microservizi](/it/microservices/) comunicano tramite una rete e, +proprio come in una rete Wi-Fi domestica, le comunicazioni in transito su quella rete possono essere violate. +Il mTLS assicura che nessun soggetto non autorizzato possa mettersi in ascolto o impersonare richieste legittime. + +## In che modo aiuta + +Il mTLS garantisce che il traffico sia sicuro e affidabile in entrambe le direzioni tra un client e il server,fornendo un livello di sicurezza per gli utenti che accedono a una rete o a delle applicazioni. +Inoltre, verifica le connessioni con dispositivi client che non seguono un processo di accesso, come i dispositivi Internet of Things (IoT). + +Gli attacchi come quelli on-path, spoofing, credential stuffing, brute force, ecc. possono essere prevenuti dal mTLS. From 97d8e3cd4fa4e4e826d5db2ae2ce90d8ccf63a3d Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Tue, 9 May 2023 16:10:46 +0200 Subject: [PATCH 068/295] [it] Localizzazione termine Kubernetes (#1833) * Added Kubernetes Italian localization Signed-off-by: Paolo * Apply suggestions from code review Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/kubernetes.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 content/it/kubernetes.md diff --git a/content/it/kubernetes.md b/content/it/kubernetes.md new file mode 100644 index 0000000000..d2e9c14c19 --- /dev/null +++ b/content/it/kubernetes.md @@ -0,0 +1,35 @@ +--- +title: Kubernetes +status: Completed +category: tecnologia +tags: ["infrastruttura", "fondamenti", ""] +--- + +## Che cos'è + +Kubernetes, spesso abbreviato in K8s, è un orchestratore di container open source. +Automatizza il ciclo di vita delle applicazioni containerizzate su infrastrutture moderne, fungendo da "sistema operativo per datacenter" che gestisce applicazioni su un [sistema distribuito](/it/distributed-systems/). + +Kubernetes esegue i [container](/it/container/) sui [nodi](/it/nodes/) all'interno di un [cluster](/it/cluster/), raggruppando diverse risorse di infrastruttura come i load balancer, archiviazione persistente, ecc. per eseguire applicazioni containerizzate. + +Kubernetes abilita automazione ed estensibilità, permettendo agli utenti di rilasciare applicazioni in modo dichiarativo (vedi sotto) in maniera riproducibile. +Le capacità di Kubernetes possono essere estese attraverso le sue [API](/it/application-programming-interface/), permettendo agli utilizzatori esperti di Kubernetes di sfruttare le sue capacità di automazione secondo le loro necessità. + +## Quali problematiche affronta + +L'automazione dell'infrastruttura e la gestione delle configurazioni in modo dichiarativo sono concetti importanti da diverso tempo, ma sono diventati sempre più importanti da quando il [cloud computing](/it/cloud-computing/) ha cominciato a diffondersi. +Man mano che la richiesta di risorse computazionali aumenta e le organizzazioni hanno bisogno di fornire più capacità operative con meno ingegneri, servono nuove tecnologie e nuovi metodi di lavoro. + +## In che modo aiuta + +Analogamente agli strumenti tradizionali di [infrastructure as code](/it/infrastructure-as-code/), Kubernetes aiuta con l'automazione e ha il vantaggio di lavorare con i container. +I container sono meno inclini ai disallineamenti di configurazione rispetto a macchine [virtuali](/it/virtual-machine/) o fisiche. + +Inoltre, Kubernetes lavora in maniera dichiarativa: ciò significa che invece di avere operatori che istruiscono la macchina su come fare qualcosa, descrivono — di solito tramite file manifest (per esempio YAML) — come l'infrastruttura dovrebbe essere. +Kubernetes poi si occupa del "come" renderla tale. +Questo permette a Kubernetes di essere altamente compatibilie con l'infrastructure as code. + +Kubernetes ha anche capacità di [self-healing](/it/self-healing/). +Lo stato reale del cluster corrisponderà sempre con lo stato desiderato dell'operatore. +Se Kubernetes individua una disparità rispetto a quanto scritto nel file manifest, un controller Kubernetes si attiva e lo sistema. +Mentre l'infrastruttura utilizzata da Kubernetes può essere in continua evoluzione, Kubernetes si adatta costantemente e automaticamente ai cambiamenti e garantisce la corrispondenza con lo stato desiderato. From 84c2daaa249e9b26c3739602ec0c831a501525e6 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Tue, 9 May 2023 16:11:13 +0200 Subject: [PATCH 069/295] [it] Localizzazione termine Bare Metal Machine (#1756) * Added Bare Metal Machine Italian localization Signed-off-by: Paolo * Update content/it/bare-metal-machine.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/bare-metal-machine.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/bare-metal-machine.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/bare-metal-machine.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/bare-metal-machine.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/bare-metal-machine.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/bare-metal-machine.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/it/bare-metal-machine.md diff --git a/content/it/bare-metal-machine.md b/content/it/bare-metal-machine.md new file mode 100644 index 0000000000..20cdc46b2a --- /dev/null +++ b/content/it/bare-metal-machine.md @@ -0,0 +1,30 @@ +--- +title: Macchina Bare Metal +status: Completed +category: tecnologia +tags: ["infrastruttura", "", ""] +--- + +## Cos'è + +Bare metal (puro metallo) si riferisce a un computer fisico, più specificamente un server, che ha uno e un solo sistema operativo. +Nell'informatica moderna questa distinzione è importante perché molti, se non la maggior parte, dei server sono [macchine virtuali](/it/virtual-machine/). +Un server fisico è tipicamente un computer di grandi dimensioni con un hardware potente. +Installare un sistema operativo ed eseguire le applicazioni direttamente su quell'hardware fisico senza [virtualizzazione](/it/virtualization/), si definisce come in esecuzione su “bare metal”. + +## Quali problematiche affronta + +Accoppiare un sistema operativo con un computer fisico è il modello originale dell'informatica. +Tutte le risorse del computer fisico sono direttamente disponibili per il sistema operativo, e, senza livelli di virtualizzazione, non si introduce ritardo nella traduzione delle istruzione del sistema operativo all'hardware. + +## In che modo aiuta + +Dedicando tutte le risorse computazionali di un computer a un singolo sistema operativo si fornisce potenzialmente la miglior performance possibile al sistema operativo. +Se è necessario eseguire un carico di lavoro che deve avere un accesso estremamente veloce alle risorse hardware, allora il bare metal può essere la giusta soluzione. + +Nel contesto di [applicazioni cloud native](/it/cloud-native-apps/), +generalmente si pensa alle performance in termini di [scalabilità](/it/scalability/) a un numero più alto di eventi concomitanti, +che possono essere gestiti utilizzando la proprietà di [scalabilità orizzontale](/it/horizontal-scaling/) (aggiungendo più macchine al pool di risorse). +Alcuni carichi di lavoro possono richiedere di utilizzare la [scalabilità verticale](/it/vertical-scaling/) (aggiungendo più potenza a una macchina fisica esistente); +e/o una risposta hardware estremamente veloce, e in questi casi il bare metal è più indicato. +Il bare metal permette anche di regolare l'hardware fisico ed eventualmente anche i driver hardware per aiutare a raggiungere l'obiettivo. From 21658fb688fca3b360e0ad55c4e8c77f7150eace Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Wed, 10 May 2023 09:48:17 +0200 Subject: [PATCH 070/295] [it] Localizzazione Application Programming Interface (API) (#1619) * Added API italian localization Signed-off-by: Paolo * Update content/it/application-programming-interface.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/application-programming-interface.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- .../it/application-programming-interface.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 content/it/application-programming-interface.md diff --git a/content/it/application-programming-interface.md b/content/it/application-programming-interface.md new file mode 100644 index 0000000000..0f154460ed --- /dev/null +++ b/content/it/application-programming-interface.md @@ -0,0 +1,26 @@ +--- +title: Application Programming Interface (API) +status: Completed +category: tecnologia +tags: ["architettura", "", ""] +--- + +## Cos'è + +Un'API è un modo tramite il quale dei programmi informatici possono interagire tra di loro. +Proprio come gli umani interagiscono con un sito tramite una pagina web, un'API permette ai programmi informatici di interagire gli uni con gli altri. +A differenza delle interazioni umane, le API hanno delle limitazioni su cosa si può o non si può chiedere loro. +Avere un limite alle interazioni aiuta a creare una comunicazione stabile e funzionale tra programmi. + +## Quali problematiche affronta + +Man mano che le applicazioni diventano sempre più complesse, piccoli cambiamenti nel codice possono avere un effetto dirompente su altre funzionalità. +Le applicazioni hanno bisogno di un approccio modulare alle loro funzionailtà se vogliono crescere e allo stesso tempo mantenere la stabilità. +Senza API mancherebbe un framework per l'interazione tra applicazioni. +Senza un framework condiviso, per le applicazioni è difficile implementare la [scalabilità](/it/scalability/) e integrarsi. + +## In che modo aiuta + +Le API permettono ai programmi o alle applicazioni di interagire e condividere informazioni in modo definito e comprensibile. +Sono gli elementi costitutivi delle moderne applicazioni e forniscono agli sviluppatori un modo per integrarle tra loro. +Ogni volta che si dice che i [microservizi](/it/microservices/) lavorano insieme, si può assumere che interagiscano tramite un'API. From c73eae367fb1c033f7e2a442a986c5638a5f7b38 Mon Sep 17 00:00:00 2001 From: sistella <56387955+sistella@users.noreply.github.com> Date: Wed, 10 May 2023 16:03:34 +0200 Subject: [PATCH 071/295] fix continuous delivery filename and links - italian (#2014) Signed-off-by: Simone Stella --- .../it/{continuous-delivery(CD).md => continuous-delivery.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename content/it/{continuous-delivery(CD).md => continuous-delivery.md} (96%) diff --git a/content/it/continuous-delivery(CD).md b/content/it/continuous-delivery.md similarity index 96% rename from content/it/continuous-delivery(CD).md rename to content/it/continuous-delivery.md index 2e4df57c16..765c2fe3b4 100644 --- a/content/it/continuous-delivery(CD).md +++ b/content/it/continuous-delivery.md @@ -11,4 +11,4 @@ La _Continuous Delivery_ (rilascio continuo), spesso abbreviata in CD, è un ins La distribuzione di aggiornamenti [affidabili](/it/reliability/) diventa un problema su vasta scala. Idealmente, bisognerebbe distribuire più frequentemente per offrire un maggiore valore agli utenti finali. Tuttavia, farlo manualmente si traduce in costi di transazione elevati per ogni modifica. Storicamente, per evitare questi costi, le organizzazioni hanno rilasciato meno frequentemente, implementando più modifiche contemporaneamente e aumentando il rischio che qualcosa andasse storto. ## In che modo aiuta -Le strategie CD creano un processo completamente automatizzato fino in produzione, che testa e distribuisce il software utilizzando varie strategie di distribuzione come le versioni [canary](/it/canary_deployment/) o [blue-green](/it/blue_green_deployment/). Ciò consente agli sviluppatori di distribuire codice frequentemente, garantendo loro la tranquillità che la nuova revisione sia stata testata. In genere, nelle strategie CD si preferisce lo sviluppo basato su _trunk_ al posto di quello su _feature branching_ o _pull requests_. \ No newline at end of file +Le strategie CD creano un processo completamente automatizzato fino in produzione, che testa e distribuisce il software utilizzando varie strategie di distribuzione come le versioni [canary](/it/canary-deployment/) o [blue-green](/it/blue-green-deployment/). Ciò consente agli sviluppatori di distribuire codice frequentemente, garantendo loro la tranquillità che la nuova revisione sia stata testata. In genere, nelle strategie CD si preferisce lo sviluppo basato su _trunk_ al posto di quello su _feature branching_ o _pull requests_. \ No newline at end of file From ff8ccba4fc722bb87391f0e86fbca1bd7e59e4e0 Mon Sep 17 00:00:00 2001 From: sistella <56387955+sistella@users.noreply.github.com> Date: Wed, 10 May 2023 16:04:37 +0200 Subject: [PATCH 072/295] added blue-green-deployment italian localization (#2013) Signed-off-by: Simone Stella --- content/it/blue-green-deployment.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 content/it/blue-green-deployment.md diff --git a/content/it/blue-green-deployment.md b/content/it/blue-green-deployment.md new file mode 100644 index 0000000000..3f08325744 --- /dev/null +++ b/content/it/blue-green-deployment.md @@ -0,0 +1,18 @@ +--- +title: Blue Green Deployment +status: Completed +category: concetto +tags: ["metodologia", "applicazione", ""] +--- + +## Cos'è +Il blue-green deployment è una strategia per l’aggiornamento di sistemi in esecuzione con un disservizio minimo. L’operatore ha in esecuzione due ambienti, denominati “blue” e “green”. Di questi, il primo è effettivamente in produzione (ed è la versione che tutti gli utenti stanno utilizzando), mentre il secondo è in aggiornamento. Una volta che i test sono conclusi sull’ambiente non attivo (il “green”), il traffico verso produzione viene dirottato su quest’ultimo (spesso con l’utilizzo di un [load balancer](/it/load-balancer/)). Si noti che con blue-green deployment si intende spesso lo scambio di interi ambienti, compresi molti [servizi](/it/service/), in blocco. Il termine è a volte usato impropriamente in relazione a singoli servizi in un sistema. Per evitare queste ambiguità, si preferisce usare il termine “zero-downtime deployment” (a impatto nullo) quando ci si riferisce alle singole componenti. + + +## Quali problematiche affronta +I blue-green deployment consentono di ridurre al minimo il disservizio nel caso in cui si debba rilasciare una nuova versione di un software che manca di retrocompatibilità. Per esempio, un deployment di tipo blue-green è indicato nel caso di un negozio online che consista in un sito web e un database. Se il database ha bisogno di un aggiornamento, ma questa nuova versione non funziona con la versione corrente del sito web (e viceversa), in questo caso bisogna cambiare entrambe nello stesso momento. E se questo viene fatto in ambiente di produzione, l’utente noterà un disservizio. + + +## In che modo aiuta +Il blue-green deployment è la strategia appropriata per software non [cloud-native](/it/cloud-native-apps/) che necessitano di un aggiornamento con un disservizio minimo. In ogni caso il suo utilizzo è solitamente un segnale che il software ha bisogno di essere reingegnerizzato, così da poter aggiornare le sue componenti singolarmente. + From b4667c009b9700d1ea7a1e4829624af6625bd9d8 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Wed, 10 May 2023 16:05:59 +0200 Subject: [PATCH 073/295] Fixed Service Mesh title (#1990) Signed-off-by: Paolo Co-authored-by: Paolo --- content/it/service-mesh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/it/service-mesh.md b/content/it/service-mesh.md index 744b160c81..09e951fcda 100644 --- a/content/it/service-mesh.md +++ b/content/it/service-mesh.md @@ -1,5 +1,5 @@ --- -title: Applicazioni distribuite +title: Service Mesh status: Completed category: tecnologia tags: ["networking", "", ""] From 65ff82bb7c4573e23f82f2e0738160615d6f0550 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Wed, 10 May 2023 20:42:29 +0200 Subject: [PATCH 074/295] [ES] es-function-as-a-service (#1981) * added es/content/function-as-a-service. * added FaaS to wordlist.txt. Signed-off-by: marianogg9 --- content/es/.wordlist.txt | 1 + content/es/function-as-a-service.md | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 content/es/function-as-a-service.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 45decc389c..601d782b4b 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -110,6 +110,7 @@ evento existing extensibilidad externalizar +FaaS faltantes Feedback Finance diff --git a/content/es/function-as-a-service.md b/content/es/function-as-a-service.md new file mode 100644 index 0000000000..265bab0fc9 --- /dev/null +++ b/content/es/function-as-a-service.md @@ -0,0 +1,36 @@ +--- +title: Función como Servicio (FaaS) +status: Completed +category: Tecnología +tags: ["infrastructure", "", ""] +--- + +## ¿Qué es? + +La Función como Servicio (FaaS según sus siglas en Inglés) es un tipo de [servicio](/service/) [sin servidor](/es/serverless/) en la [computación en la nube](/es/cloud-computing/) +que permite ejecutar código como respuesta a ciertos eventos +sin necesidad de mantener infraestructura compleja +típicamente asociada con la creación y lanzamiento de aplicaciones en [arquitectura de microservicios](/es/microservices-architecture/). +Con FaaS, los usuarios manejan solo las funciones y la información mientras que el proveedor de nube maneja la aplicación. +Esto permite a los desarrolladores ejecutar las funciones que necesitan sin tener que pagar por los servicios cuando el código no está ejecutándose. + +## Problema que aborda + +En un escenario tradicional de servidores locales, una organización maneja y mantiene su propio centro de datos. +Esta organización debe invertir en servidores, almacenamiento, software y otras tecnologías +y potencialmente contratar un equipo de TI o contratistas para comprar, manejar y actualizar todo el equipamiento y sus licencias. +El centro de datos tiene que ser construido para soportar grandes demandas, incluso cuando la carga de trabajo se vea disminuida y los equipos se utilizan muy por debajo de su capacidad. +En caso contrario si la organización crece, el equipo contratado podría no cubrir la demanda. +Bajo un modelo estándar de computación en la nube basado en [Infraestructura como Servicio (IaaS)](/es/infrastructure-as-a-service/), +los usuarios pueden contratar de antemano unidades de capacidad, es decir, pagando a un proveedor de nube pública por componentes de un servidor que siempre está encendido para ejecutar tus aplicaciones. +Es responsabilidad del usuario aumentar la capacidad del servidor durante tiempos de gran demanda +y reducirla cuando no es necesaria. +La infraestructura de la nube necesaria para ejecutar una aplicación está encendida incluso cuando la aplicación no está siendo utilizada. + +## ¿Cómo ayuda? + +FaaS ofrece a los desarrolladores un nivel de [abstracción](/es/abstraction/) para ejecutar aplicaciones en respuesta a eventos sin la necesidad de mantener servidores. +Como ejemplo, enviar un archivo a la nube podría generar una ejecución de código específico que transforme el archivo a varios formatos. +La infraestructura FaaS aumentará automáticamente la capacidad de procesamiento del código para soportar gran demanda, +y el desarrollador no deberá dedicar tiempo alguno a crear código que soporte [escalabilidad](/es/scalability/). +El cálculo de costos está basado solo en tiempo de procesamiento, por lo cual las organizaciones no deben pagar cuando las funciones no están en uso. \ No newline at end of file From 055cdaebe3bc9f923b4d2a4b8d7db04e88e0e536 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Sun, 14 May 2023 10:59:03 +0800 Subject: [PATCH 075/295] Add content/zh-tw/container-orchestration.md Signed-off-by: HungWei Chiu --- content/zh-tw/container-orchestration.md | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/zh-tw/container-orchestration.md diff --git a/content/zh-tw/container-orchestration.md b/content/zh-tw/container-orchestration.md new file mode 100644 index 0000000000..b9a1a81314 --- /dev/null +++ b/content/zh-tw/container-orchestration.md @@ -0,0 +1,25 @@ +--- +title: 容器協作 +status: Completed +category: 概念 +--- + +## 是什麼 {#what-it-is} + +[容器](/zh-tw/container/)協作指的是在動態的環境中自動管理容器化應用程式的生命週期。 +這通過一個容器編排者 (大多是 [Kubernetes](/zh-tw/kubernetes)) 來執行如部署、(自動)擴展、自我修復和監控。 +協作是一個譬喻用詞: +協作工具就如同樂隊指揮一樣指揮管理眾多容器,確保每個容器(或樂手)各執其職。 + +## 解決的問題 {#problem-it-addresses} + +手動管理大規模的[微服務](/zh-tw/microservices)、安全性和網路通訊以及常見的[分散式系統](/zh-tw/distributed-systems) +雖然困難但並非不可能。 +而容器協作能讓用戶自動化所有這些管理任務。 + +## 如何幫助 {#how-it-helps} + +容器協調工作允許使用決定系統的狀態。 +首先,這些工具會宣告系統應具備的狀態 (例如 x 個容器、 y 個 Pod 等等)。 +接者容器協調工具將會自動監控基礎建設並且在其狀態與宣告狀態不一致時自動修正 (例如當一個容器壞掉不能運行時,則啟動一個全新的容器)。 +這種自動化的操作簡化了許多工程團隊手動與複雜的維運工作,例如 服務開通、部署、自動擴展、網路、負載平衡和其他活動。 From 38fa298c245e0dfb4b2a399e51b50b110cc5c7cc Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 14 May 2023 16:14:31 +0200 Subject: [PATCH 076/295] Initialize traduction of Kubernetes into french Signed-off-by: Ludovic Logiou --- content/fr/kubernetes.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 content/fr/kubernetes.md diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md new file mode 100644 index 0000000000..18f8b2b3ad --- /dev/null +++ b/content/fr/kubernetes.md @@ -0,0 +1,36 @@ +--- +title: Kubernetes +status: Completed +category: technology +tags: ["infrastructure", "fundamental", ""] +--- + +## Ce que c'est + +Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneur open source. +Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gères des applications à travers un [système distribué](/distributed-systems/). + +Kubernetes planifie la création de [conteneurs](/container/) sur les [noeuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. Pour exécuter des applications containerisées. + +Kubernetes permets l'automatisation et l'extensibilitié, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessosu) et reproductible. +Kubernetes est extensible via ses [API](/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. + +## Problème auquel il répond + +L'automatisation de l'infrastructure et la gestion de configuration déclarative sont des concepts importants depuis longtemps, mais ils sont devenus omniprésent depuis que le [cloud computing](/cloud-computing/) a gagné en popularité. +A mesure que la demande de ressources de calcul augmente et que les organisations ont besoin de plus de capacités avec moins d'ingénieurs, les nouvelles technologies et les méthodes de travaille doivent répondre à cette demande. + +## Quel en est l'utilité + +Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/), Kubernetes aide à l'automatisation mais à l'avantage de fonctionnait avec des conteneurs. +Les conteneurs sont plus résistants aux écarts de configuration que les machines [virtuelles](/virtual-machine/) ou physique. + +De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu qu'un operator demande à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (e.g., YAML) - à quoi l'infrastructure devrait ressembler. +Kubernetes s'occupe ensuite du "Comment". +Il en résulte que Kubernetes est extrêmement compatible avec l'infrastructure en tant que code. + +Kubernetes s'[auto-guérit](/self-healing/) également. +L'état actuel du cluster correspond toujours à l'état désiré par l'opérateur. +Si kubernetes détecte une déviation par rapport à ce qui est décrit dans les fichiers manifests, un contrôleur Kubernetes va s'en occuper et le corriger. +Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle correspond à l'état souhaité. + From fb285e62137b75b96221f861d6f682b1f2f67b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sun, 14 May 2023 16:17:26 +0200 Subject: [PATCH 077/295] Fix after reviex MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/observability.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/observability.md b/content/fr/observability.md index 75af2fe047..f01c47b008 100644 --- a/content/fr/observability.md +++ b/content/fr/observability.md @@ -8,7 +8,7 @@ tags: ["property", "", ""] L'observabilité est une propriété des systèmes qui définit le degré auquel le système peut générer des informations exploitables. Elle permet aux utilisateurs de comprendre l'état d'un système à partir de ses sorties externes et de prendre des mesures (correctives). -Les systèmes informatiques sont mesurés en observant des signaux de bas niveau tels que le temps processeur, la mémoire, l'espace disque, et des signaux de niveau supérieur et métiers, notamment les temps de réponse de l'API, les erreurs, le nombre de transactions par seconde, etc. +Les systèmes informatiques sont mesurés en observant des signaux de bas niveau tels que le temps processeur, la mémoire, l'espace disque, des signaux de niveau supérieur et des signaux métiers, notamment les temps de réponse de l'API, les erreurs, le nombre de transactions par seconde, etc. Ces systèmes observables sont **observés** (ou surveillés) grâce à des outils spécialisés, appelés outils d'observabilité. Une liste de ces outils peut être consultée dans la [section observabilité du Cloud Native Landscape](https://landscape.cncf.io/card-mode?category=observability-and-analysis&grouping=category). Les systèmes observables fournissent des données significatives et exploitables à leurs opérateurs, leur permettant ainsi d'obtenir des résultats intéressants (intervention plus rapide en cas d'incident, augmentation de la productivité des développeurs) et de réduire le temps improductif. From b3d386e3271417cdcc83d7fc1d2aa0b041fbcf4d Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 14 May 2023 16:47:40 +0200 Subject: [PATCH 078/295] Add sestegra feedbacks Signed-off-by: Ludovic Logiou --- content/fr/kubernetes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index 18f8b2b3ad..3d837da4f6 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -10,15 +10,15 @@ tags: ["infrastructure", "fundamental", ""] Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneur open source. Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gères des applications à travers un [système distribué](/distributed-systems/). -Kubernetes planifie la création de [conteneurs](/container/) sur les [noeuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. Pour exécuter des applications containerisées. +Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. Pour exécuter des applications containerisées. -Kubernetes permets l'automatisation et l'extensibilitié, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessosu) et reproductible. +Kubernetes permet l'automatisation et l'extensibilité, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessous) et reproductible. Kubernetes est extensible via ses [API](/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. ## Problème auquel il répond -L'automatisation de l'infrastructure et la gestion de configuration déclarative sont des concepts importants depuis longtemps, mais ils sont devenus omniprésent depuis que le [cloud computing](/cloud-computing/) a gagné en popularité. -A mesure que la demande de ressources de calcul augmente et que les organisations ont besoin de plus de capacités avec moins d'ingénieurs, les nouvelles technologies et les méthodes de travaille doivent répondre à cette demande. +L'automatisation de l'infrastructure et la gestion de configuration déclarative sont des concepts importants depuis longtemps, mais ils sont devenus omniprésents depuis que le [cloud computing](/cloud-computing/) a gagné en popularité. +À mesure que la demande de ressources de calcul augmente et que les organisations ont besoin de plus de capacités avec moins d'ingénieurs, les nouvelles technologies et les méthodes de travail doivent répondre à cette demande. ## Quel en est l'utilité From 911f7815af4cc15282622a7f9d7f0c2c9ca905ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sun, 14 May 2023 18:40:14 +0200 Subject: [PATCH 079/295] [fr} Localize autoscaling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/auto-scaling.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 content/fr/auto-scaling.md diff --git a/content/fr/auto-scaling.md b/content/fr/auto-scaling.md new file mode 100644 index 0000000000..22d98eea94 --- /dev/null +++ b/content/fr/auto-scaling.md @@ -0,0 +1,27 @@ +--- +title: Mise à l'échelle automatique (Autoscaling) +status: Completed +category: property +tags: ["infrastructure", "", ""] +--- + +La mise à l'échelle automatique (ou autoscaling) est la capacité d'un système à s'adapter automatiquement (voir [capacité de mise à l'échelle](/scalability/)), généralement, en termes de ressources informatiques. +Avec un système permettant une mise à l'échelle automatique, les ressources sont automatiquement ajoutées en cas de besoin et peuvent être ajustées pour répondre aux demandes fluctuantes des utilisateurs. +Le processus de mise à l'échelle automatique varie et peut être configuré pour s'adapter à différentes métriques, telles que la mémoire ou le temps de traitement. +Les services cloud gérés sont couramment associés à cette fonctionnalité de mise à l'échelle automatique, car il existe plus d'options et de mises en œuvre disponibles que dans la plupart des déploiements sur site. + +Auparavant, l'infrastructure et les applications étaient conçues en tenant compte de l'utilisation maximale du système. +Cette architecture signifiait que davantage de ressources étaient sous-utilisées et inélastiques face à l'évolution de la demande des consommateurs. +L'inélasticité entraînait des coûts plus élevés pour l'entreprise et des pertes d'activité dues aux pannes dues à une demande excessive. + +En exploitant le cloud, la [virtualisation](/virtualization/) et la [conteneurisation](/containerization/) des applications et leurs dépendances, +les organisations peuvent développer des applications qui se mettent à l'échelle selon les demandes des utilisateurs. +Elles peuvent surveiller les applications et les mettre à l'échelle automatiquement, offrant ainsi une expérience utilisateur optimale. +Prenons l'exemple de l'augmentation du nombre de spectateurs que Netflix connaît chaque vendredi soir. +La mise à l'échelle automatique signifie ajouter dynamiquement plus de ressources: par exemple, +en augmentant le nombre de serveurs permettant une diffusion de plus de vidéos et en réduisant l'échelle une fois que la consommation s'est normalisée. + +## Termes connexes + +* [Mise à l'échelle horizontale (Horizontal Scaling)](/horizontal-scaling/) +* [Mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/) From 34bb23195ae98bbe0898f52ed5caadb61644ca29 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Mon, 15 May 2023 11:18:37 +0800 Subject: [PATCH 080/295] Update content/zh-tw/container-orchestration.md Co-authored-by: Phil Huang Signed-off-by: HungWei Chiu --- content/zh-tw/container-orchestration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/container-orchestration.md b/content/zh-tw/container-orchestration.md index b9a1a81314..3ab3bfcb87 100644 --- a/content/zh-tw/container-orchestration.md +++ b/content/zh-tw/container-orchestration.md @@ -8,7 +8,7 @@ category: 概念 [容器](/zh-tw/container/)協作指的是在動態的環境中自動管理容器化應用程式的生命週期。 這通過一個容器編排者 (大多是 [Kubernetes](/zh-tw/kubernetes)) 來執行如部署、(自動)擴展、自我修復和監控。 -協作是一個譬喻用詞: +協作是一個隱喻用詞: 協作工具就如同樂隊指揮一樣指揮管理眾多容器,確保每個容器(或樂手)各執其職。 ## 解決的問題 {#problem-it-addresses} From 9b0f680d7c3ea56b2cb6b3b8a30b746bc90139eb Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Tue, 16 May 2023 04:06:23 +0200 Subject: [PATCH 081/295] [ES] added content/es/service-discovery (#1991) * added content/es/service-discovery Signed-off-by: marianogg9 --- content/es/service-discovery.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 content/es/service-discovery.md diff --git a/content/es/service-discovery.md b/content/es/service-discovery.md new file mode 100644 index 0000000000..9b41d9f866 --- /dev/null +++ b/content/es/service-discovery.md @@ -0,0 +1,24 @@ +--- +title: Descubrimiento de Servicio +status: Completed +category: Concepto +tags: ["networking", "", ""] +--- + +## ¿Qué es? + +El descubrimiento de servicio es el proceso de identificar instancias individuales que pertenecen a un mismo servicio. +Una herramienta de descubrimiento de servicio mantiene una lista de varios nodos o aplicaciones que componen un servicio. + +## Problema que aborda + +Las arquitecturas cloud native son dinámicas y fluidas, es decir que están en constante cambio. +Una aplicación [contenedorizada](/es/containerization/) se ejecutará y detendrá varias veces en su tiempo de vida. +Cada vez que eso sucede, obtendrá una nueva dirección y +cualquier otra aplicación que quiera encontrarla necesita una herramienta que provea su nueva dirección. + +## ¿Cómo ayuda? + +El descubrimiento de servicio mantiene una lista de aplicaciones en una red para que puedan encontrarse unas a otras cuando sea necesario. +Provee un espacio común donde encontrar y potencialmente identificar servicios individuales. +Los motores de descubrimiento de servicio son herramientas similares a las bases de datos que almacenan información referente a qué servicios existen y cómo localizarlos. \ No newline at end of file From 28b6cbe09d44ba7fbe3504e46205d7382e916a19 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Tue, 16 May 2023 04:07:40 +0200 Subject: [PATCH 082/295] [ES] added content/es/stateful-apps.md (#2010) * added content/es/stateful-apps.md Signed-off-by: marianogg9 --- content/es/stateful-apps.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/es/stateful-apps.md diff --git a/content/es/stateful-apps.md b/content/es/stateful-apps.md new file mode 100644 index 0000000000..df66eaadc4 --- /dev/null +++ b/content/es/stateful-apps.md @@ -0,0 +1,31 @@ +--- +title: Aplicaciones con estado +status: Completed +category: Concepto +tags: ["fundamental", "application", ""] +--- + +## ¿Qué es? + +Cuando hablamos de aplicaciones con estado (y [sin estado](/stateless-apps/)), +éste estado se refiere a cualquier dato que la aplicación necesita almacenar para funcionar. +Por ejemplo, cualquier tipo de tienda en línea que recuerda tu carro de compras es una aplicación con estado. + +## Problema que aborda + +Utilizar una aplicación generalmente requiere de peticiones múltiples. +Por ejemplo, en una aplicación bancaria en línea, te identificas +ingresando una contraseña (petición #1), +luego podrías transferir dinero a un amigo (petición #2), +y finalmente, podrás ver los detalles de tu transferencia (petición #3). +Para funcionar correctamente, cada paso debe recordar los anteriores, +y el banco necesita recordar el estado de las cuentas de todos sus clientes. +Hoy, la mayoría de las aplicaciones que utilizamos son al menos parcialmente con estado, +ya que almacenan datos como preferencias y configuraciones para mejorar la experiencia del usuario. + +## ¿Cómo ayuda? + +Existen varias maneras de almacenar el estado de una aplicación con estado. +La más simple es almacenarlo en memoria y no persistir ese estado en otro lado. +El problema con ello es que cuando la aplicación sea reiniciada, todo el estado se pierde. +Para evitarlo, el estado es persistido localmente (en disco) o en un sistema de base de datos. \ No newline at end of file From bcf7754744ac5d20e163f9b78ef4535f2f50af91 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Tue, 16 May 2023 16:38:18 +0200 Subject: [PATCH 083/295] [ES] added compute/es/edge-computing.md (#1869) * added compute/es/edge-computing.md Signed-off-by: marianogg9 --- content/es/edge-computing.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/es/edge-computing.md diff --git a/content/es/edge-computing.md b/content/es/edge-computing.md new file mode 100644 index 0000000000..92aae64b61 --- /dev/null +++ b/content/es/edge-computing.md @@ -0,0 +1,28 @@ +--- +title: Computación en el borde +status: Completed +category: Tecnología +--- + +## ¿Qué es? + +Computación en el borde es un tipo de [sistema distribuido](/es/distributed-systems/) en el que una parte del procesamiento y almacenamiento de información se realiza en el origen de los datos. +Esta información generada es procesada localmente (por ejemplo en una fábrica, en un negocio o a través de una ciudad) en vez de ser enviada a un centro de datos centralizado para procesamiento y análisis. +Luego el resultado de ese procesamiento local es enviado al centro de datos principal para un procesamiento final. +Algunos ejemplos de computación en el borde incluyen los sensores de muñeca o computadoras que analizan el flujo de datos. + +## Problema que aborda + +A lo largo de la década pasada, hemos visto un incremento de dispositivos en el borde (por ejemplo teléfonos móviles, relojes inteligentes o sensores). +En algunos casos, el procesamiento en tiempo real no solo es una buena posibilidad sino que es vital. +Pensemos en los coches autónomos. +Imaginemos la información generada por los sensores del automóvil que tiene que ser transferida a un centro de datos para ser procesada y luego enviada de vuelta al vehículo para reaccionar en efecto. +La latencia de la red involucrada podría ser fatal. +Si bien este es un ejemplo llevado al extremo, la mayoría de los usuarios no querrían utilizar un dispositivo inteligente que no fuera capaz de generar reacciones instantáneas. + +## ¿Cómo ayuda? + +Como se ha descrito anteriormente, para que los dispositivos en el borde sean útiles, deberían poder al menos procesar y analizar localmente una parte de los datos para proveer reacciones en tiempo real al usuario. +Esto es posible procesando y analizando la información en el dispositivo donde se genera (en el borde) en vez de hacerlo en un centro de datos centralizado. +Luego, tanto la información procesada y no procesada es enviada al centro de datos central para procesamiento final y almacenamiento. +En resumen, la eficiencia y velocidad son parámetros centrales de la computación en el borde. \ No newline at end of file From 1ab747e3cd1fe4c544aad5f2d52083ebca3d7b95 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Tue, 16 May 2023 00:37:34 +0800 Subject: [PATCH 084/295] Adjust the translation of orchestration in zh-tw Signed-off-by: HungWei Chiu --- content/zh-tw/container-orchestration.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/zh-tw/container-orchestration.md b/content/zh-tw/container-orchestration.md index 3ab3bfcb87..30343ae87b 100644 --- a/content/zh-tw/container-orchestration.md +++ b/content/zh-tw/container-orchestration.md @@ -1,21 +1,21 @@ --- -title: 容器協作 +title: 容器協調 status: Completed category: 概念 --- ## 是什麼 {#what-it-is} -[容器](/zh-tw/container/)協作指的是在動態的環境中自動管理容器化應用程式的生命週期。 +[容器](/zh-tw/container/)協調指的是在動態的環境中自動管理容器化應用程式的生命週期。 這通過一個容器編排者 (大多是 [Kubernetes](/zh-tw/kubernetes)) 來執行如部署、(自動)擴展、自我修復和監控。 -協作是一個隱喻用詞: -協作工具就如同樂隊指揮一樣指揮管理眾多容器,確保每個容器(或樂手)各執其職。 +協調是一個隱喻用詞: +協調工具就如同樂隊指揮一樣指揮管理眾多容器,確保每個容器(或樂手)各執其職。 ## 解決的問題 {#problem-it-addresses} 手動管理大規模的[微服務](/zh-tw/microservices)、安全性和網路通訊以及常見的[分散式系統](/zh-tw/distributed-systems) 雖然困難但並非不可能。 -而容器協作能讓用戶自動化所有這些管理任務。 +而容器協調能讓用戶自動化所有這些管理任務。 ## 如何幫助 {#how-it-helps} From a6992960c9ee9dd6c1ca1792d05842e829fe0433 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Wed, 17 May 2023 15:46:13 +0800 Subject: [PATCH 085/295] Update content/zh-tw/container-orchestration.md Co-authored-by: Ader Fu Signed-off-by: HungWei Chiu --- content/zh-tw/container-orchestration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/container-orchestration.md b/content/zh-tw/container-orchestration.md index 30343ae87b..20b596b0ab 100644 --- a/content/zh-tw/container-orchestration.md +++ b/content/zh-tw/container-orchestration.md @@ -7,7 +7,7 @@ category: 概念 ## 是什麼 {#what-it-is} [容器](/zh-tw/container/)協調指的是在動態的環境中自動管理容器化應用程式的生命週期。 -這通過一個容器編排者 (大多是 [Kubernetes](/zh-tw/kubernetes)) 來執行如部署、(自動)擴展、自我修復和監控。 +這通過一個容器協調器 (大多是 [Kubernetes](/zh-tw/kubernetes)) 來執行如部署、(自動)擴展、自我修復和監控。 協調是一個隱喻用詞: 協調工具就如同樂隊指揮一樣指揮管理眾多容器,確保每個容器(或樂手)各執其職。 From e628ab5fceab62d323d36e1646863ec658238bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 18 May 2023 16:53:57 +0200 Subject: [PATCH 086/295] [fr] Localize horizontal scaling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/horizontal-scaling.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/fr/horizontal-scaling.md diff --git a/content/fr/horizontal-scaling.md b/content/fr/horizontal-scaling.md new file mode 100644 index 0000000000..ef02267a8b --- /dev/null +++ b/content/fr/horizontal-scaling.md @@ -0,0 +1,31 @@ +--- +title: Mise à l'échelle horizontale (Horizontal Scaling) +status: Completed +category: Concept +tags: ["infrastructure", "", ""] +--- + +## Ce que c'est + +La mise à l'échelle horizontale est une technique qui consiste à augmenter la capacité d'un système en ajoutant plus de [nœuds](/nodes/) au lieu d'ajouter plus de ressources informatiques à des nœuds unitaires (ce dernier étant connu sous le nom de [mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/)). +Supposons que nous avons un système avec 4 Go de mémoire et que nous voulons augmenter sa capacité à 16 Go, la mise à l'échelle horizontale consiste à ajouter 4 × 4 Go de mémoire plutôt que de passer à un système avec 16 Go de mémoire. + +Cette approche améliore les performances d'une application en ajoutant de nouvelles instances, ou [nœuds](/nodes/), pour mieux répartir la charge de travail. +En termes simples, elle vise à réduire la charge du serveur plutôt qu'à étendre la capacité du serveur unitaire. + +## Problème auquel il répond + +Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/scalability/) le système (ajouter de la capacité au système). +Nous pouvons soit ajouter plus de nœuds au système (mise à l'échelle horizontale) soit ajouter plus de ressources informatiques aux nœuds existants (mise à l'échelle verticale). + +## Quel en est l'utilité + +La mise à l'échelle horizontale permet aux applications de s'étendre jusqu'aux limites fournies par le cluster sous-jacent. +En ajoutant davantage d'instances au système, l'application peut traiter un plus grand nombre de requêtes. +Si un nœud unique peut traiter 1000 requêtes par seconde, chaque nœud supplémentaire devrait augmenter le nombre total de requêtes d'environ 1000 requêtes par seconde. +Cela permet à l'application d'effectuer davantage de travail simultanément sans avoir besoin d'augmenter la capacité d'un nœud en particulier. + +## Termes liés + +* [Mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/) +* [Mise à l'échelle automatique (Autoscaling)](/auto-scaling/) From fbace7cead4bb406c5f50829306df844b06ec4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 18 May 2023 16:58:39 +0200 Subject: [PATCH 087/295] Fix related terms translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/auto-scaling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/auto-scaling.md b/content/fr/auto-scaling.md index 22d98eea94..d139afcaeb 100644 --- a/content/fr/auto-scaling.md +++ b/content/fr/auto-scaling.md @@ -21,7 +21,7 @@ Prenons l'exemple de l'augmentation du nombre de spectateurs que Netflix connaî La mise à l'échelle automatique signifie ajouter dynamiquement plus de ressources: par exemple, en augmentant le nombre de serveurs permettant une diffusion de plus de vidéos et en réduisant l'échelle une fois que la consommation s'est normalisée. -## Termes connexes +## Termes liés * [Mise à l'échelle horizontale (Horizontal Scaling)](/horizontal-scaling/) * [Mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/) From 45a2d085721d75681d2a8a044efa785185381b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 18 May 2023 17:53:06 +0200 Subject: [PATCH 088/295] [fr] Localize vertical scaling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/vertical-scaling.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/fr/vertical-scaling.md diff --git a/content/fr/vertical-scaling.md b/content/fr/vertical-scaling.md new file mode 100644 index 0000000000..97b129112e --- /dev/null +++ b/content/fr/vertical-scaling.md @@ -0,0 +1,28 @@ +--- +title: Mise à l'échelle verticale (Vertical Scaling) +status: Completed +category: Concept +tags: ["infrastructure", "", ""] +--- + +## Ce que c'est + +La mise à l'échelle verticale, également connue sous le nom de "mise à l'échelle vers le haut et vers le bas", est une technique qui consiste à augmenter la capacité d'un système en ajoutant des processeurs et de la mémoire à chaque [nœud](/nodes/) unitaire à mesure que la charge de travail augmente. +Supposons que vous avez un ordinateur avec 4 Go de mémoire et que vous voulez augmenter sa capacité à 16 Go, la mise à l'échelle verticale consiste à passer à un système avec 16 Go de mémoire. (Veuillez vous référer à la [mise à l'échelle horizontale](/horizontal-scaling/) pour une approche différente de mise à l'échelle.) + +## Problème auquel il répond + +Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/scalability/) le système (ajouter de la capacité au système). +Nous pouvons soit ajouter plus de ressources informatiques aux nœuds existants (mise à l'échelle verticale), soit ajouter plus de nœuds au système ([mise à l'échelle horizontale](/horizontal-scaling/)). +La [capacité de mise à l'échelle](/scalability/) contribue à la compétitivité, l'efficacité, la réputation et la qualité + +## Quel en est l'utilité + +La mise à l'échelle verticale vous permet de redimensionner votre serveur sans modifier le code de l'application. +Cela contraste avec la mise à l'échelle horizontale, où l'application doit être réplicable pour être mise à l'échelle, ce qui peut nécessiter des mises à jour du code. +La mise à l'échelle verticale augmente la capacité d'une application existante en ajoutant des ressources informatiques, ce qui permet à l'application de traiter davantage de requêtes et d'effectuer davantage de travail simultanément. + +## Termes liés + +* [Mise à l'échelle horizontale (Horizontal Scaling)](/horizontal-scaling/) +* [Mise à l'échelle automatique (Auto Scaling)](/auto-scaling/) From 66c691c31adf21f27b1ec5e4677d759408406081 Mon Sep 17 00:00:00 2001 From: Phil Huang Date: Thu, 11 May 2023 18:03:57 +0800 Subject: [PATCH 089/295] Add content/zh-tw/cluster.md Add content/zh-tw/cluster.md Origin content from https://glossary.cncf.io/cluster/ Signed-off-by: Phil Huang --- content/zh-tw/cluster.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/zh-tw/cluster.md diff --git a/content/zh-tw/cluster.md b/content/zh-tw/cluster.md new file mode 100644 index 0000000000..60d4239a56 --- /dev/null +++ b/content/zh-tw/cluster.md @@ -0,0 +1,23 @@ +--- +title: 叢集 +status: Completed +category: 概念 +tags: ["基礎架構", "架構", ""] +--- + +## 是什麼 {#what-it-is} + +一座叢集是指一組由計算機或應用程式為實現共同目標而協同工作。 +在雲原生計算的背景之下,這個詞彙通常用於 [Kubernetes](/zh-tw/kubernetes/)。 +一座 Kubernetes 叢集是一組執行在它們自己的容器中的服務 (或工作負載),通常在不同的機器上執行。 +所有這些通過網路連接的 [容器化](/zh-tw/containerization/) 服務集合代表一座叢集。 + +## 解決的問題 {#problem-it-addresses} + +在單一計算機上執行的軟體若出現單點故障 - 如那台計算機當機、或者有人意外拔掉電源線,那麼某些關鍵的業務系統可能會被離線。 +這就是為什麼現代軟體通常被建構成 [分散式應用程式](/zh-tw/distributed-apps/),並集結為叢集的原因。 + +## 如何幫助 {#how-it-helps} + +雖然分散式叢集應用程式執行在多台機器上,消除了單點故障,但是建構分散式系統確實很困難。事實上,它是資訊工程中的一門獨立學科。 +汲取全球級別系統的需求以及多年的反覆試驗下,最終促成了一種新的技術棧的發展: [雲原生技術](/zh-tw/cloud-native-tech/)。這些新技術是使得建構分散式系統更容易操作和建立的元件。 \ No newline at end of file From 612d7e64e619503e680ccc25b0d9c9aad80d40b8 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Mon, 22 May 2023 00:10:02 +0800 Subject: [PATCH 090/295] Update content/zh-tw/container-orchestration.md Co-authored-by: Ader Fu Signed-off-by: HungWei Chiu --- content/zh-tw/container-orchestration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/container-orchestration.md b/content/zh-tw/container-orchestration.md index 20b596b0ab..e8f1596dcc 100644 --- a/content/zh-tw/container-orchestration.md +++ b/content/zh-tw/container-orchestration.md @@ -21,5 +21,5 @@ category: 概念 容器協調工作允許使用決定系統的狀態。 首先,這些工具會宣告系統應具備的狀態 (例如 x 個容器、 y 個 Pod 等等)。 -接者容器協調工具將會自動監控基礎建設並且在其狀態與宣告狀態不一致時自動修正 (例如當一個容器壞掉不能運行時,則啟動一個全新的容器)。 +接著容器協調工具將會自動監控基礎建設並且在其狀態與宣告狀態不一致時自動修正 (例如當一個容器壞掉不能運行時,則啟動一個全新的容器)。 這種自動化的操作簡化了許多工程團隊手動與複雜的維運工作,例如 服務開通、部署、自動擴展、網路、負載平衡和其他活動。 From 22059d3939ef6a4d787460a12182b0b260f0c353 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Tue, 23 May 2023 01:00:06 +0200 Subject: [PATCH 091/295] [ES] content/es/vertical-scaling.md (#2068) * added es/vertical-scaling.md Signed-off-by: marianogg9 --- content/es/auto-scaling.md | 2 +- content/es/horizontal-scaling.md | 4 ++-- content/es/vertical-scaling.md | 34 ++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 content/es/vertical-scaling.md diff --git a/content/es/auto-scaling.md b/content/es/auto-scaling.md index 35dc891624..f2c1155f25 100644 --- a/content/es/auto-scaling.md +++ b/content/es/auto-scaling.md @@ -25,4 +25,4 @@ incrementando el número de servidores que permitirán una mayor transmisión de ## Términos relacionados * [Escalado Horizontal](/es/horizontal-scaling/) -* [Escalado Vertical](/vertical-scaling/) +* [Escalado Vertical](/es/vertical-scaling/) diff --git a/content/es/horizontal-scaling.md b/content/es/horizontal-scaling.md index 8997cba168..aa536e0bb6 100644 --- a/content/es/horizontal-scaling.md +++ b/content/es/horizontal-scaling.md @@ -12,7 +12,7 @@ en vez de agregar más recursos computacionales a nodos individuales (conocido c Como ejemplo, digamos que tenemos un sistema con 4 GB de memoria y queremos incrementar su capacidad a 16 GB, escalar horizontalmente significa agregar 4 x 4 GB en vez de cambiar a un sistema de 16 GB. -Esta método mejora el funcionamiento de una aplicación agregando nuevas instancias o [nodos](/es/nodes), +Este método mejora el funcionamiento de una aplicación agregando nuevas instancias o [nodos](/es/nodes), para distribuir de mejor manera la carga de trabajo. En concreto, apunta a disminuir la carga del servidor en vez de expandir la capacidad de cada uno individualmente. @@ -35,5 +35,5 @@ sin la necesidad de incrementar la capacidad de un nodo en particular. ## Términos relacionados -* [Escalado vertical](/vertical-scaling/) +* [Escalado Vertical](/es/vertical-scaling/) * [Autoescalado](/es/auto-scaling/) \ No newline at end of file diff --git a/content/es/vertical-scaling.md b/content/es/vertical-scaling.md new file mode 100644 index 0000000000..20adb766c8 --- /dev/null +++ b/content/es/vertical-scaling.md @@ -0,0 +1,34 @@ +--- +title: Escalado Vertical +status: Completed +category: Concepto +tags: ["infrastructure", "", ""] +--- + +## ¿Qué es? + +El escalado vertical, también conocido como "agregar y reducir", es una técnica donde +la capacidad de un sistema es incrementada agregando CPU y memoria a [nodos](/es/nodes/) individuales a medida que la carga de trabajo aumenta. +Digamos que tenemos una computadora con 4GB de RAM y quisiéramos aumentar su capacidad a 16 GB de RAM, +escalar verticalmente significa cambiar a un sistema de 16 GB de RAM, +(Referirse a [escalado horizontal](/es/horizontal-scaling/) para un método distinto de escalado.) + +## Problema que aborda + +Cuando la demanda hacia una aplicación crece más allá de la capacidad actual de esa aplicación, +necesitamos encontrar una manera de escalar (agregar capacidad) el sistema. +Podríamos agregar más recursos computacionales a los nodos existentes (escalado vertical) +o más nodos al sistema ([escalado horizontal](/es/horizontal-scaling/)). +La [escalabilidad](/es/scalability/) contribuye a la competitividad, eficiencia, reputación y calidad. + +## ¿Cómo ayuda? + +El escalado vertical permite modificar su servidor sin tener que cambiar el código de la aplicación. +Esto contrasta con el escalado horizontal, donde la aplicación debe soportar replicación para escalar, potencialmente requiriendo actualizaciones de código. +El escalado vertical incrementa la capacidad de una aplicación existente +agregando recursos computacionales, permitiendo a la aplicación procesar más peticiones y hacer más trabajo de forma concurrente. + +## Términos relacionados + +* [Escalado Horizontal](/es/horizontal-scaling/) +* [Autoescalado](/es/auto-scaling/) \ No newline at end of file From 2568b384630b6f9e7e4b31a7f2866ded184c4ff1 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Tue, 23 May 2023 08:47:41 -0700 Subject: [PATCH 092/295] Update ES contributors list (#2051) Signed-off-by: Victor Morales --- content/es/.wordlist.txt | 4 +--- content/es/_index.md | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 601d782b4b..c1c67b6d1b 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -11,7 +11,6 @@ application Appreciated approver architecture -Arnes autocura autoescalado autoescalamiento @@ -123,7 +122,6 @@ Foundry framework frontend fundamentals -Garcia gateway GB GCP @@ -132,6 +130,7 @@ GitHub GitOps glossary Gmail +González good Google help @@ -228,7 +227,6 @@ proyecto PRs pull Quiceno -Rael Ramer RDS relevantes diff --git a/content/es/_index.md b/content/es/_index.md index 86b48c2ce6..c640ee9eef 100755 --- a/content/es/_index.md +++ b/content/es/_index.md @@ -35,7 +35,7 @@ Para una lista de contribuidores completa, consulte [esta página de GitHub](htt Esta versión del glosario Cloud Native en español incluye contribuciones realizadas por [Victor Morales](https://www.linkedin.com/in/electrocucaracha/), -[Rael Garcia Arnes](https://www.linkedin.com/in/rael/), +[Mariano Gabriel González](https://www.linkedin.com/in/marianogg9/), [Carol Valencia](https://www.linkedin.com/in/carolgv/), [Nicolas Quiceno Benavides](https://www.linkedin.com/in/nquiceno/), [Rodolfo Martinez Vega](https://www.linkedin.com/in/rodomar/) From 95c327f5835c2283cf4f55e150266275f61785bd Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 25 May 2023 15:31:49 +0200 Subject: [PATCH 093/295] Translate Service in French Signed-off-by: Guillaume Bernard --- content/fr/service.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 content/fr/service.md diff --git a/content/fr/service.md b/content/fr/service.md new file mode 100644 index 0000000000..8bc2d9d115 --- /dev/null +++ b/content/fr/service.md @@ -0,0 +1,12 @@ +--- +title: Service +status: Completed +category: concept +tags: ["application", "fundamental", ""] +--- + +Notez bien qu'en informatique, le mot service a plusieurs significations. +Dans cette définition, nous nous concentrerons sur la plus traditionnelle : service comme dans microservice. +Définir comment, voire même si, les services diffèrent des microservices est subtil et différentes personnes peuvent avoir des opinions différentes. +Pour une définition générale, nous les considérerons équivalents. +Veuillez vous référer à la définition des [microservices](/microservices/). From d6cfc27da26bee75cecfd14155a16276628de06d Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Thu, 25 May 2023 18:57:35 +0200 Subject: [PATCH 094/295] [ES] content/es/_TEMPLATE.md (#2071) * added es/_TEMPLATE.md * added PR suggestions Signed-off-by: marianogg9 --- content/es/_TEMPLATE.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 content/es/_TEMPLATE.md diff --git a/content/es/_TEMPLATE.md b/content/es/_TEMPLATE.md new file mode 100644 index 0000000000..7d9cca042e --- /dev/null +++ b/content/es/_TEMPLATE.md @@ -0,0 +1,21 @@ +--- +title: Plantilla de Definición +status: Feedback Appreciated +category: Concepto +--- + +## ¿Qué es? + +Resumen rápido del concepto y qué es. + +## Problema que aborda + +Definir el problema que aborda. Idealmente, no se debe mencionar el término que se está definiendo. + +## ¿Cómo ayuda? + +Describir cómo el término aborda el problema descrito anteriormente. + +## Términos relacionados + +Agregar términos relacionados del Glosario (si hubiera). \ No newline at end of file From 72f9398ae46ab1c57f7085f46df18cde824419ef Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 26 May 2023 23:15:33 +0200 Subject: [PATCH 095/295] update according to reviewers comments Signed-off-by: Guillaume Bernard --- content/fr/service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/service.md b/content/fr/service.md index 8bc2d9d115..b525b35496 100644 --- a/content/fr/service.md +++ b/content/fr/service.md @@ -7,6 +7,6 @@ tags: ["application", "fundamental", ""] Notez bien qu'en informatique, le mot service a plusieurs significations. Dans cette définition, nous nous concentrerons sur la plus traditionnelle : service comme dans microservice. -Définir comment, voire même si, les services diffèrent des microservices est subtil et différentes personnes peuvent avoir des opinions différentes. +La manière dont les services diffèrent des microservices, voire s'ils diffèrent, est subtil et différentes personnes peuvent avoir des opinions différentes. Pour une définition générale, nous les considérerons équivalents. Veuillez vous référer à la définition des [microservices](/microservices/). From 4f004e0771836ec38cf648207e56ed4708717580 Mon Sep 17 00:00:00 2001 From: "Martin E. Quintero" Date: Sat, 27 May 2023 17:38:36 -0500 Subject: [PATCH 096/295] [ES] Service.md (#2091) * Added service.md file * Change Linked Concept in the following files: content/es/abstraction.md content/es/blue-green-deployment.md content/es/event-driven-architecture.md content/es/function-as-a-service.md content/es/microservices-architecture.md content/es/service-mesh.md Signed-off-by: MartinEliasQ Signed-off-by: Martin E. Quintero Co-authored-by: Victor Morales --- content/es/abstraction.md | 2 +- content/es/blue-green-deployment.md | 2 +- content/es/event-driven-architecture.md | 2 +- content/es/function-as-a-service.md | 4 ++-- content/es/microservices-architecture.md | 4 ++-- content/es/service-mesh.md | 4 ++-- content/es/service.md | 12 ++++++++++++ 7 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 content/es/service.md diff --git a/content/es/abstraction.md b/content/es/abstraction.md index b5cc3d8080..5367a1a6db 100644 --- a/content/es/abstraction.md +++ b/content/es/abstraction.md @@ -6,7 +6,7 @@ tags: ["fundamental", "", ""] --- En el contexto de la informática, una abstracción es una representación que -oculta los detalles específicos a un consumidor de [servicios](/service/) +oculta los detalles específicos a un consumidor de [servicios](/es/service/) (un consumidor que es un programa de computadora o un ser humano), haciendo un sistema más genérico y, por lo tanto, más fácil de entender. Un buen ejemplo es el sistema operativo (SO) de su computadora portátil. diff --git a/content/es/blue-green-deployment.md b/content/es/blue-green-deployment.md index 9ff907c1b8..a24ee157b8 100644 --- a/content/es/blue-green-deployment.md +++ b/content/es/blue-green-deployment.md @@ -12,7 +12,7 @@ El operador mantiene dos entornos, llamados "blue" y "green". Uno sirve el tráfico de producción (la versión que todos los usuarios usan actualmente), mientras que el otro está actualizado. Una vez que las pruebas han concluido en el entorno inactivo (green), el tráfico de producción se cambia (a menudo mediante el uso de un [balanceador de cargas](/es/load-balancer/). -Ten en cuenta que el despliegue blue-green usualmente significa cambiar los entornos por completo, comprendiendo muchos [servicios](/service/), todos a la vez. +Ten en cuenta que el despliegue blue-green usualmente significa cambiar los entornos por completo, comprendiendo muchos [servicios](/es/service/), todos a la vez. Confusamente, algunas veces el término se utiliza para referirse a servicios dentro de un sistema. Para evitar esta ambigüedad, se prefiere el término "despliegue con tiempo de inactividad cero" cuando se refiere a componentes individuales. diff --git a/content/es/event-driven-architecture.md b/content/es/event-driven-architecture.md index d027d95322..77dca52dc0 100644 --- a/content/es/event-driven-architecture.md +++ b/content/es/event-driven-architecture.md @@ -14,7 +14,7 @@ Esta arquitectura crea la estructura en la cual los eventos pueden ser enviados ## Problema que aborda -Mientras más datos son convertidos en tiempo real, encontrar maneras fiables de asegurar que los eventos son capturados y dirigidos al [servicio](/service/) apropiado para procesar solicitudes de eventos se hace más difícil. +Mientras más datos son convertidos en tiempo real, encontrar maneras fiables de asegurar que los eventos son capturados y dirigidos al [servicio](/es/service/) apropiado para procesar solicitudes de eventos se hace más difícil. Los métodos tradicionales para manejar eventos comúnmente no tienen una manera de garantizar que los eventos son dirigidos apropiadamente o que realmente fueron enviados o recibidos. Mientras las aplicaciones comienzan a escalar, se hace más desafiante orquestar eventos. diff --git a/content/es/function-as-a-service.md b/content/es/function-as-a-service.md index 265bab0fc9..1d133acc6c 100644 --- a/content/es/function-as-a-service.md +++ b/content/es/function-as-a-service.md @@ -7,7 +7,7 @@ tags: ["infrastructure", "", ""] ## ¿Qué es? -La Función como Servicio (FaaS según sus siglas en Inglés) es un tipo de [servicio](/service/) [sin servidor](/es/serverless/) en la [computación en la nube](/es/cloud-computing/) +La Función como Servicio (FaaS según sus siglas en Inglés) es un tipo de [servicio](/es/service/) [sin servidor](/es/serverless/) en la [computación en la nube](/es/cloud-computing/) que permite ejecutar código como respuesta a ciertos eventos sin necesidad de mantener infraestructura compleja típicamente asociada con la creación y lanzamiento de aplicaciones en [arquitectura de microservicios](/es/microservices-architecture/). @@ -33,4 +33,4 @@ FaaS ofrece a los desarrolladores un nivel de [abstracción](/es/abstraction/) p Como ejemplo, enviar un archivo a la nube podría generar una ejecución de código específico que transforme el archivo a varios formatos. La infraestructura FaaS aumentará automáticamente la capacidad de procesamiento del código para soportar gran demanda, y el desarrollador no deberá dedicar tiempo alguno a crear código que soporte [escalabilidad](/es/scalability/). -El cálculo de costos está basado solo en tiempo de procesamiento, por lo cual las organizaciones no deben pagar cuando las funciones no están en uso. \ No newline at end of file +El cálculo de costos está basado solo en tiempo de procesamiento, por lo cual las organizaciones no deben pagar cuando las funciones no están en uso. diff --git a/content/es/microservices-architecture.md b/content/es/microservices-architecture.md index 851b804187..97964a5004 100644 --- a/content/es/microservices-architecture.md +++ b/content/es/microservices-architecture.md @@ -6,7 +6,7 @@ tags: ["architecture", "fundamental", ""] ## ¿Qué es? -Una arquitectura de microservicios es un enfoque arquitectónico que divide las aplicaciones en (micro)[servicios](/service/) individuales e independientes, donde cada servicio se centra en una funcionalidad específica. +Una arquitectura de microservicios es un enfoque arquitectónico que divide las aplicaciones en (micro)[servicios](/es/service/) individuales e independientes, donde cada servicio se centra en una funcionalidad específica. Estos servicios trabajan juntos estrechamente, apareciendo ante el usuario final como una sola entidad. Tomemos Netflix como ejemplo. Su interfaz permite acceder, buscar y preestrenar vídeos. @@ -21,7 +21,7 @@ La demanda de una funcionalidad concreta no aumentará ni disminuirá necesariam Volviendo a nuestro ejemplo de Netflix. Digamos que después de una gran campaña de marketing, Netflix observa un gran volumen de inscripciones, pero la descarga de videos se ha mantenido más o menos estable en las primeras horas del día. El aumento de suscripciones exige más capacidad de suscripción. -Tradicionalmente (enfoque monolítico), toda la aplicación tendría que ser [escalada](/es/scalability/) para acomodar el aumento - un uso muy ineficiente de los recursos. +Tradicionalmente (enfoque monolítico), toda la aplicación tendría que ser [escalada](/es/scalability/) para acomodar el aumento - un uso muy ineficiente de los recursos. Las arquitecturas monolíticas también hacen que los desarrolladores tengan la posibilidad de caer en errores del diseño. Como todo el código está en el mismo sitio, es más fácil hacer que ese código esté [estrechamente acoplado](/tightly-coupled-architectures/) y más difícil aplicar el principio de separación de preocupaciones. diff --git a/content/es/service-mesh.md b/content/es/service-mesh.md index 2a429f781f..14c4430ddc 100644 --- a/content/es/service-mesh.md +++ b/content/es/service-mesh.md @@ -7,7 +7,7 @@ tags: ["networking", "", ""] ## ¿Qué es? -En un mundo de [arquitectura de microservicios](/es/microservices-architecture/)], las aplicaciones se dividen en múltiples [servicios](/service/) que se comunican a través de una red. +En un mundo de [arquitectura de microservicios](/es/microservices-architecture/)], las aplicaciones se dividen en múltiples [servicios](/es/service/) que se comunican a través de una red. Al igual que las redes de wifi, las redes de computadoras son poco confiables, proclives a ser atacadas y en muchos casos lentas. Las mallas de servicios afrontan estos nuevos desafíos mediante el manejo de tráfico (por ejemplo la comunicación) entre servicios y agregando [fiabilidad](/es/reliability/), [observabilidad](/es/observability/) e implementaciones de seguridad a todos los servicios. @@ -27,4 +27,4 @@ cada una causaría una duplicación innecesaria y podría hacer más lento el de Las mallas de servicios agregan fiabilidad, observabilidad y funcionalidades de seguridad uniformemente a todos los servicios en un clúster sin requerir cambios en el código. Antes de las mallas de servicios, esta funcionalidad tenía que ser agregada al código en cada servicio, -potencialmente convirtiéndose en una fuente de errores y deuda técnica. \ No newline at end of file +potencialmente convirtiéndose en una fuente de errores y deuda técnica. diff --git a/content/es/service.md b/content/es/service.md new file mode 100644 index 0000000000..38861764c8 --- /dev/null +++ b/content/es/service.md @@ -0,0 +1,12 @@ +--- +title: Servicio +status: Completed +category: Concepto +tags: ["application", "fundamental", ""] +--- + +Es importante señalar que en TI, el término 'servicio' tiene diversos significados. +En esta definición, nos enfocaremos en el más tradicional: servicio en términos de microservicio. +El modo en que los servicios difieren de los microservicios, o si siquiera existe tal diferencia, es una cuestión de matices, y las opiniones pueden diferir entre diferentes personas. +Para una definición a alto nivel, los consideraremos como lo mismo. +Por favor, consulte la definición de [microservicios](/es/microservices-architecture/). From 807180ee5213ffa39ddbc9705ea48419c09c4487 Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Sat, 13 May 2023 07:43:22 +0800 Subject: [PATCH 097/295] Add content/zh-tw/canary-deployment.md Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/zh-tw/canary-deployment.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/zh-tw/canary-deployment.md diff --git a/content/zh-tw/canary-deployment.md b/content/zh-tw/canary-deployment.md new file mode 100644 index 0000000000..845092af50 --- /dev/null +++ b/content/zh-tw/canary-deployment.md @@ -0,0 +1,28 @@ +--- +title: 金絲雀部署 +status: Completed +category: 概念 +tags: ["方法論", "應用程式", ""] +--- + +## 是什麼 {#what-it-is} + +金絲雀部署是一種部署策略,一開始有兩個環境:一個目前有即時流量的環境和一個目前無即時流量且已更新程式碼的環境。 +流量會逐漸從應用程式的原始版本轉移到更新後的版本。 +它可以從 1% 的流量開始,然後是 10%、25% 等等,以此類推,直到所有流量都轉移到已更新的版本。 +企業可以在正式環境中測試新版本的軟體,獲得回饋、錯誤診斷,並在必要的時候可以快速退回到穩定版本。 + +「金絲雀」這詞是指「礦坑中的金絲雀」的做法,把金絲雀帶入礦坑中確保礦工們的安全。 +如果出現無味的有害氣體,這隻鳥就會死亡,礦工們知道他們必須儘速離開。 +同樣地,如果更新後的程式碼出現問題,即時流量就會被"撤離"回原始版本中。 + +## 解決的問題 {#problem-it-addresses} + +無論測試策略有多嚴謹,總是會在正式環境中會發現一些錯誤。 +將 100% 流量從應用程式的一個版本完全切換到另一個版本,可能會導致更嚴重的失敗。 + +## 如何幫助 {#how-it-helps} + +金絲雀部署讓企業在大量流量轉移到新版本以前,可以查看新版本軟體在實際場景中使用的情形。 +這種策略讓企業能夠最大限度地減少停機時間,並在新部署出現問題時快速退回上個版本。 +它允許更深度的正式應用程式測試,而不會對整體使用者體驗產生重大影響。 From 87e190d568dcfa7d638c8c036ca758771518a737 Mon Sep 17 00:00:00 2001 From: "Martin E. Quintero" Date: Tue, 30 May 2023 10:46:11 -0500 Subject: [PATCH 098/295] [ES] /content/es/search.md (#2086) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * This commit updates the text Site Results to Resultados de la búsqueda to provide a version in Spanish. Signed-off-by: MartinEliasQ --- content/es/.wordlist.txt | 2 ++ content/es/search.md | 4 ++++ 2 files changed, 6 insertions(+) create mode 100644 content/es/search.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index c1c67b6d1b..2ed275fbfe 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -163,6 +163,7 @@ Kubernetes Language laptop Layer +layout License link localizations @@ -241,6 +242,7 @@ SaaS Salesforce SCE scripts +search Secure security Seokho diff --git a/content/es/search.md b/content/es/search.md new file mode 100644 index 0000000000..b9274cbf8a --- /dev/null +++ b/content/es/search.md @@ -0,0 +1,4 @@ +--- +title: Resultados de la búsqueda +layout: search +--- From 6adcb2a052687d0a785d940bf135cc43da70f470 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Tue, 30 May 2023 17:59:28 +0200 Subject: [PATCH 099/295] [ES] content/es/mutual-transport-layer-security.md (#2072) * added es/mutual-transport-layer-security.md Signed-off-by: marianogg9 --- content/es/.wordlist.txt | 1 + content/es/mutual-transport-layer-security.md | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 content/es/mutual-transport-layer-security.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 2ed275fbfe..79517a2b09 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -190,6 +190,7 @@ monitorear monitoreará monitoreo Morgan +mTLS multitenancy multitenant NASDAQ diff --git a/content/es/mutual-transport-layer-security.md b/content/es/mutual-transport-layer-security.md new file mode 100644 index 0000000000..fd327a4fe0 --- /dev/null +++ b/content/es/mutual-transport-layer-security.md @@ -0,0 +1,25 @@ +--- +title: Seguridad mutua de capa de transporte (mTLS) +status: Completed +category: Concepto +tags: ["security", "networking", ""] +--- + +## ¿Qué es? + +La seguridad mutua de capa de transporte (mTLS en Inglés) es una técnica utilizada para autenticar y codificar mensajes enviados entre dos [servicios](/service). +mTLS es el protocolo de [Seguridad de capa de transporte](/es/transport-layer-security/) (TLS) estándar pero, +en vez de validar la identidad de solo una conexión, se validan ambos lados. + +## Problema que aborda + +Los [microservicios](/es/microservices-architecture/) se comunican a través de una red y, +como las redes de wifi, la comunicación en tránsito en la red puede ser atacada. +mTLS asegura que ningún agente no autorizado pueda escuchar o personificar peticiones legítimas. + +## ¿Cómo ayuda? + +mTLS asegura que el tráfico es seguro y confiable en ambas direcciones entre un cliente y un servidor, +proveyendo una capa adicional de seguridad para los usuarios que utilizan una red o aplicación. +También verifica las conexiones con dispositivos que no tienen un proceso de autenticación, como un dispositivo de Internet de las Cosas. +Los ataques tales como personificación, robo de credenciales, fuerza bruta, etc., pueden ser prevenidos por mTLS. \ No newline at end of file From 7ab5be2380070c3bd69391d9db29db8c21d6d93f Mon Sep 17 00:00:00 2001 From: "Martin E. Quintero" Date: Tue, 30 May 2023 23:02:36 -0500 Subject: [PATCH 100/295] Es self healing (#2098) * Add self-healing.md * Change link in kubernetes.md to self-healing * Changed concept translatation Signed-off-by: MartinEliasQ --- content/es/kubernetes.md | 2 +- content/es/self-healing.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 content/es/self-healing.md diff --git a/content/es/kubernetes.md b/content/es/kubernetes.md index c84a6e40e5..72a0a09222 100644 --- a/content/es/kubernetes.md +++ b/content/es/kubernetes.md @@ -29,7 +29,7 @@ Aún más, Kubernetes funciona declarativamente, lo que significa que, en lugar Kubernetes se encargará del "cómo" por sí mismo. Esto da como resultado que Kubernetes sea extremadamente compatible con la Infraestructura como Código. -Kubernetes también se [autocura](/self-healing/). +Kubernetes también se [recupera automáticamente](/es/self-healing/). Esto significa que garantiza que el estado real del clúster siempre coincida con el estado deseado por el operador. Si Kubernetes detecta una desviación del estado deseado, un controlador de Kubernetes será invocado para corregirlo. Así que, aunque la infraestructura cambie continuamente, Kubernetes en sí mismo se adaptará continuamente y automáticamente a los cambios y asegurará de que coincida con el estado deseado. diff --git a/content/es/self-healing.md b/content/es/self-healing.md new file mode 100644 index 0000000000..78812fb9b4 --- /dev/null +++ b/content/es/self-healing.md @@ -0,0 +1,10 @@ +--- +title: Recuperación Automática +status: Completed +category: Propiedad +tags: ["infrastructure", "property"] +--- + +Un sistema de reparación automática puede resolver ciertos tipos de fallos sin requerir intervención humana. +Dispone de un bucle de "convergencia" o "control" que examina y analiza activamente el estado real del sistema, comparándolo con el estado que los operadores deseaban inicialmente. +Si se detecta una diferencia (por ejemplo, si hay menos instancias de la aplicación en ejecución de las deseadas), se tomarán medidas correctivas (por ejemplo, iniciar nuevas instancias). From 9d2580408a37afd720974aa8b4bba85ca2cbcf20 Mon Sep 17 00:00:00 2001 From: cdxvy30 Date: Wed, 17 May 2023 01:09:14 +0800 Subject: [PATCH 101/295] Update content/zh-tw/container.md Signed-off-by: Cody Chen Update content/zh-tw/container.md Signed-off-by: Cody Chen Update content/zh-tw/container.md Signed-off-by: cdxvy30 Add content/zh-tw/container.md Signed-off-by: cdxvy30 --- content/zh-tw/container.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/zh-tw/container.md diff --git a/content/zh-tw/container.md b/content/zh-tw/container.md new file mode 100644 index 0000000000..9902d64169 --- /dev/null +++ b/content/zh-tw/container.md @@ -0,0 +1,32 @@ +--- +title: 容器 +status: Completed +category: 技術 +tags: ["應用程式", "基本原理", ""] +--- + +## 是什麼 {#what-it-is} + +容器是由計算機中的作業系統所管理,且具有資源與功能限制的執行中行程。 +容器行程內可用的檔案可被打包成一個容器映像檔。 +容器在同一台機器上相鄰執行, +但通常作業系統會阻止讓不同容器行程間互相溝通。 + +## 解決的問題 {#problem-it-addresses} + +在容器技術出現之前,需要單獨的機器來執行不同應用程式。 +每台機器都需具備自己的作業系統,因而需要 CPU、記憶體和磁碟空間, +而這些資源都是為了執行一個單獨應用程式。 +另外,無論是作業系統的維護、升級或啟動都是額外工作負擔的來源。 + +## 如何幫助 {#how-it-helps} + +容器可共享相同的作業系統和機器資源, +分散作業系統的資源消耗,並有效率的使用實體機器的資源。 +這樣的能力具備可行性的原因,是因為容器之間的溝通通常都受到限制才能達成。 +這樣的方式也允許更多的應用程式在同台實體機器上執行。 + +然而容器也伴隨著一定的限制。 +由於容器共享相同的作業系統,因此行程的安全性可能會較其他替代方案差。 +容器還需要限制共享資源的使用。 +為了保證資源利用,管理員必須約束和限制記憶體與 CPU 使用率,避免讓其他的應用程式執行效率低落。 \ No newline at end of file From 4d831f39b3d0c82ca77bc8ee87de7d0a9d05139b Mon Sep 17 00:00:00 2001 From: roseyang Date: Tue, 16 May 2023 20:05:43 +0800 Subject: [PATCH 102/295] [zh-tw] localize 'DevOps' Signed-off-by: roseyang [zh-tw] Update content 1. Change the page links 2. Clearly and simply explain for the portmanteau Signed-off-by: roseyang [zh-tw] revise contents and wording 1. Follow CNCF style guide 2. Revised according to suggestion & team discussion Signed-off-by: roseyang --- content/zh-tw/devops.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/zh-tw/devops.md diff --git a/content/zh-tw/devops.md b/content/zh-tw/devops.md new file mode 100644 index 0000000000..78bc0bb1b2 --- /dev/null +++ b/content/zh-tw/devops.md @@ -0,0 +1,29 @@ +--- +title: DevOps +status: Completed +category: 概念 +tags: ["方法論", "", ""] +--- + +## 是什麼 {#what-it-is} + +DevOps 代表著由團隊擁有應用程式開發(Dev)到正式維運(Ops)完整過程的一種方法論,所以它才被稱作 DevOps。 +DevOps 不只是一套技術的運用,更是文化與流程的全面轉變。 +DevOps 要求工程團隊專注在更小的元件,而非一次處理整個功能,並且減少交接的次數,因為頻繁的交接正是導致錯誤的常見原因。 + +## 解決的問題 {#problem-it-addresses} + +傳統上,在具有[緊耦合](/zh-tw/tightly-coupled-architectures/)[單體式應用程式](/zh-tw/monolithic_apps/)的複雜組織裡,工作通常分散在不同的團隊之間。 +這導致工作需要多次的交接與漫長的前置時間(lead time)。 +每當一個元件或更新準備就緒時,它就會被放到下一個團隊的工作佇列中。 +由於每個人都只處理專案的一小部分,而這種方法導致缺乏所有權(ownership)。 +他們的目標將會是把工作交給下一個團隊,而不是向客戶提供正確的功能,這顯然是本末倒置。 + +當程式碼終於部署到正式環境,早已經歷了許多的開發人員、在眾多佇列中等待。 +假設此時程式碼無法運行,追查問題根因就會是一件非常困難的事情。 +而 DevOps 顛覆了上述這種開發方式。 + +## 如何幫助 {#how-it-helps} + +讓一個團隊可以擁有應用程式完整的生命週期,可帶來交接次數最小化、降低部署到正式環境的風險、擁有更好的程式碼品質(如果團隊也負起程式碼在正式環境運行的責任), +並且因為團隊擁有更多的自主權與所有權而提高了員工滿意度。 From 7a4bf792dee3e1b34605bb9e00288c2a40d0d7ee Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Mon, 5 Jun 2023 22:30:02 +0200 Subject: [PATCH 103/295] [FR] localization of Microservice-architecture Signed-off-by: Guillaume Bernard --- content/fr/microservices-architecture.md | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 content/fr/microservices-architecture.md diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md new file mode 100644 index 0000000000..1ec5283ad1 --- /dev/null +++ b/content/fr/microservices-architecture.md @@ -0,0 +1,36 @@ +--- +title: Microservices Architecture +status: Completed +tags: ["architecture", "fundamental", ""] +--- + +## Ce que c'est + +Une architecture en microservices est une approche architecturale qui divise les applications en (micro)[services](/service/) distincts et indépendants, chaque service étant focalisé sur une fonctionnalité spécifique. +Ces services fonctionnent en étroite collaboration, et l'utilisateur final a l'impression d'utiliser un seul service. +Prenez Netflix comme exemple. +Son interface vous permet d'accéder, de rechercher et de prévisualiser des vidéos. +Ces fonctionnalités sont probablement alimentées par des services plus petits qui gèrent chacun une fonctionnalité, par exemple l'authentification, la recherche ou l'affichage d'aperçus dans votre navigateur. + +Cette approche architecturale permet aux développeurs de déployer de nouvelles fonctionnalités ou de mettre à jour des fonctionnalités beaucoup plus rapidement que si elles étaient toutes fortement couplées, comme dans une [application monolithique](/monolithic-apps/) (voir ci-dessous). + +## Problème auquel il répond + +Les applications sont composées de différentes parties, chacune responsable d'une fonctionnalité spécifique. +L'augmentation de la demande pour une fonctionnalité particulière n'augmentera pas forcement la demande pour d'autres fonctionnalités de l'application. +Revenons à notre exemple Netflix. +Disons qu'après une grosse campagne marketing, Netflix connaît un gros pic d'inscriptions, mais l'utilisation du streaming est restée plus ou moins stable dans les premières heures de la journée. +L'augmentation du nombre d'inscriptions exige une plus grande capacité de la part de la fonctionnalité d'inscription. +Traditionnellement (approche monolithique), l'ensemble de l'application devrait être [mise à l'échelle](/scalability/) pour s'adapter à la demande - une utilisation très inefficace des ressources. + +Les architectures monolithiques font parfois tomber les développeurs dans des pièges de conception. +Étant donné que tout le code se trouve au même endroit, il est facile de rendre ce code [étroitement couplé](/architectures-couplées-étroitement/) et plus difficile d'appliquer le principe de séparation des responsabilités. +Les monolithes exigent également souvent que les développeurs comprennent l'intégralité de la base de code avant d'y faire des modifications. +L'architecture des microservices est une réponse à ces défis. + +## Quel en est l'utilité + +La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. +Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une grosse application sans avoir d'impact négatif par inadvertance sur le reste de l'application. +Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcouts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. +De nombreuses [technologies Cloud Native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. From 4413a1912f2e77f6c8a808149e95e95602ae4502 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Mon, 5 Jun 2023 23:12:04 +0200 Subject: [PATCH 104/295] [FR] Microservice-architecture - Fix title Signed-off-by: Guillaume Bernard --- content/fr/microservices-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index 1ec5283ad1..603ea918ea 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -1,5 +1,5 @@ --- -title: Microservices Architecture +title: Architecture en Microservices status: Completed tags: ["architecture", "fundamental", ""] --- From 7fe61b7909a8e01e87dbd28c89beb138e50bbddb Mon Sep 17 00:00:00 2001 From: "Martin E. Quintero" Date: Wed, 7 Jun 2023 18:07:14 -0500 Subject: [PATCH 105/295] [ES] Version Control (#2103) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added the translated version of version control * Update content/es/version-control.md Signed-off-by: MartinEliasQ Signed-off-by: Martin E. Quintero Co-authored-by: Rodolfo Martínez Vega --- content/es/version-control.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 content/es/version-control.md diff --git a/content/es/version-control.md b/content/es/version-control.md new file mode 100644 index 0000000000..c6adf97264 --- /dev/null +++ b/content/es/version-control.md @@ -0,0 +1,26 @@ +--- +title: Control de versiones +status: Deprecated +category: Tecnología +draft: true +tags: ["methodology", "", ""] +--- + +## ¿Qué es? + +El control de versiones (o control de fuente) es la práctica de rastrear y gestionar los cambios en un documento. +Es un sistema que registra cambios en un archivo o conjunto de archivos a lo largo del tiempo, de manera que puedas recuperar versiones específicas más adelante. + +## Problema que aborda + +Los sistemas de control de versiones funcionan para abordar los siguientes problemas: +respaldar un documento o base de código a medida que cambia con el tiempo, +permitir a múltiples usuarios resolver conflictos cuando hay cambios superpuestos y +almacenar un registro de los cambios a lo largo del tiempo. +Dado que el código de la aplicación a menudo es complejo y vital para los procedimientos de negocio esenciales, resulta relevante seguir la pista de quién hizo qué cambio, cuándo se produjo y la razón del mismo. +Además, muchas, si no la mayoría de las aplicaciones, son modificadas por varios desarrolladores y a menudo existen conflictos entre los cambios introducidos por diferentes desarrolladores. + +## ¿Cómo ayuda? + +El control de versiones ayuda a los desarrolladores a avanzar rápidamente y a mantener la eficiencia, al mismo tiempo que guarda un registro de los cambios y ofrece una herramienta para resolver conflictos. +Esta herramienta facilita la tarea de guardar el código de una aplicación en un repositorio, lo que simplifica el trabajo en equipo. Hoy en día, para desarrollar aplicaciones modernas, es muy común depender de sistemas de control de versiones, como git, que se utiliza para almacenar este código. From 7986ddb2b383f26bd1b3206bf84b8de734215b24 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Mon, 12 Jun 2023 20:27:29 +0200 Subject: [PATCH 106/295] [ES] content/es/virtualization.md (#2070) * added es/virtualization.md. * updated virtualization reference in virtual-machine term. Signed-off-by: marianogg9 --- content/es/virtual-machine.md | 2 +- content/es/virtualization.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 content/es/virtualization.md diff --git a/content/es/virtual-machine.md b/content/es/virtual-machine.md index cae79f4b0f..de6ea04c7a 100644 --- a/content/es/virtual-machine.md +++ b/content/es/virtual-machine.md @@ -9,7 +9,7 @@ tags: ["fundamental", "infrastructure", ""] Una máquina virtual (VM según sus siglas en Inglés) es una computadora y su sistema operativo no relacionados a un hardware específico. -Las máquinas virtuales utilizan el método de [virtualización](/virtualization/) que crea múltiples computadoras virtuales dentro una sola computadora física. +Las máquinas virtuales utilizan el método de [virtualización](/es/virtualization/) que crea múltiples computadoras virtuales dentro una sola computadora física. Esta separación facilita a organizaciones y proveedores de infraestructura a crear y eliminar máquinas virtuales sin impactar el hardware de base. diff --git a/content/es/virtualization.md b/content/es/virtualization.md new file mode 100644 index 0000000000..33b43c9f4b --- /dev/null +++ b/content/es/virtualization.md @@ -0,0 +1,31 @@ +--- +title: Virtualización +status: completed +category: Tecnología +tags: ["fundamental", "infrastructure", "methodology"] +--- + +## ¿Qué es? + +La virtualización, en el contexto de la computación nativa para la nube, +refiere al proceso de tomar una computadora física, algunas veces llamada servidor, +y permitirle ejecutar múltiples sistemas operativos aislados. +Estos sistemas operativos aislados y sus recursos computacionales dedicados (CPU, memoria y red) son +referidos como máquinas virtuales. +Cuando hablamos de una [máquina virtual](/es/virtual-machine), estamos hablando de una computadora definida por software. +Algo que luce y actúa como una computadora real pero comparte hardware con otras máquinas virtuales. +La [computación en la nube](/es/cloud-computing/) está principalmente basada en la tecnología de virtualización. +Como ejemplo, se puede rentar una computadora a AWS - una computadora que es en realidad una máquina virtual. + +## Problema que aborda + +La virtualización resuelve varios problemas, incluyendo mejorar el uso del hardware físico +permitiendo más aplicaciones a ser ejecutadas en una misma máquina física +manteniendo mientras tanto el aislamiento entre ellas por seguridad. + +## ¿Cómo ayuda? + +Las aplicaciones ejecutándose en máquinas virtuales no están al tanto de que están compartiendo una máquina física. +La virtualización permite también a los usuarios de un centro de datos a crear nuevas computadoras (o máquinas virtuales) en minutos +sin preocuparse por las limitaciones físicas de agregar una nueva computadora al centro de datos. +Las máquinas virtuales habilitan a los usuarios a acelerar el proceso de obtención de una nueva máquina virtual. \ No newline at end of file From aa46ee588611d2660c8d6ff93a9af14679f90697 Mon Sep 17 00:00:00 2001 From: "Martin E. Quintero" Date: Mon, 12 Jun 2023 19:33:59 -0500 Subject: [PATCH 107/295] Added the translated version of the Zero trust architecture. (#2122) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added the translated version of the Zero trist architecture. * Update content/es/zero-trust-architecture.md Signed-off-by: MartinEliasQ Signed-off-by: Martin E. Quintero Co-authored-by: Rodolfo Martínez Vega --- content/es/zero-trust-architecture.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/es/zero-trust-architecture.md diff --git a/content/es/zero-trust-architecture.md b/content/es/zero-trust-architecture.md new file mode 100644 index 0000000000..b7b1d96e41 --- /dev/null +++ b/content/es/zero-trust-architecture.md @@ -0,0 +1,25 @@ +--- +title: Arquitectura de Confianza Cero +status: Completed +category: Concepto +tags: ["security", "", ""] +--- + +## ¿Qué es? + +La arquitectura de confianza cero se refiere a un enfoque del diseño y la implementación de sistemas informáticos donde la confianza se elimina por completo. +El principio fundamental de "nunca confiar, siempre verificar" implica que los dispositivos o sistemas, al comunicarse con otros componentes, siempre deben verificarse a sí mismos antes de hacerlo. +Hoy en día, en muchas redes corporativas, los sistemas y dispositivos internos pueden comunicarse libremente entre sí, ya que se encuentran dentro del límite de confianza del perímetro de dichas redes. +La arquitectura de confianza cero toma un enfoque opuesto en el que, a pesar de estar dentro del perímetro de la red, los componentes dentro del sistema tienen que pasar primero por una verificación antes de que se establezca cualquier comunicación. + +## Problema que aborda + +En el enfoque tradicional basado en la confianza, donde los sistemas y dispositivos se encuentran dentro de un perímetro de red corporativa, la suposición es que, ya que existe confianza, no hay problemas. +Sin embargo, la arquitectura de confianza cero reconoce que la confianza es una vulnerabilidad. +En el supuesto de que un atacante consiga acceso a un dispositivo confiable, el sistema se vuelve vulnerable a un ataque. Esto depende del nivel de confianza y del acceso que se le haya otorgado a dicho dispositivo, pues el atacante, al estar dentro del perímetro "de confianza" de la red, es capaz de moverse lateralmente a lo largo del sistema. +Dentro de una arquitectura de confianza cero, la confianza se elimina, reduciendo de esta manera la superficie de ataque, ya que el atacante se ve obligado a realizar una verificación antes de proceder a través del sistema. + +## ¿Cómo ayuda? + +La adopción de una arquitectura de confianza cero trae como beneficio principal el aumento de la seguridad, al mismo tiempo que reduce la superficie de ataque. +La eliminación de la confianza en el sistema corporativo resulta en un aumento en la cantidad y en la resistencia de los controles de seguridad, complicando la tarea para cualquier atacante que intente acceder a otras secciones del sistema. From d95d9048115539337ae273818d4ad6ea26f4b659 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Wed, 14 Jun 2023 15:48:54 +0200 Subject: [PATCH 108/295] [fr] Localize Bare Metal Machine Signed-off-by: Guillaume Bernard --- content/fr/bare-metal-machine.md | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/fr/bare-metal-machine.md diff --git a/content/fr/bare-metal-machine.md b/content/fr/bare-metal-machine.md new file mode 100644 index 0000000000..a1be335a98 --- /dev/null +++ b/content/fr/bare-metal-machine.md @@ -0,0 +1,34 @@ +--- +title: Machine Physique (Bare Metal) +status: Completed +category: technology +tags: ["infrastructure", "", ""] +--- + +## Ce que c'est + +Une machine physique, ou machine bare metal, fait référence a un ordinateur physique, plus précisément un serveur, qui possède un et un seul système d'exploitation. +En informatique moderne, la plupart des serveurs sont des [machines virtuelles](/virtual-machine/), il est donc important de faire cette distinction. +Un serveur physique est généralement un ordinateur assez grand qui intègre du matériel puissant. +Installer un système d'exploitation et exécuter des applications directement sur ce matériel physique, +sans [virtualisation](/virtualization/), est ce que l'on appelle une machine physique, ou machine bare metal + +## Problème auquel il répond + +Installer un seul système d'exploitation sur un ordinateur physique est le modèle original de l'informatique. +Toutes les ressources de l'ordinateur physique sont disponibles directement pour le système d'exploitation et sans couche de virtualisation présente, il n'y a pas de latence induite par la traduction des instructions du système d'exploitation vers le matériel. + +## Quel en est l'utilité + +En dédiant toutes les ressources de calcul d'un ordinateur à un seul système d'exploitation, +on fournit potentiellement les meilleures performances possibles au système d'exploitation. +Si on doit exécuter une charge de travail qui doit avoir un accès extrêmement rapide aux ressources matérielles, +une machine physique peut être la bonne solution. + +Dans le contexte des [applications cloud natives](/cloud-native-apps/), +nous envisageons généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. +On peut utiliser pour cela la [mise à l'échelle horizontale](/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). +Mais certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/vertical-scaling/) (ajouter plus de puissance à une machine existante) +et/ou une réponse extrêmement rapide du matériel. Dans ce cas une machine physique est plus adapté. +Les machines physiques permettent également des réglages avancés au niveau du matériel physique et éventuellement des pilotes matériels pour vous aider à accomplir votre tâche. + From 8c4d74e73fb73d98a4b005ca15bb2b7fe2518f66 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Wed, 14 Jun 2023 16:09:16 +0200 Subject: [PATCH 109/295] [fr] Localize Bare Metal Machine Signed-off-by: Guillaume Bernard --- content/fr/bare-metal-machine.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/fr/bare-metal-machine.md b/content/fr/bare-metal-machine.md index a1be335a98..b7b97f4cc4 100644 --- a/content/fr/bare-metal-machine.md +++ b/content/fr/bare-metal-machine.md @@ -7,28 +7,28 @@ tags: ["infrastructure", "", ""] ## Ce que c'est -Une machine physique, ou machine bare metal, fait référence a un ordinateur physique, plus précisément un serveur, qui possède un et un seul système d'exploitation. +Une machine physique, ou machine bare metal, fait référence à un ordinateur physique, plus précisément un serveur, qui possède un et un seul système d'exploitation. En informatique moderne, la plupart des serveurs sont des [machines virtuelles](/virtual-machine/), il est donc important de faire cette distinction. -Un serveur physique est généralement un ordinateur assez grand qui intègre du matériel puissant. +Un serveur physique est généralement un ordinateur assez gros qui intègre du matériel puissant. Installer un système d'exploitation et exécuter des applications directement sur ce matériel physique, -sans [virtualisation](/virtualization/), est ce que l'on appelle une machine physique, ou machine bare metal +sans [virtualisation](/virtualization/), est ce que l'on appelle une machine physique, ou machine bare metal. ## Problème auquel il répond -Installer un seul système d'exploitation sur un ordinateur physique est le modèle original de l'informatique. +En informatique, installer un seul système d'exploitation sur un ordinateur physique est le modèle historique. Toutes les ressources de l'ordinateur physique sont disponibles directement pour le système d'exploitation et sans couche de virtualisation présente, il n'y a pas de latence induite par la traduction des instructions du système d'exploitation vers le matériel. ## Quel en est l'utilité En dédiant toutes les ressources de calcul d'un ordinateur à un seul système d'exploitation, -on fournit potentiellement les meilleures performances possibles au système d'exploitation. +on fournit théoriquement les meilleures performances possibles au système d'exploitation. Si on doit exécuter une charge de travail qui doit avoir un accès extrêmement rapide aux ressources matérielles, une machine physique peut être la bonne solution. Dans le contexte des [applications cloud natives](/cloud-native-apps/), -nous envisageons généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. +on envisage généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. On peut utiliser pour cela la [mise à l'échelle horizontale](/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). Mais certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/vertical-scaling/) (ajouter plus de puissance à une machine existante) -et/ou une réponse extrêmement rapide du matériel. Dans ce cas une machine physique est plus adapté. -Les machines physiques permettent également des réglages avancés au niveau du matériel physique et éventuellement des pilotes matériels pour vous aider à accomplir votre tâche. +et/ou une réponse extrêmement rapide du matériel. Dans ce cas, une machine physique est plus adaptée. +Les machines physiques permettent également des réglages avancés au niveau du matériel physique et éventuellement des pilotes matériels pour nous aider à accomplir notre tâche. From 60377c1dffe648a06b49c1407343ea4b9dff0609 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Fri, 12 May 2023 10:09:41 -0400 Subject: [PATCH 110/295] Traduction de Loosely Coupled Architecture into French Signed-off-by: Christophe Sauthier --- content/fr/loosely-coupled-architectures.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 content/fr/loosely-coupled-architectures.md diff --git a/content/fr/loosely-coupled-architectures.md b/content/fr/loosely-coupled-architectures.md new file mode 100644 index 0000000000..8d884dcfa0 --- /dev/null +++ b/content/fr/loosely-coupled-architectures.md @@ -0,0 +1,16 @@ +--- +title: Architecture Faiblement Couplée +status: Completed +category: Property +tags: ["fundamental", "architecture", "property"] +--- + +L'architecture faiblement couplée est un type d'architecture où les différents composants +d'une application sont construits indépendamment les uns des autres (c'est le paradigme opposé +des [architectures fortement couplées](/tightly-coupled-architectures/)). +Chaque composant, parfois identifié comme un [microservice](/microservices/), est construit pour effectuer une tâche spécifique d'une manière qui lui permet d'être utilisé par d'autres services. +Cette approche est souvent plus longue à mettre en œuvre que l'architecture fortement couplée +mais, elle a plusieurs avantages en particulier lorsque l'application change d'échelle. + +Les applications faiblement couplées permettent aux équipes de développer des fonctionnalités, de les déployer et les mettre à l'échelle de manière indépendante, ce qui permet aux organisations d'itérer rapidement au sein des composants unitaires. +Le développement d'applications est plus rapide et les équipes se structurent autour de leurs compétences, en mettant l'accent sur leurs applications spécifiques. From 21c81035cfb92215a085613304d6bf11b93e35ea Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Sun, 16 Apr 2023 18:38:56 -0400 Subject: [PATCH 111/295] =?UTF-8?q?Fix=20comments=20from=20Ludo,=20Flavien?= =?UTF-8?q?=20and=20St=C3=A9phane?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christophe Sauthier --- content/fr/scalability.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/fr/scalability.md b/content/fr/scalability.md index 6f50169c20..7882ee19c0 100644 --- a/content/fr/scalability.md +++ b/content/fr/scalability.md @@ -1,21 +1,21 @@ --- -title: Extensibilité (Scalabilité) +title: Capacité de mise à l'échelle (Scalabilité) status: Completed category: property tags: ["fundamentals", "", ""] --- -L'extensibilité (ou scalabilité) correspond à la capacité d'un système à s'agrandir. -C'est à dire augmenter la capacité d'un système à faire ce qu'il est supposé faire. +La capacité de mise à l'échelle (ou scalabilité) correspond à la capacité d'un système à s'agrandir. +C'est à dire à augmenter la capacité d'un système à faire ce qu'il est supposé faire. Par exemple, un [cluster](/cluster/) [Kubernetes](/kubernetes/) change d'echelle en augmentant -ou en réduisant le nombre d'applications [contenerisées](/containerization/), +ou en réduisant le nombre d'applications [conteneurisées](/containerization/), mais cette scalabilité dépend de plusieurs facteurs. -Combien de [nodes](/nodes/) possède-t-il, combien de [conteneurs](/container/) peut gérer chaque noeud, +Combien de [nœuds](/nodes/) possède-t-il, combien de [conteneurs](/container/) peut gérer chaque nœud, et combien d'enregistrements et d'opérations le plan de contrôle (control plane) peut-il supporter ? Un système extensible permet de rajouter simplement plus de capacité. On différencie deux types d'extension. -D'un coté, il y a l'[extensibilité horizontale](/horizontal-scaling/) qui ajoute des noeuds pour supporter l'augmentation de charge. -A l'opposé, il y a l'[extensibilité verticale](/vertical-scaling/) où les nodes individuelles sont rendues plus performantes pour permettre plus de transactions +D'un coté, il y a la [mise à l'échelle horizontale](/horizontal-scaling/) qui ajoute des nœuds pour supporter l'augmentation de charge. +À l'opposé, il y a la [mise à l'échelle verticale](/vertical-scaling/) où les nœuds individuels sont rendus plus performants pour permettre plus de transactions (i.e. en ajoutant plus de mémoire ou de CPU à une machine individuelle). Un système extensible est capable de changer facilement pour satisfaire les besoins des utilisateurs. From 1ba6268727a1860350df2627b6f5a62aac8913cd Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Wed, 14 Jun 2023 23:59:45 +0200 Subject: [PATCH 112/295] [fr] Localize Virtualization Signed-off-by: Guillaume Bernard --- content/fr/virtualization.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/fr/virtualization.md diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md new file mode 100644 index 0000000000..bb2ea1e621 --- /dev/null +++ b/content/fr/virtualization.md @@ -0,0 +1,29 @@ +--- +title: Virtualisation +status: completed +category: technology +tags: ["fundamental", "infrastructure", "methodology"] +--- + +## Ce que c'est + +La virtualisation, dans le cadre de l'informatique Cloud Native, +fait référence à l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. +Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont +appelées machines virtuelles ou VM. +Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini logiciellement. +C'est à dire quelque chose qui ressemble et se comporte comme un vrai ordinateur mais partage son matériel avec d'autres machines virtuelles. +Le [Cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. +Par exemple, lorsque vous louez un "ordinateur" auprès d'AWS, cet ordinateur est en fait une machine virtuelle. + +## Problème auquel il répond + +La virtualisation résout plusieurs problèmes, notamment l'amélioration de l'utilisation du matériel physique +en permettant à plus d'applications de s'exécuter sur un même ordinateur physique +tout en restant isolés les uns des autres pour des raisons de sécurité. + +## Quelle en est l'utilité + +Les applications exécutées sur des machines virtuelles ne savent pas qu'elles partagent un ordinateur physique. +La virtualisation permet également de démarrer un nouvel "ordinateur" (une machine virtuelle) en quelques minutes +sans se soucier des contraintes physiques liées à l'ajout d'un nouvel ordinateur dans un centre de données. From 30db8ddaab6ed9e233515aaf23a52cf3e03b2db5 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 15 Jun 2023 10:02:51 +0200 Subject: [PATCH 113/295] [fr] Localize Virtualization Signed-off-by: Guillaume Bernard --- content/fr/virtualization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index bb2ea1e621..f605d38809 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -8,7 +8,7 @@ tags: ["fundamental", "infrastructure", "methodology"] ## Ce que c'est La virtualisation, dans le cadre de l'informatique Cloud Native, -fait référence à l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. +est l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont appelées machines virtuelles ou VM. Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini logiciellement. From 82c1ab05b25605201afcef74e660735a9bc9db73 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 15 Jun 2023 13:39:55 +0200 Subject: [PATCH 114/295] [FR] localize Nodes Signed-off-by: Guillaume Bernard --- content/fr/nodes.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/fr/nodes.md diff --git a/content/fr/nodes.md b/content/fr/nodes.md new file mode 100644 index 0000000000..16c421c938 --- /dev/null +++ b/content/fr/nodes.md @@ -0,0 +1,28 @@ +--- +title: Nœud +status: Completed +category: Concept +tags: ["infrastructure", "fundamental", ""] +--- + +## Ce que c'est + +Un nœud est un ordinateur qui travaille de concert avec d'autres ordinateurs, ou nœuds, pour accomplir une tâche commune. +Prenez votre ordinateur portable, votre modem et votre imprimante, par exemple. +Ils sont tous connectés sur votre réseau wifi communiquant et collaborant, chacun représentant un nœud. +En [Cloud computing](/cloud-computing/), un nœud peut être un ordinateur physique, +un ordinateur virtuel, appelé [VM](/virtual-machine/), ou encore un [Conteneur](/container/). + +## Problème auquel il répond + +Bien qu'une application puisse s'exécuter sur une seule machine, et beaucoup le font, cela comporte certains risques. +En effet, une panne du système sous-jacent va perturber l'application. +Pour résoudre ce problème, les développeurs ont commencé à créer des [applications distribuées](/distributed-apps/) où chaque processus s'exécute sur son propre nœud. +Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'un groupe formant un [cluster](/cluster/), c'est a dire un groupe de nœuds qui travaillent ensemble pour atteindre un objectif commun. + +## Quel en est l'utilité + +Un nœud fourni une unité de calcul (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. +Dans une plate-forme ou une application [cloud native](/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. +Idéalement, les nœuds individuels sont indifférenciés en ce sens que +tout nœud d'un type particulier est indiscernable de tout autre nœud du même type. \ No newline at end of file From eca2f73ae625aca072cdb5b65bfd9644fbb9375e Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 15 Jun 2023 13:48:37 +0200 Subject: [PATCH 115/295] [FR] localize Nodes Signed-off-by: Guillaume Bernard --- content/fr/nodes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/nodes.md b/content/fr/nodes.md index 16c421c938..1af6902cac 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -8,14 +8,14 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est Un nœud est un ordinateur qui travaille de concert avec d'autres ordinateurs, ou nœuds, pour accomplir une tâche commune. -Prenez votre ordinateur portable, votre modem et votre imprimante, par exemple. +Prenez par exemple votre ordinateur portable, votre modem et votre imprimante. Ils sont tous connectés sur votre réseau wifi communiquant et collaborant, chacun représentant un nœud. En [Cloud computing](/cloud-computing/), un nœud peut être un ordinateur physique, un ordinateur virtuel, appelé [VM](/virtual-machine/), ou encore un [Conteneur](/container/). ## Problème auquel il répond -Bien qu'une application puisse s'exécuter sur une seule machine, et beaucoup le font, cela comporte certains risques. +Bien qu'une application puisse s'exécuter sur une seule machine, comme beaucoup le font encore, cela comporte certains risques. En effet, une panne du système sous-jacent va perturber l'application. Pour résoudre ce problème, les développeurs ont commencé à créer des [applications distribuées](/distributed-apps/) où chaque processus s'exécute sur son propre nœud. Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'un groupe formant un [cluster](/cluster/), c'est a dire un groupe de nœuds qui travaillent ensemble pour atteindre un objectif commun. @@ -24,5 +24,5 @@ Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'u Un nœud fourni une unité de calcul (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. Dans une plate-forme ou une application [cloud native](/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. -Idéalement, les nœuds individuels sont indifférenciés en ce sens que +Idéalement, les nœuds individuels sont indifférenciés, c'est à dire que tout nœud d'un type particulier est indiscernable de tout autre nœud du même type. \ No newline at end of file From 184cca9099bc3f437c395aa3f4bb5090d9a3d47d Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 15 Jun 2023 23:07:10 +0200 Subject: [PATCH 116/295] [FR] localize Distributed Apps Signed-off-by: Guillaume Bernard --- content/fr/distributed-apps.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/fr/distributed-apps.md diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md new file mode 100644 index 0000000000..363234d5e1 --- /dev/null +++ b/content/fr/distributed-apps.md @@ -0,0 +1,29 @@ +--- +title: Applications Distribuées +status: Completed +category: concept +tags: ["architecture", "", ""] +--- + +## Ce que c'est + +Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes plus petites. +Les applications distribuées sont généralement composées de [microservices](/microservices/) individuels +qui s'occupent de différentes problématiques au sein d'une application plus large. +Dans un environnement Cloud Native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). + +## Problème auquel il répond + +Une application s'exécutant sur un seul ordinateur représente un point unique de défaillance : si cet ordinateur tombe en panne, l'application devient indisponible. +Les applications distribuées sont souvent opposées aux [applications monolithiques](/monolithic-apps/). +Une application monolithique peut être plus difficile à mettre à l'échelle car les différents composants ne peuvent pas être mis à l'échelle indépendamment. +Une application monolithique peut également devenir un frein à la vitesse de développement à mesure que l'application grossi +car davantage de développeurs doivent travailler sur une base de code partagée qui n'a pas toujours des limites bien définies. + +## Quel en est l'utilité + +En divisant une application en différents éléments et en les exécutant à différents endroits, le système global peut tolérer davantage d'échecs. +Cela permet également à une application de tirer parti des fonctionnalités de mise à l'échelle non disponibles pour une application ayant une instance unique, +à savoir la possibilité de [mettre à l'échelle horizontalement](/horizontal-scaling/). +Cela a cependant un coût : une complexité accrue et des couts opérationnels supplémentaires +car vous exécutez désormais de nombreux composants d'application au lieu d'une seule application monolithique. From 7bdf723cb0ac57f2f710bc2823d5b92665d6b6ea Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Mon, 19 Jun 2023 22:11:44 +0200 Subject: [PATCH 117/295] Initialize cluster into French Signed-off-by: Ludovic Logiou --- content/fr/cluster.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/fr/cluster.md diff --git a/content/fr/cluster.md b/content/fr/cluster.md new file mode 100644 index 0000000000..d0272dc915 --- /dev/null +++ b/content/fr/cluster.md @@ -0,0 +1,30 @@ +--- +title: Cluster +status: Completed +category: Concept +tags: ["infrastructure", "fundamental", ""] +--- + +## Ce que c'est + +Un cluster est un groupe d'ordinateurs ou d'applications qui fonctionnent ensemble dans un but commun. +Dans le contexte du cloud native computing, le terme est souvent appliqué à [Kubernetes](/kubernetes/). +Un cluster Kubernetes est un ensemble de services (ou de charge de travail) qui s'exécute dans leurs propres conteneurs, souvent sur des machines différentes. +L'ensemble de tous ces services [conteneurisés](/containerization/), connectés au travers du réseau, représente un cluster. + +## Problème auquel il répond + +Un logiciel qui s'exécute sur un seul ordinateur représente un point de défaillance unique +- si cet ordinateur tombe en panne, ou si accidentellement quelqu'un débranche le cable d'alimentation, +alors quelque système critique pourrait être mis hors-ligne. +C'est pourquoi généralement les logiciels modernes sont souvent construits sous forme d'[applications distribuée](/distributed-apps/), regroupés ensemble comme un cluster. + +## Quel en est l'utilité + +Les applications réparties en cluster s'exécutent sur plusieurs machines, élimine le point de défaillance unique. +Cependant, fabriquer des systèmes distribués est vraiment difficile. +Dans les fait, c'est une discipline informatique à part entière. +Le besoin en systèmes globaux et les années d'essais et d'erreur ont mené au développement d'un nouveau genre de pile technique: +[cloud native technologies](/cloud-native-tech/). +Ces nouvelles technologies sont les blocs de construction qui facilitent l'exploitation et la création de systèmes distribués. + From bb5e686d1a1816ab8284be02d6a785ac0981be79 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Mon, 19 Jun 2023 22:24:30 +0200 Subject: [PATCH 118/295] Add sestegra feedbacks Signed-off-by: Ludovic Logiou --- content/fr/kubernetes.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index 3d837da4f6..c59bb1a754 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -22,15 +22,15 @@ L'automatisation de l'infrastructure et la gestion de configuration déclarative ## Quel en est l'utilité -Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/), Kubernetes aide à l'automatisation mais à l'avantage de fonctionnait avec des conteneurs. -Les conteneurs sont plus résistants aux écarts de configuration que les machines [virtuelles](/virtual-machine/) ou physique. +Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/) Kubernetes aide à l'automatisation, mais à l'avantage de fonctionner avec des conteneurs. +Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/virtual-machine/) ou physique. -De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu qu'un operator demande à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (e.g., YAML) - à quoi l'infrastructure devrait ressembler. +De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (e.g., YAML) - à quoi l'infrastructure devrait ressembler. Kubernetes s'occupe ensuite du "Comment". Il en résulte que Kubernetes est extrêmement compatible avec l'infrastructure en tant que code. -Kubernetes s'[auto-guérit](/self-healing/) également. +Kubernetes s'[auto-répare](/self-healing/) également. L'état actuel du cluster correspond toujours à l'état désiré par l'opérateur. -Si kubernetes détecte une déviation par rapport à ce qui est décrit dans les fichiers manifests, un contrôleur Kubernetes va s'en occuper et le corriger. +Si Kubernetes détecte une déviation par rapport à ce qui est décrit dans les fichiers manifestes, un contrôleur Kubernetes va s'en occuper et le corriger. Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle correspond à l'état souhaité. From 410c3ed17daa0835b462d75ae09146b30ccb593f Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Mon, 5 Jun 2023 01:42:06 +0800 Subject: [PATCH 119/295] Add content/zh-tw/continuous-integration.md Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/zh-tw/continuous-integration.md | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 content/zh-tw/continuous-integration.md diff --git a/content/zh-tw/continuous-integration.md b/content/zh-tw/continuous-integration.md new file mode 100644 index 0000000000..a2e7b4635e --- /dev/null +++ b/content/zh-tw/continuous-integration.md @@ -0,0 +1,33 @@ +--- +title: 持續整合 (CI) +status: Completed +category: 概念 +tags: ["應用程式", "方法論", ""] +--- + +## 是什麼 {#what-it-is} + +持續整合,通常縮寫為 CI,是盡可能定期整合程式碼更改的實踐方法。 +CI 是 [持續交付](/zh-tw/continuous-delivery/)(CD)的前置工作。 +傳統上,CI 的流程從程式碼更動提交到版本控管(Git、Mercurial 或 Subversion)時開始, +以準備被 CD 系統使用的測試產出物(tested artifact)直到結束。 + +## 解決的問題 {#problem-it-addresses} + +軟體系統通常是龐大且複雜的,有許多開發人員在維護和更新它們。 +在系統的不同部分同時工作, +這些開發人員可能會做出互相衝突的修改,並在無意間破壞對方的工作。 +此外,由於多位開發人員在同一個專案上工作, +任何日常任務,如測試和計算程式碼品質,都需要每位開發人員重複執行,浪費了時間。 + +## 如何幫助 {#how-it-helps} + +每當開發人員提交修改時,CI 軟體會自動檢查程式碼更動是否合併得很乾淨。 +使用 CI 伺服器來執行程式碼品質檢查、測試甚至部署,這幾乎是一種普遍存在的做法。 +因此,它成為團隊內部品質控管的具體實現方式。 +CI 讓軟體團隊能將每次的程式碼提交轉變為具體的失敗或可用的發布候選版本。 + +## 相關術語 {#related-terms} + +* [持續交付](/zh-tw/continuous-delivery/) +* [持續部署](/zh-tw/continuous-deployment/) From 2e90792dbea016241bcaf9b945c641dc6633ab19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sun, 14 May 2023 16:10:06 +0200 Subject: [PATCH 120/295] [fr] Localize reliability update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/reliability.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 content/fr/reliability.md diff --git a/content/fr/reliability.md b/content/fr/reliability.md new file mode 100644 index 0000000000..2658220581 --- /dev/null +++ b/content/fr/reliability.md @@ -0,0 +1,11 @@ +--- +title: Fiabilité +status: Completed +category: property +tags: ["fundamental", "property", ""] +--- + +Du point de vue Cloud Native, la fiabilité fait référence à la capacité d'un système à réagir face aux pannes. +Si nous disposons d'un [système distribué](/distributed-systems/) qui continue de fonctionner alors que l'infrastructure change et que des composants unitaires tombent en panne, alors il est fiable. +En revanche, s'il tombe facilement en panne et que les opérateurs doivent intervenir manuellement pour le maintenir en état de marche, alors il n'est pas fiable. +L'objectif des [applications Cloud Natives](/cloud-native-apps/) est de créer des systèmes intrinsèquement fiables. From 59ee2eb4ce57b3fd5b709000f9f14a134727468b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodolfo=20Mart=C3=ADnez=20Vega?= Date: Tue, 20 Jun 2023 10:07:21 -0600 Subject: [PATCH 121/295] [ES] added content/es/shift-left.md (#2081) * [es] #1773 Issue : added the content/es/shift-left.md Signed-off-by: Naymul Islam --- content/es/.wordlist.txt | 2 ++ content/es/shift-left.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 content/es/shift-left.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 79517a2b09..a8bff78251 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -164,6 +164,7 @@ Language laptop Layer layout +Left License link localizations @@ -250,6 +251,7 @@ Seokho Server Serverless service +Shift sign Site Slack diff --git a/content/es/shift-left.md b/content/es/shift-left.md new file mode 100644 index 0000000000..5ad727778a --- /dev/null +++ b/content/es/shift-left.md @@ -0,0 +1,40 @@ +--- +title: Shift Left +status: Completed +category: Concepto +tags: ["methodology", "", ""] +--- + +## ¿Qué es? + +El Desplazamiento a la Izquierda (Shift Left) se refiere a las etapas anteriores en un ciclo de vida de desarrollo de software, +pensando en el ciclo de vida como una línea donde las etapas se ejecutan de izquierda a derecha. +Shift Left es la práctica de implementar pruebas, seguridad u otras prácticas de desarrollo +temprano en el ciclo de vida de desarrollo de software en lugar de implementarlas al final. + +Aunque originalmente se usaba para referirse al proceso de prueba temprana, +Shift Left ahora también se puede aplicar a otros aspectos del desarrollo de software y [DevOps](/es/devops/), como la seguridad y la implementación. + +## Problema que aborda + +Los problemas de seguridad, los errores y los defectos de software pueden ser más difíciles y costosos de solucionar +si se descubren tarde en el ciclo de desarrollo o después de la implementación, +particularmente si el software ya se ha implementado en producción. + +## ¿Cómo ayuda? + +Al adoptar una mentalidad de Shift Left para el desarrollo de software, +los equipos pueden implementar pruebas y seguridad a lo largo del ciclo de vida del desarrollo. +Debido a que la responsabilidad de las pruebas y la seguridad se comparte en todo el equipo de desarrollo. +— desde ingenieros de software hasta control de calidad y operaciones — +todos juegan un papel para garantizar la estabilidad y la seguridad de una aplicación. + +Además, el Shift Left permite la mejora continua y +sigue un enfoque [ágil](/es/agile-software-development/) en lugar de un enfoque en cascada para el desarrollo. +Los equipos pueden realizar pequeñas mejoras iterativas e identificar problemas antes. +Este enfoque permite a los ingenieros adoptar prácticas de seguridad y desarrollo seguro +ya en la fase de diseño y arquitectura. +Las pruebas a lo largo del ciclo de desarrollo reducen el tiempo necesario para realizar pruebas antes de lanzar el software. + +Muchas herramientas de software y soluciones SaaS ayudan a cambiar éstas prácticas. +Sin embargo, el Shift Left también se puede implementar a través de procesos mejorados y cambios culturales dentro de un equipo. From ed8190dd537beeabf72aed4463603e6ba48436eb Mon Sep 17 00:00:00 2001 From: Jossemar Cordero Date: Tue, 20 Jun 2023 10:11:50 -0600 Subject: [PATCH 122/295] [ES] Localize stateless app (#2015) * [ES] Localize stateless app Signed-off-by: Jonnatan Jossemar Cordero --- content/es/.wordlist.txt | 2 ++ content/es/stateless-apps.md | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 content/es/stateless-apps.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index a8bff78251..e8a6dd481d 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -39,6 +39,7 @@ category Catherine CC CD +CDN changes Chaos chats @@ -198,6 +199,7 @@ NASDAQ Native needed Netflix +Network networking new Nicolas diff --git a/content/es/stateless-apps.md b/content/es/stateless-apps.md new file mode 100644 index 0000000000..f165008603 --- /dev/null +++ b/content/es/stateless-apps.md @@ -0,0 +1,36 @@ +--- +title: Aplicaciones sin estado +status: Feedback Appreciated +category: Tecnología +tags: ["fundamental", "application", ""] +--- + +## ¿Qué es? + +Una aplicación sin estado o independiente al estado, es la que no guarda ningún dato de sesión del cliente (estado) en el servidor donde la aplicación vive. +Cada sesión del usuario se maneja como si fuese la primera vez y las respuestas no son dependientes de datos de la sesión anterior y +brinda funcionalidad para usar servicios de impresión, Red de Distribución de Contenido (CDN, Content Delivery Network) o servidores web +para procesar cada solicitud a corto plazo. +Por ejemplo, alguien utiliza un motor de búsqueda para resolver una duda, +en caso de que la operación sea interrumpida o abortada luego de que se envía la solicitud de búsqueda, +esta persona deberá reintentar la operación dado que no se almacenó información acerca de su solicitud previa. + +## Problema que aborda + +Las aplicaciones sin estado se utilizan para abordar la problemática de la resiliencia, +considerando que dentro de un [clúster](/es/cluster/) diferentes aplicaciones pueden trabajar independientemente, +sirviendo múltiples solicitudes al mismo tiempo. +En caso de que se presente un problema, tú podrás reiniciar la aplicación, +y esta retornará a ser operacional con poco o ningún tiempo de baja. +Los beneficios de las aplicaciones sin estado incluyen resiliencia, elasticidad y alta disponibilidad. +Aun así, la mayoría de las aplicaciones que se utilizan hoy en día son al menos parcialmente [aplicativos con estado](/es/stateful-apps/), +dado que almacenan información como preferencias y configuraciones para mejorar la experiencia de usuario. + +## ¿Cómo ayuda? + +Con el uso de aplicaciones sin estado, lo único que el clúster es responsable es de +correr la aplicación y el contenido estático alojado dentro de si. +En otras palabras, no se necesita hacer cambios a bases de datos, no inicializa o necesita limpiar archivos cuando la aplicación es eliminada. +Los [contenedores](/es/container/) sin estado son más sencillos de desplegar, +dado que no necesitarás preocuparte de guardar los datos en volúmenes de almacenamiento persistente ó +realizar copias de respaldo del mismo. From 209be0d95447e2bd4b5fa4753410b3a6d3eb747a Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Wed, 21 Jun 2023 10:10:50 +0200 Subject: [PATCH 123/295] Add Huats feedbacks Signed-off-by: Ludovic Logiou --- content/fr/kubernetes.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index c59bb1a754..32e56de45c 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -7,10 +7,10 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est -Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneur open source. -Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gères des applications à travers un [système distribué](/distributed-systems/). +Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneurs open source. +Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gère des applications à travers un [système distribué](/distributed-systems/). -Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. Pour exécuter des applications containerisées. +Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications containerisées. Kubernetes permet l'automatisation et l'extensibilité, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessous) et reproductible. Kubernetes est extensible via ses [API](/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. @@ -22,15 +22,15 @@ L'automatisation de l'infrastructure et la gestion de configuration déclarative ## Quel en est l'utilité -Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/) Kubernetes aide à l'automatisation, mais à l'avantage de fonctionner avec des conteneurs. -Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/virtual-machine/) ou physique. +Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/) Kubernetes aide à l'automatisation, mais a l'avantage de fonctionner avec des conteneurs. +Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/virtual-machine/) ou physiques. -De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (e.g., YAML) - à quoi l'infrastructure devrait ressembler. -Kubernetes s'occupe ensuite du "Comment". +De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (p. ex., YAML) - à quoi l'infrastructure devrait ressembler. +Kubernetes s'occupe ensuite du "comment". Il en résulte que Kubernetes est extrêmement compatible avec l'infrastructure en tant que code. Kubernetes s'[auto-répare](/self-healing/) également. L'état actuel du cluster correspond toujours à l'état désiré par l'opérateur. Si Kubernetes détecte une déviation par rapport à ce qui est décrit dans les fichiers manifestes, un contrôleur Kubernetes va s'en occuper et le corriger. -Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle correspond à l'état souhaité. +Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle corresponde à l'état souhaité. From 01e888f5959ad784eb33e434af07688c7676a009 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 22 Jun 2023 09:22:28 +0200 Subject: [PATCH 124/295] [FR] Microservice-architecture - caps fix Signed-off-by: Guillaume Bernard --- content/fr/microservices-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index 603ea918ea..b0db4c4b24 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -33,4 +33,4 @@ L'architecture des microservices est une réponse à ces défis. La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une grosse application sans avoir d'impact négatif par inadvertance sur le reste de l'application. Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcouts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. -De nombreuses [technologies Cloud Native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. +De nombreuses [technologies cloud native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. From 69972dc35929628ff3f1045d569eb868d4d2fa95 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 22 Jun 2023 09:24:14 +0200 Subject: [PATCH 125/295] [fr] Virtualization - caps fix Signed-off-by: Guillaume Bernard --- content/fr/virtualization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index f605d38809..450b6e2e85 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -7,13 +7,13 @@ tags: ["fundamental", "infrastructure", "methodology"] ## Ce que c'est -La virtualisation, dans le cadre de l'informatique Cloud Native, +La virtualisation, dans un cadre cloud native, est l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont appelées machines virtuelles ou VM. Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini logiciellement. C'est à dire quelque chose qui ressemble et se comporte comme un vrai ordinateur mais partage son matériel avec d'autres machines virtuelles. -Le [Cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. +Le [cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. Par exemple, lorsque vous louez un "ordinateur" auprès d'AWS, cet ordinateur est en fait une machine virtuelle. ## Problème auquel il répond From 857bc52121dd4640966eb18e90534d4193c60b0f Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 22 Jun 2023 09:25:27 +0200 Subject: [PATCH 126/295] [FR] Nodes - caps fix Signed-off-by: Guillaume Bernard --- content/fr/nodes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/nodes.md b/content/fr/nodes.md index 1af6902cac..f6a99744e8 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -10,8 +10,8 @@ tags: ["infrastructure", "fundamental", ""] Un nœud est un ordinateur qui travaille de concert avec d'autres ordinateurs, ou nœuds, pour accomplir une tâche commune. Prenez par exemple votre ordinateur portable, votre modem et votre imprimante. Ils sont tous connectés sur votre réseau wifi communiquant et collaborant, chacun représentant un nœud. -En [Cloud computing](/cloud-computing/), un nœud peut être un ordinateur physique, -un ordinateur virtuel, appelé [VM](/virtual-machine/), ou encore un [Conteneur](/container/). +En [cloud computing](/cloud-computing/), un nœud peut être un ordinateur physique, +un ordinateur virtuel, appelé [VM](/virtual-machine/), ou encore un [conteneur](/container/). ## Problème auquel il répond From ef8f80305d68299fb5acefdbe3012ae0fbad4300 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 22 Jun 2023 09:27:22 +0200 Subject: [PATCH 127/295] [FR] Distributed Apps - caps fix Signed-off-by: Guillaume Bernard --- content/fr/distributed-apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md index 363234d5e1..36442a9e26 100644 --- a/content/fr/distributed-apps.md +++ b/content/fr/distributed-apps.md @@ -10,7 +10,7 @@ tags: ["architecture", "", ""] Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes plus petites. Les applications distribuées sont généralement composées de [microservices](/microservices/) individuels qui s'occupent de différentes problématiques au sein d'une application plus large. -Dans un environnement Cloud Native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). +Dans un environnement cloud native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). ## Problème auquel il répond From 4b7ddfc39baaf9b6dbb34829c8ea2e56add82280 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 22 Jun 2023 21:17:34 +0200 Subject: [PATCH 128/295] [FR] Distributed Apps - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/distributed-apps.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md index 36442a9e26..8e2682f1dd 100644 --- a/content/fr/distributed-apps.md +++ b/content/fr/distributed-apps.md @@ -7,7 +7,7 @@ tags: ["architecture", "", ""] ## Ce que c'est -Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes plus petites. +Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes et plus petites. Les applications distribuées sont généralement composées de [microservices](/microservices/) individuels qui s'occupent de différentes problématiques au sein d'une application plus large. Dans un environnement cloud native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). @@ -17,7 +17,7 @@ Dans un environnement cloud native, ces composants individuels s'exécutent gén Une application s'exécutant sur un seul ordinateur représente un point unique de défaillance : si cet ordinateur tombe en panne, l'application devient indisponible. Les applications distribuées sont souvent opposées aux [applications monolithiques](/monolithic-apps/). Une application monolithique peut être plus difficile à mettre à l'échelle car les différents composants ne peuvent pas être mis à l'échelle indépendamment. -Une application monolithique peut également devenir un frein à la vitesse de développement à mesure que l'application grossi +Une application monolithique peut également devenir un frein à la vitesse de développement à mesure que l'application grossit car davantage de développeurs doivent travailler sur une base de code partagée qui n'a pas toujours des limites bien définies. ## Quel en est l'utilité From c1586da558d6d6395a6df87a5eea192f2247b0b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 23 Jun 2023 09:22:58 +0200 Subject: [PATCH 129/295] Updates after reviews MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/auto-scaling.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/auto-scaling.md b/content/fr/auto-scaling.md index d139afcaeb..033ce2e373 100644 --- a/content/fr/auto-scaling.md +++ b/content/fr/auto-scaling.md @@ -8,18 +8,18 @@ tags: ["infrastructure", "", ""] La mise à l'échelle automatique (ou autoscaling) est la capacité d'un système à s'adapter automatiquement (voir [capacité de mise à l'échelle](/scalability/)), généralement, en termes de ressources informatiques. Avec un système permettant une mise à l'échelle automatique, les ressources sont automatiquement ajoutées en cas de besoin et peuvent être ajustées pour répondre aux demandes fluctuantes des utilisateurs. Le processus de mise à l'échelle automatique varie et peut être configuré pour s'adapter à différentes métriques, telles que la mémoire ou le temps de traitement. -Les services cloud gérés sont couramment associés à cette fonctionnalité de mise à l'échelle automatique, car il existe plus d'options et de mises en œuvre disponibles que dans la plupart des déploiements sur site. +Les services cloud gérés sont couramment associés à cette fonctionnalité de mise à l'échelle automatique, car il y existe plus d'options et de mises en œuvre disponibles que dans la plupart des déploiements sur site. Auparavant, l'infrastructure et les applications étaient conçues en tenant compte de l'utilisation maximale du système. -Cette architecture signifiait que davantage de ressources étaient sous-utilisées et inélastiques face à l'évolution de la demande des consommateurs. -L'inélasticité entraînait des coûts plus élevés pour l'entreprise et des pertes d'activité dues aux pannes dues à une demande excessive. +Cette architecture signifiait que beaucoup de ressources étaient sous-utilisées et inélastiques face à l'évolution de la demande des consommateurs. +L'inélasticité entraînait des coûts plus élevés pour l'entreprise et des pertes d'activité causées par les pannes dues à une demande excessive. En exploitant le cloud, la [virtualisation](/virtualization/) et la [conteneurisation](/containerization/) des applications et leurs dépendances, les organisations peuvent développer des applications qui se mettent à l'échelle selon les demandes des utilisateurs. Elles peuvent surveiller les applications et les mettre à l'échelle automatiquement, offrant ainsi une expérience utilisateur optimale. Prenons l'exemple de l'augmentation du nombre de spectateurs que Netflix connaît chaque vendredi soir. La mise à l'échelle automatique signifie ajouter dynamiquement plus de ressources: par exemple, -en augmentant le nombre de serveurs permettant une diffusion de plus de vidéos et en réduisant l'échelle une fois que la consommation s'est normalisée. +en augmentant le nombre de serveurs permettant une diffusion de plus de vidéos et en réduisant l'échelle une fois la consommation revenue a la normale. ## Termes liés From cbc67d443090ab8fdba31be2b965d35f32ae35c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 23 Jun 2023 09:35:55 +0200 Subject: [PATCH 130/295] Updates after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/vertical-scaling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/vertical-scaling.md b/content/fr/vertical-scaling.md index 97b129112e..3d7c4a91e0 100644 --- a/content/fr/vertical-scaling.md +++ b/content/fr/vertical-scaling.md @@ -14,7 +14,7 @@ Supposons que vous avez un ordinateur avec 4 Go de mémoire et que vous voulez a Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/scalability/) le système (ajouter de la capacité au système). Nous pouvons soit ajouter plus de ressources informatiques aux nœuds existants (mise à l'échelle verticale), soit ajouter plus de nœuds au système ([mise à l'échelle horizontale](/horizontal-scaling/)). -La [capacité de mise à l'échelle](/scalability/) contribue à la compétitivité, l'efficacité, la réputation et la qualité +La [capacité de mise à l'échelle](/scalability/) contribue à la compétitivité, à l'efficacité, à la réputation et à la qualité. ## Quel en est l'utilité From 39b2908b883b04b13064b4f21249d801922a9206 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 23 Jun 2023 12:10:36 +0200 Subject: [PATCH 131/295] [FR] Distributed Apps - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/distributed-apps.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md index 8e2682f1dd..7a7cebf7fd 100644 --- a/content/fr/distributed-apps.md +++ b/content/fr/distributed-apps.md @@ -14,16 +14,16 @@ Dans un environnement cloud native, ces composants individuels s'exécutent gén ## Problème auquel il répond -Une application s'exécutant sur un seul ordinateur représente un point unique de défaillance : si cet ordinateur tombe en panne, l'application devient indisponible. +Une application s'exécutant sur un seul ordinateur représente un point de défaillance unique — si cet ordinateur tombe en panne, l'application devient indisponible. Les applications distribuées sont souvent opposées aux [applications monolithiques](/monolithic-apps/). Une application monolithique peut être plus difficile à mettre à l'échelle car les différents composants ne peuvent pas être mis à l'échelle indépendamment. -Une application monolithique peut également devenir un frein à la vitesse de développement à mesure que l'application grossit +Les applications monolithiques peuvent également devenir un frein à la vitesse de développement à mesure qu'elles grossissent, car davantage de développeurs doivent travailler sur une base de code partagée qui n'a pas toujours des limites bien définies. ## Quel en est l'utilité -En divisant une application en différents éléments et en les exécutant à différents endroits, le système global peut tolérer davantage d'échecs. +En divisant une application en différents éléments et en les exécutant à différents endroits, le système global peut tolérer davantage de pannes. Cela permet également à une application de tirer parti des fonctionnalités de mise à l'échelle non disponibles pour une application ayant une instance unique, à savoir la possibilité de [mettre à l'échelle horizontalement](/horizontal-scaling/). Cela a cependant un coût : une complexité accrue et des couts opérationnels supplémentaires -car vous exécutez désormais de nombreux composants d'application au lieu d'une seule application monolithique. +— vous exécutez désormais de nombreux composants d'application au lieu d'une seule application. From 7f3dd9aaf7e1089b1c3e399224226d7b4f330289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 23 Jun 2023 12:57:44 +0200 Subject: [PATCH 132/295] [fr] update frontmatters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 2 +- content/fr/agile-software-development.md | 2 +- content/fr/api-gateway.md | 2 +- content/fr/application-programming-interface.md | 2 +- content/fr/cloud-native-apps.md | 2 +- content/fr/cloud-native-tech.md | 2 +- content/fr/distributed-systems.md | 4 ++-- content/fr/infrastructure-as-code.md | 4 ++-- content/fr/monolithic-apps.md | 2 +- content/fr/tightly-coupled-architectures.md | 2 +- content/fr/virtual-machine.md | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md index 644d3bbe15..af549e9e63 100644 --- a/content/fr/abstraction.md +++ b/content/fr/abstraction.md @@ -1,6 +1,6 @@ --- title: Abstraction -status: Feedback Appreciated +status: Completed category: Property tags: ["fundamental", "", ""] --- diff --git a/content/fr/agile-software-development.md b/content/fr/agile-software-development.md index 7aa88ea36f..84f9d63530 100644 --- a/content/fr/agile-software-development.md +++ b/content/fr/agile-software-development.md @@ -1,6 +1,6 @@ --- title: Développement Agile de logiciels -status: Feedback Appreciated +status: Completed category: concept tags: ["methodology", "", ""] --- diff --git a/content/fr/api-gateway.md b/content/fr/api-gateway.md index 0152f301fd..bca08b37ff 100644 --- a/content/fr/api-gateway.md +++ b/content/fr/api-gateway.md @@ -1,6 +1,6 @@ --- title: Passerelle d'API (API Gateway) -status: Feedback Appreciated +status: Completed category: technology tags: ["networking", "", ""] --- diff --git a/content/fr/application-programming-interface.md b/content/fr/application-programming-interface.md index 6127468719..362f7747c4 100644 --- a/content/fr/application-programming-interface.md +++ b/content/fr/application-programming-interface.md @@ -1,6 +1,6 @@ --- title: Interface de Programmation d'Application (API) -status: Feedback Appreciated +status: Completed category: technology tags: ["architecture", "fundamental", ""] --- diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index 76c52167b9..ceeb2d56f6 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -2,7 +2,7 @@ title: Applications Cloud Natives status: Completed category: concept -tags: ["application", "", ""] +tags: ["application", "fundamental", ""] --- ## Ce que c'est diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 560612b583..652a8e75c4 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -2,7 +2,7 @@ title: Technologies Cloud Natives status: Completed category: Concept -tags: ["fundamentals", "", ""] +tags: ["fundamental", "", ""] --- ## Ce que c'est diff --git a/content/fr/distributed-systems.md b/content/fr/distributed-systems.md index 6a55345095..d68b57d5bf 100644 --- a/content/fr/distributed-systems.md +++ b/content/fr/distributed-systems.md @@ -1,8 +1,8 @@ --- title: Système distribué -status: Feedback Appreciated +status: Completed category: concept -tags: ["architecture"] +tags: ["architecture", "", ""] --- ## Ce que c'est diff --git a/content/fr/infrastructure-as-code.md b/content/fr/infrastructure-as-code.md index 565b6a825d..de3eb2eb75 100644 --- a/content/fr/infrastructure-as-code.md +++ b/content/fr/infrastructure-as-code.md @@ -1,10 +1,10 @@ --- title: Infrastructure en tant que code -status: Feedback Appreciated +status: Completed category: concept +tags: ["infrastructure", "methodology", ""] --- - ## Ce que c'est L'infrastructure en tant que code est la pratique de stocker la définition d'infrastructure dans un ou plusieurs fichiers. diff --git a/content/fr/monolithic-apps.md b/content/fr/monolithic-apps.md index f365804800..a52f706657 100644 --- a/content/fr/monolithic-apps.md +++ b/content/fr/monolithic-apps.md @@ -2,7 +2,7 @@ title: Applications Monolithiques status: Completed category: concept -tags: ["architecture", "", ""] +tags: ["architecture", "fundamental", ""] --- ## Ce que c'est diff --git a/content/fr/tightly-coupled-architectures.md b/content/fr/tightly-coupled-architectures.md index 9902c95ef7..62e711addc 100644 --- a/content/fr/tightly-coupled-architectures.md +++ b/content/fr/tightly-coupled-architectures.md @@ -2,7 +2,7 @@ title: Architectures Fortement Couplées status: Completed category: Property -tags: ["fundamentals", "", ""] +tags: ["fundamental", "architecture", "property"] --- L'architecture fortement couplée est un type d'architecture où un nombre de composants d'application sont interdépendants diff --git a/content/fr/virtual-machine.md b/content/fr/virtual-machine.md index cecba941ba..c756c2aed3 100644 --- a/content/fr/virtual-machine.md +++ b/content/fr/virtual-machine.md @@ -2,7 +2,7 @@ title: Machine Virtuelle status: Completed category: Technology -tags: ["fundamentals", "infrastructure", ""] +tags: ["fundamental", "infrastructure", ""] --- ## Ce que c'est From 53f8a1de5922917acf3305c94549b4db8b9efdf8 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 23 Jun 2023 15:10:33 +0200 Subject: [PATCH 133/295] [FR] Nodes - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/nodes.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/fr/nodes.md b/content/fr/nodes.md index f6a99744e8..38e06896ff 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -8,21 +8,21 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est Un nœud est un ordinateur qui travaille de concert avec d'autres ordinateurs, ou nœuds, pour accomplir une tâche commune. -Prenez par exemple votre ordinateur portable, votre modem et votre imprimante. -Ils sont tous connectés sur votre réseau wifi communiquant et collaborant, chacun représentant un nœud. +Prenons par exemple votre ordinateur portable, votre modem et votre imprimante. +Ils sont tous connectés via votre réseau wifi, communiquant et collaborant ensemble, chacun représentant un nœud. En [cloud computing](/cloud-computing/), un nœud peut être un ordinateur physique, un ordinateur virtuel, appelé [VM](/virtual-machine/), ou encore un [conteneur](/container/). ## Problème auquel il répond Bien qu'une application puisse s'exécuter sur une seule machine, comme beaucoup le font encore, cela comporte certains risques. -En effet, une panne du système sous-jacent va perturber l'application. +En particulier, une défaillance du système sous-jacent va perturber l'application. Pour résoudre ce problème, les développeurs ont commencé à créer des [applications distribuées](/distributed-apps/) où chaque processus s'exécute sur son propre nœud. -Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'un groupe formant un [cluster](/cluster/), c'est a dire un groupe de nœuds qui travaillent ensemble pour atteindre un objectif commun. +Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'un groupe formant un [cluster](/cluster/), c'est-à-dire un groupe de nœuds qui travaillent ensemble pour atteindre un objectif commun. ## Quel en est l'utilité -Un nœud fourni une unité de calcul (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. +Un nœud fournit une unité de calcul (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. Dans une plate-forme ou une application [cloud native](/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. -Idéalement, les nœuds individuels sont indifférenciés, c'est à dire que +Idéalement, les nœuds individuels sont indifférenciés, c'est-à-dire que tout nœud d'un type particulier est indiscernable de tout autre nœud du même type. \ No newline at end of file From f2566b4183012054f60f9a3220dfedca46e04a4d Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 23 Jun 2023 15:28:26 +0200 Subject: [PATCH 134/295] [fr] Virtualization - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/virtualization.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index 450b6e2e85..dc66ba4b37 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -10,9 +10,9 @@ tags: ["fundamental", "infrastructure", "methodology"] La virtualisation, dans un cadre cloud native, est l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont -appelées machines virtuelles ou VM. -Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini logiciellement. -C'est à dire quelque chose qui ressemble et se comporte comme un vrai ordinateur mais partage son matériel avec d'autres machines virtuelles. +appelées machines virtuelles ou VMs. +Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini par logiciel. +C'est-à-dire quelque chose qui ressemble et se comporte comme un vrai ordinateur, mais partage son matériel avec d'autres machines virtuelles. Le [cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. Par exemple, lorsque vous louez un "ordinateur" auprès d'AWS, cet ordinateur est en fait une machine virtuelle. @@ -27,3 +27,4 @@ tout en restant isolés les uns des autres pour des raisons de sécurité. Les applications exécutées sur des machines virtuelles ne savent pas qu'elles partagent un ordinateur physique. La virtualisation permet également de démarrer un nouvel "ordinateur" (une machine virtuelle) en quelques minutes sans se soucier des contraintes physiques liées à l'ajout d'un nouvel ordinateur dans un centre de données. +Les VMs permettent également aux utilisateurs de réduire le temps nécessaire pour obtenir un nouvel ordinateur virtuel. From bedd6eb51c8f2bd1547977aa0964e6820051a094 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Wed, 26 Apr 2023 22:01:57 -0400 Subject: [PATCH 135/295] Add sestegra as an fr approver (#1976) Signed-off-by: Christophe Sauthier --- .github/settings.yml | 3 +++ CODEOWNERS | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/settings.yml b/.github/settings.yml index 469f786985..ed65aa1384 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -160,6 +160,9 @@ collaborators: - username: Krast76 permission: push + - username: sestegra + permission: push + # l10n ur approvers - username: Saim-Safdar permission: push diff --git a/CODEOWNERS b/CODEOWNERS index ed449ab642..34a0919a53 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -40,7 +40,7 @@ /content/zh-cn/ @hanyuancheung @Jacob953 @Rocksnake @Submarinee # Approvers for French contents -/content/fr/ @huats @fydrah @Krast76 +/content/fr/ @huats @fydrah @Krast76 @sestegra # Approvers for Urdu contents /content/ur/ @Saim-Safdar @waleed318 From ace6a73b8db9dbca140a0b50b0de95ea87394370 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 23 Jun 2023 17:05:48 +0200 Subject: [PATCH 136/295] [fr] Virtualization - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/virtualization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index dc66ba4b37..88ae198fc1 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -13,7 +13,7 @@ Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (pr appelées machines virtuelles ou VMs. Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini par logiciel. C'est-à-dire quelque chose qui ressemble et se comporte comme un vrai ordinateur, mais partage son matériel avec d'autres machines virtuelles. -Le [cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. +Le [cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. Par exemple, lorsque vous louez un "ordinateur" auprès d'AWS, cet ordinateur est en fait une machine virtuelle. ## Problème auquel il répond From 7e7d1d5feb82cfc7243e4f7d37f10e5f5e12c82e Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 23 Jun 2023 17:12:08 +0200 Subject: [PATCH 137/295] [FR] Microservice-architecture - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/microservices-architecture.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index b0db4c4b24..b7c6ae51ab 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -8,29 +8,29 @@ tags: ["architecture", "fundamental", ""] Une architecture en microservices est une approche architecturale qui divise les applications en (micro)[services](/service/) distincts et indépendants, chaque service étant focalisé sur une fonctionnalité spécifique. Ces services fonctionnent en étroite collaboration, et l'utilisateur final a l'impression d'utiliser un seul service. -Prenez Netflix comme exemple. +Prenons Netflix comme exemple. Son interface vous permet d'accéder, de rechercher et de prévisualiser des vidéos. -Ces fonctionnalités sont probablement alimentées par des services plus petits qui gèrent chacun une fonctionnalité, par exemple l'authentification, la recherche ou l'affichage d'aperçus dans votre navigateur. +Ces fonctionnalités sont probablement alimentées par de plus petits services, chacun gérant une fonctionnalité spécifique, telle que l'authentification, la recherche et l'exécution des prévisualisations dans votre navigateur. Cette approche architecturale permet aux développeurs de déployer de nouvelles fonctionnalités ou de mettre à jour des fonctionnalités beaucoup plus rapidement que si elles étaient toutes fortement couplées, comme dans une [application monolithique](/monolithic-apps/) (voir ci-dessous). ## Problème auquel il répond Les applications sont composées de différentes parties, chacune responsable d'une fonctionnalité spécifique. -L'augmentation de la demande pour une fonctionnalité particulière n'augmentera pas forcement la demande pour d'autres fonctionnalités de l'application. +L'augmentation de la demande pour une fonctionnalité particulière n'augmentera pas forcément la demande pour d'autres fonctionnalités de l'application. Revenons à notre exemple Netflix. Disons qu'après une grosse campagne marketing, Netflix connaît un gros pic d'inscriptions, mais l'utilisation du streaming est restée plus ou moins stable dans les premières heures de la journée. L'augmentation du nombre d'inscriptions exige une plus grande capacité de la part de la fonctionnalité d'inscription. Traditionnellement (approche monolithique), l'ensemble de l'application devrait être [mise à l'échelle](/scalability/) pour s'adapter à la demande - une utilisation très inefficace des ressources. Les architectures monolithiques font parfois tomber les développeurs dans des pièges de conception. -Étant donné que tout le code se trouve au même endroit, il est facile de rendre ce code [étroitement couplé](/architectures-couplées-étroitement/) et plus difficile d'appliquer le principe de séparation des responsabilités. -Les monolithes exigent également souvent que les développeurs comprennent l'intégralité de la base de code avant d'y faire des modifications. -L'architecture des microservices est une réponse à ces défis. +Étant donné que tout le code se trouve au même endroit, il est plus facile de rendre ce code [étroitement couplé](/tightly-coupled-architectures/) et plus difficile d'appliquer le principe de séparation des responsabilités. +Les monolithes exigent également souvent que les développeurs comprennent l'ensemble du code avant d'y faire des modifications. +L'architecture en microservices est une réponse à ces défis. ## Quel en est l'utilité La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. -Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une grosse application sans avoir d'impact négatif par inadvertance sur le reste de l'application. +Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une application plus grande sans avoir d'impact involontairement négatif sur le reste de l'application. Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcouts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. De nombreuses [technologies cloud native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. From c39b25e73475830d19c49a4c126f218a95f76195 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Fri, 23 Jun 2023 17:13:14 +0200 Subject: [PATCH 138/295] [FR] Microservice-architecture - minor fixes Signed-off-by: Guillaume Bernard --- content/fr/microservices-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index b7c6ae51ab..e473700984 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -24,7 +24,7 @@ L'augmentation du nombre d'inscriptions exige une plus grande capacité de la pa Traditionnellement (approche monolithique), l'ensemble de l'application devrait être [mise à l'échelle](/scalability/) pour s'adapter à la demande - une utilisation très inefficace des ressources. Les architectures monolithiques font parfois tomber les développeurs dans des pièges de conception. -Étant donné que tout le code se trouve au même endroit, il est plus facile de rendre ce code [étroitement couplé](/tightly-coupled-architectures/) et plus difficile d'appliquer le principe de séparation des responsabilités. +Étant donné que tout le code se retrouve au même endroit, il est plus facile de rendre ce code [étroitement couplé](/tightly-coupled-architectures/) et plus difficile d'appliquer le principe de séparation des responsabilités. Les monolithes exigent également souvent que les développeurs comprennent l'ensemble du code avant d'y faire des modifications. L'architecture en microservices est une réponse à ces défis. From f3e278bc7e8f7459682c0b21e85a668c356c3ed1 Mon Sep 17 00:00:00 2001 From: Sajib Adhikary <60180521+sajibAdhi@users.noreply.github.com> Date: Tue, 27 Jun 2023 08:09:28 +0600 Subject: [PATCH 139/295] [bn] Merging dev-bn into main (#2177) * Add and update Bengali contents --------- Signed-off-by: Sachin Sharma Signed-off-by: Tanmay Sarkar <84321236+sarkartanmay393@users.noreply.github.com> Signed-off-by: Md Shahriyar Al Mustakim Mitul Signed-off-by: AbdullahArean <2019-917-795@student.cse.du.ac.bd> Signed-off-by: Abdullah Ibne Hanif Arean <70502574+AbdullahArean@users.noreply.github.com> Signed-off-by: Tanmay Sarkar Signed-off-by: nazma1234 <78928674+nazma1234@users.noreply.github.com> Signed-off-by: Saber382 <78927820+Saber382@users.noreply.github.com> Signed-off-by: Imtiaz1234 <78928464+Imtiaz1234@users.noreply.github.com> Signed-off-by: Arindam Majumder <109217591+Arindam200@users.noreply.github.com> Signed-off-by: Abhijeet Basfore <68768410+abhijeet-26@users.noreply.github.com> Signed-off-by: Sajib Adhikary Signed-off-by: @sajibAdhi Signed-off-by: Noor E Jannat Nafia <90461705+noor-e-jannatnafia@users.noreply.github.com> Signed-off-by: Nikhil Barik <36399086+nerdynikhil@users.noreply.github.com> Signed-off-by: Nikhil Barik Signed-off-by: Refayatul Signed-off-by: Khan MD Saifullah Anjar <94192701+kmsanjar47@users.noreply.github.com> Signed-off-by: mahadihassanriyadh Signed-off-by: Md. Mahadi Hassan Riyadh Signed-off-by: Ritam Samanta <91908473+RitamSamant@users.noreply.github.com> Signed-off-by: Naymul Islam <68547750+ai-naymul@users.noreply.github.com> Signed-off-by: Khan MD Saifullah Anjar Co-authored-by: Saber307 <78928137+Saber307@users.noreply.github.com> Co-authored-by: Md Mahibul Haque Co-authored-by: Umme Abira Azmary <95493187+Mouly22@users.noreply.github.com> Co-authored-by: MD Ikramul Kayes <67923321+ikramulkayes@users.noreply.github.com> Co-authored-by: Md Shahriyar Al Mustakim Mitul Co-authored-by: Seokho Son Co-authored-by: Mahrjose Co-authored-by: nazma1234 <78928674+nazma1234@users.noreply.github.com> Co-authored-by: Imtiaz1234 <78928464+Imtiaz1234@users.noreply.github.com> Co-authored-by: Shadman Rafy <103331572+smrafy20@users.noreply.github.com> Co-authored-by: Saber382 <78927820+Saber382@users.noreply.github.com> Co-authored-by: Md Shahriyar Al Mustakim Mitul <57193846+mitul3737@users.noreply.github.com> Co-authored-by: Jihoon Seo Co-authored-by: Sachin Sharma <66516153+devsachinsharma@users.noreply.github.com> Co-authored-by: Tanmay Sarkar <84321236+sarkartanmay393@users.noreply.github.com> Co-authored-by: Abdullah Ibne Hanif Arean <70502574+AbdullahArean@users.noreply.github.com> Co-authored-by: Pratik Dey <56970651+PratikDey@users.noreply.github.com> Co-authored-by: Arindam Majumder <109217591+Arindam200@users.noreply.github.com> Co-authored-by: Abhijeet Basfore <68768410+abhijeet-26@users.noreply.github.com> Co-authored-by: sajibAdhi Co-authored-by: Noor E Jannat Nafia <90461705+noor-e-jannatnafia@users.noreply.github.com> Co-authored-by: Nikhil Barik Co-authored-by: Refayatul Co-authored-by: Khan MD Saifullah Anjar <94192701+kmsanjar47@users.noreply.github.com> Co-authored-by: Md. Mahadi Hassan Riyadh Co-authored-by: Ritam Samanta <91908473+RitamSamant@users.noreply.github.com> Co-authored-by: Naymul Islam <68547750+ai-naymul@users.noreply.github.com> Co-authored-by: Khan MD Saifullah Anjar --- content/bn/abstraction.md | 3 +- content/bn/agile-software-development.md | 1 + content/bn/api-gateway.md | 32 +++++++++++++++ .../bn/application-programming-interface.md | 10 ++--- content/bn/auto_scaling.md | 12 ++++++ content/bn/bare-metal-machine.md | 34 ++++++++++++++++ content/bn/blue-green-deployment.md | 29 ++++++++++++++ content/bn/canary-deployment.md | 33 ++++++++++++++++ content/bn/chaos-engineering.md | 18 +++++++++ content/bn/client-server-architecture.md | 36 +++++++++++++++++ content/bn/cloud-computing.md | 3 +- content/bn/cloud-native-apps.md | 32 +++++++++++++++ content/bn/cloud-native-security.md | 3 +- content/bn/cloud-native-tech.md | 5 ++- content/bn/cluster.md | 5 ++- content/bn/container-image.md | 18 +++++++++ content/bn/container.md | 3 +- content/bn/containerization.md | 19 +++++++++ content/bn/containers-as-a-service.md | 32 +++++++++++++++ content/bn/continuous-delivery.md | 31 +++++++++++++++ content/bn/continuous-deployment.md | 29 ++++++++++++++ content/bn/continuous-integration.md | 30 ++++++++++++++ content/bn/data-center.md | 29 ++++++++++++++ content/bn/database-as-a-service.md | 30 ++++++++++++++ content/bn/debugging.md | 30 ++++++++++++++ content/bn/devops.md | 5 ++- content/bn/devsecops.md | 26 +++++++++++++ content/bn/distributed-apps.md | 23 +++++++++++ content/bn/distributed-systems.md | 30 ++++++++++++++ content/bn/edge-computing.md | 17 ++++++++ content/bn/event-driven-architecture.md | 26 +++++++++++++ content/bn/event-streaming.md | 31 +++++++++++++++ content/bn/firewall.md | 27 +++++++++++++ content/bn/function-as-a-service.md | 39 +++++++++++++++++++ content/bn/gitops.md | 18 +++++++++ content/bn/horizontal-scaling.md | 39 +++++++++++++++++++ content/bn/hypervisor.md | 25 ++++++++++++ content/bn/idempotence.md | 10 +++++ content/bn/immutable-infrastructure.md | 25 ++++++++++++ content/bn/infrastructure-as-a-service.md | 23 +++++++++++ content/bn/infrastructure-as-code.md | 18 +++++++++ content/bn/kubernetes.md | 25 ++++++++++++ content/bn/load-balancer.md | 18 +++++++++ content/bn/loosely-coupled-architecture.md | 11 ++++++ content/bn/managed-services.md | 24 ++++++++++++ content/bn/microservices-architecture.md | 20 ++++++++++ content/bn/monolithic-apps.md | 23 +++++++++++ content/bn/multitenancy.md | 31 +++++++++++++++ content/bn/mutual-transport-layer-security.md | 23 +++++++++++ content/bn/nodes.md | 19 +++++++++ content/bn/observability.md | 21 ++++++++++ content/bn/platform-as-a-service.md | 25 ++++++++++++ content/bn/policy-as-code.md | 27 +++++++++++++ content/bn/portability.md | 14 +++++++ content/bn/reliability.md | 12 ++++++ content/bn/scalability.md | 16 ++++++++ content/bn/search.md | 4 ++ content/bn/security-chaos-engineering.md | 22 +++++++++++ content/bn/self healing.md | 10 +++++ content/bn/serverless.md | 18 +++++++++ content/bn/service discovery.md | 24 ++++++++++++ content/bn/service-mesh.md | 21 ++++++++++ content/bn/service-proxy.md | 22 +++++++++++ content/bn/service.md | 12 ++++++ content/bn/shift-left.md | 35 +++++++++++++++++ content/bn/site-reliability-engineering.md | 29 ++++++++++++++ content/bn/software-as-a-service.md | 5 ++- content/bn/stateful-apps.md | 21 ++++++++++ content/bn/stateless-apps.md | 18 +++++++++ content/bn/tightly-coupled-architectures.md | 20 ++++++++++ content/bn/transport-layer-security.md | 29 ++++++++++++++ content/bn/version-control.md | 30 ++++++++++++++ content/bn/vertical-scaling.md | 34 ++++++++++++++++ content/bn/virtual-machine.md | 18 +++++++++ content/bn/virtualization.md | 31 +++++++++++++++ content/bn/zero-trust-architecture.md | 17 ++++++++ 76 files changed, 1600 insertions(+), 18 deletions(-) create mode 100644 content/bn/api-gateway.md create mode 100644 content/bn/auto_scaling.md create mode 100644 content/bn/bare-metal-machine.md create mode 100644 content/bn/blue-green-deployment.md create mode 100644 content/bn/canary-deployment.md create mode 100644 content/bn/chaos-engineering.md create mode 100644 content/bn/client-server-architecture.md create mode 100644 content/bn/cloud-native-apps.md create mode 100644 content/bn/container-image.md create mode 100644 content/bn/containerization.md create mode 100644 content/bn/containers-as-a-service.md create mode 100644 content/bn/continuous-delivery.md create mode 100644 content/bn/continuous-deployment.md create mode 100644 content/bn/continuous-integration.md create mode 100644 content/bn/data-center.md create mode 100644 content/bn/database-as-a-service.md create mode 100644 content/bn/debugging.md create mode 100644 content/bn/devsecops.md create mode 100644 content/bn/distributed-apps.md create mode 100644 content/bn/distributed-systems.md create mode 100644 content/bn/edge-computing.md create mode 100644 content/bn/event-driven-architecture.md create mode 100644 content/bn/event-streaming.md create mode 100644 content/bn/firewall.md create mode 100644 content/bn/function-as-a-service.md create mode 100644 content/bn/gitops.md create mode 100644 content/bn/horizontal-scaling.md create mode 100644 content/bn/hypervisor.md create mode 100644 content/bn/idempotence.md create mode 100644 content/bn/immutable-infrastructure.md create mode 100644 content/bn/infrastructure-as-a-service.md create mode 100644 content/bn/infrastructure-as-code.md create mode 100644 content/bn/kubernetes.md create mode 100644 content/bn/load-balancer.md create mode 100644 content/bn/loosely-coupled-architecture.md create mode 100644 content/bn/managed-services.md create mode 100644 content/bn/microservices-architecture.md create mode 100644 content/bn/monolithic-apps.md create mode 100644 content/bn/multitenancy.md create mode 100644 content/bn/mutual-transport-layer-security.md create mode 100644 content/bn/nodes.md create mode 100644 content/bn/observability.md create mode 100644 content/bn/platform-as-a-service.md create mode 100644 content/bn/policy-as-code.md create mode 100644 content/bn/portability.md create mode 100644 content/bn/reliability.md create mode 100644 content/bn/scalability.md create mode 100644 content/bn/search.md create mode 100644 content/bn/security-chaos-engineering.md create mode 100644 content/bn/self healing.md create mode 100644 content/bn/serverless.md create mode 100644 content/bn/service discovery.md create mode 100644 content/bn/service-mesh.md create mode 100644 content/bn/service-proxy.md create mode 100644 content/bn/service.md create mode 100644 content/bn/shift-left.md create mode 100644 content/bn/site-reliability-engineering.md create mode 100644 content/bn/stateful-apps.md create mode 100644 content/bn/stateless-apps.md create mode 100644 content/bn/tightly-coupled-architectures.md create mode 100644 content/bn/transport-layer-security.md create mode 100644 content/bn/version-control.md create mode 100644 content/bn/vertical-scaling.md create mode 100644 content/bn/virtual-machine.md create mode 100644 content/bn/virtualization.md create mode 100644 content/bn/zero-trust-architecture.md diff --git a/content/bn/abstraction.md b/content/bn/abstraction.md index 6784a1d358..a37c310bb3 100644 --- a/content/bn/abstraction.md +++ b/content/bn/abstraction.md @@ -2,8 +2,9 @@ title: অ্যাবস্ট্রাকশন (Abstraction) status: Completed category: বৈশিষ্ট্য +tags: ["fundamental", "", ""] --- -কম্পিউটিং এর প্রেক্ষাপটে, অ্যাবস্ট্রাকশন অথবা বিমূর্ততা হল এক ধরনের উপস্থাপনা যেখানে সাধারণ ব্যবহারকারী এবং [সেবা](/service/) ভোগকারীদের (কম্পিউটার প্রোগ্রাম অথবা মানুষ) কাছ থেকে সিস্টেমের জটিল এবং অপ্রয়োজনীয় বিষয়গুলি লুকিয়ে রাখা হয়, এভাবে সিস্টেমকে খুব সিম্পল ভাবে উপস্থাপন করা হয় ফলে সিস্টেমকে বুঝতেও সুবিধা হয়। একটি ভালো উদাহরণ হল আপনার ল্যাপটপের অপারেটিং সিস্টেম (OS)। এটি আপনার কম্পিউটার কিভাবে কাজ করে তার সমস্ত বিবরণ বিমূর্ত করে। আপনার সিপিইউ মেমোরি অথবা প্রোগ্রামগুলোকে কিভাবে পরিচালনা করতে হয় সে সম্পর্কে কিছু জানার দরকার নেই, আপনি শুধু আপনার অপারেটিং সিস্টেম চালান এবং আপনার OS নিজেই এই জটিল বিষয়গুলো পরিচালনা করে। OS কিভাবে কাজগুলো হ্যান্ডেল করে করে তা আপনার জানার দরকার নেই এবং সমস্ত বিবরণ এই OS "পর্দা" বা বিমূর্ততার পিছনে লুকানো রয়েছে। +কম্পিউটিং এর প্রেক্ষাপটে, অ্যাবস্ট্রাকশন অথবা বিমূর্ততা হল এক ধরনের উপস্থাপনা যেখানে সাধারণ ব্যবহারকারী এবং [সেবা](/bn/service/) ভোগকারীদের (কম্পিউটার প্রোগ্রাম অথবা মানুষ) কাছ থেকে সিস্টেমের জটিল এবং অপ্রয়োজনীয় বিষয়গুলি লুকিয়ে রাখা হয়, এভাবে সিস্টেমকে খুব সিম্পল ভাবে উপস্থাপন করা হয় ফলে সিস্টেমকে বুঝতেও সুবিধা হয়। একটি ভালো উদাহরণ হল আপনার ল্যাপটপের অপারেটিং সিস্টেম (OS)। এটি আপনার কম্পিউটার কিভাবে কাজ করে তার সমস্ত বিবরণ বিমূর্ত করে। আপনার সিপিইউ মেমোরি অথবা প্রোগ্রামগুলোকে কিভাবে পরিচালনা করতে হয় সে সম্পর্কে কিছু জানার দরকার নেই, আপনি শুধু আপনার অপারেটিং সিস্টেম চালান এবং আপনার OS নিজেই এই জটিল বিষয়গুলো পরিচালনা করে। OS কিভাবে কাজগুলো হ্যান্ডেল করে করে তা আপনার জানার দরকার নেই এবং সমস্ত বিবরণ এই OS "পর্দা" বা বিমূর্ততার পিছনে লুকানো রয়েছে। সিস্টেমে সাধারণত একাধিক অ্যাবস্ট্রাকশন স্তর থাকে। এটি সিস্টেম ডেভেলপমেন্ট কে অনেক সহজ করে তোলে। প্রোগ্রামিং এর সময় ডেভলপাররা নির্দিষ্ট অ্যাবস্ট্রাকশন স্তরের সাথে সামঞ্জস্য রেখে সব কিছু তৈরি করে এবং অন্যান্য অন্তর্নিহিত সুনির্দিষ্ট বিষয়গুলো নিয়ে তাদের আর চিন্তা করতে হয় না যা খুবই জটিল হতে পারত। কোন কিছু যদি কোনো নির্দিষ্ট অ্যাবস্ট্রাকশন স্তরের সাথে কাজ করে তবে তা সিস্টেমের সাথে কাজ করবে — নিচের স্তরগুলো তে যাই থাকুক না কেন। diff --git a/content/bn/agile-software-development.md b/content/bn/agile-software-development.md index c410523b0c..bf799d2bcc 100644 --- a/content/bn/agile-software-development.md +++ b/content/bn/agile-software-development.md @@ -2,6 +2,7 @@ title: অ্যাজাইল সফটওয়্যার ডেভেলপমেন্ট (Agile Software Development) status: Completed category: ধারণা +tags: ["methodology", "", ""] --- ## এটা কি diff --git a/content/bn/api-gateway.md b/content/bn/api-gateway.md new file mode 100644 index 0000000000..3861466767 --- /dev/null +++ b/content/bn/api-gateway.md @@ -0,0 +1,32 @@ +--- +title: API গেটওয়ে(API Gateway) +status: Completed +category: প্রযুক্তি +tags: ["networking", "", ""] +--- + +## এটা কি + +একটি [API](/bn/application-programming-interface/) গেটওয়ে হল একটি টুল যা +অনন্য অ্যাপ্লিকেশন APIগুলিকে একত্রিত করে এবং সেগুলিকে এক জায়গায় উপলব্ধ করে। +এটি সংস্থাগুলিকে মূল ফাংশনগুলি সরানোর অনুমতি দেয়, +যেমন প্রমাণীকরণ এবং অনুমোদন বা অ্যাপ্লিকেশনগুলির মধ্যে অনুরোধের সংখ্যা সীমিত করা, +কেন্দ্রীয়ভাবে পরিচালিত অবস্থানে। +একটি API গেটওয়ে (প্রায়শই বহিরাগত) API গ্রাহকদের একটি সাধারণ ইন্টারফেস হিসাবে কাজ করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +আপনি যদি বহিরাগত ভোক্তাদের কাছে API গুলি উপলব্ধ করে থাকেন, +সমস্ত অ্যাক্সেস পরিচালনা এবং নিয়ন্ত্রণ করতে আপনি একটি এন্ট্রি পয়েন্ট চাইবেন। +অতিরিক্তভাবে, যদি আপনাকে সেই মিথস্ক্রিয়াগুলিতে কার্যকারিতা প্রয়োগ করতে হয়, +একটি এপিআই গেটওয়ে আপনাকে কোনো অ্যাপ কোড পরিবর্তনের প্রয়োজন ছাড়াই সমস্ত ট্রাফিকের ক্ষেত্রে এটিকে সমানভাবে প্রয়োগ করতে দেয়। + +## এটা কিভাবে সাহায্য করে + +একটি অ্যাপ্লিকেশনে বিভিন্ন API-এর জন্য একটি একক অ্যাক্সেস পয়েন্ট প্রদান করা, +API গেটওয়েগুলি সংস্থাগুলির জন্য একটি কেন্দ্রীয় অবস্থানে ক্রস-কাটিং ব্যবসা বা সুরক্ষা যুক্তি প্রয়োগ করে সহজ করে তোলে। + এটা অ্যাপ্লিকেশন গ্রাহকদের তাদের সমস্ত প্রয়োজনের জন্য একটি একক ঠিকানায় যাওয়ার অনুমতি দেয়। +একটি এপিআই গেটওয়ে নিরাপত্তা এবং [observability](/bn/observability/) এর মতো অপারেশনাল উদ্বেগগুলিকে সহজ করতে পারে । +পাশাপাশি এটা একটি সিস্টেমে সমস্ত ওয়েব পরিষেবার অনুরোধের জন্য একটি একক অ্যাক্সেস পয়েন্ট প্রদান করে। +যেহেতু সমস্ত অনুরোধ API গেটওয়ের মাধ্যমে প্রবাহিত হয়, এটি একটি একক স্থান উপস্থাপন করে +মেট্রিক্স-সংগ্রহ, হার-সীমাবদ্ধকরণ এবং অনুমোদনের মতো কার্যকারিতা যোগ করে থাকে। diff --git a/content/bn/application-programming-interface.md b/content/bn/application-programming-interface.md index 88343bb682..771d67f113 100644 --- a/content/bn/application-programming-interface.md +++ b/content/bn/application-programming-interface.md @@ -2,16 +2,14 @@ title: অ্যাপ্লিকেশান প্রোগ্রামিং ইন্টারফেস (API) status: Completed category: প্রযুক্তি +tags: ["architecture", "fundamental", ""] --- ## এটা কি - একটি API হল কম্পিউটার প্রোগ্রামগুলির একে অপরের সাথে যোগাযোগ করার একটি উপায়। মানুষ যেমন একটি ওয়েব পৃষ্ঠার মাধ্যমে একটি ওয়েবসাইটের সাথে যোগাযোগ করে, তেমনি একটি API কম্পিউটার প্রোগ্রামগুলিকে একে অপরের সাথে যোগাযোগ করতে দেয়। মানুষের মিথস্ক্রিয়া থেকে ভিন্ন, API-গুলির সীমাবদ্ধতা রয়েছে তাদের থেকে কী জিজ্ঞাসা করা যায় এবং কী করা যায় না। ইন্টারঅ্যাকশনের সীমাবদ্ধতা প্রোগ্রামগুলির মধ্যে স্থিতিশীল এবং কার্যকরী যোগাযোগ তৈরি করতে সহায়তা করে। -## এটি যেই সমস্যাটি দৃষ্টিপাত করে - -অ্যাপ্লিকেশনগুলি আরও জটিল হয়ে উঠলে, ছোট কোড পরিবর্তনগুলি অন্যান্য কার্যকারিতার উপর কঠোর প্রভাব ফেলতে পারে। অ্যাপ্লিকেশনগুলিকে তাদের কার্যকারিতার জন্য একটি মডুলার পদ্ধতি অবলম্বন করতে হবে যদি তারা একই সাথে বৃদ্ধি এবং স্থিতিশীলতা বজায় রাখতে পারে। API ছাড়া, অ্যাপ্লিকেশনগুলির মধ্যে মিথস্ক্রিয়া করার জন্য একটি কাঠামোর অভাব রয়েছে। একটি শেয়ার্ড ফ্রেমওয়ার্ক ছাড়া, অ্যাপ্লিকেশনগুলির জন্য [স্কেল(scale)](/scalability/) এবং একীভূত করা চ্যালেঞ্জিং। +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে +অ্যাপ্লিকেশনগুলি আরও জটিল হয়ে উঠলে, ছোট কোড পরিবর্তনগুলি অন্যান্য কার্যকারিতার উপর কঠোর প্রভাব ফেলতে পারে। অ্যাপ্লিকেশনগুলিকে তাদের কার্যকারিতার জন্য একটি মডুলার পদ্ধতি অবলম্বন করতে হবে যদি তারা একই সাথে বৃদ্ধি এবং স্থিতিশীলতা বজায় রাখতে পারে। API ছাড়া, অ্যাপ্লিকেশনগুলির মধ্যে মিথস্ক্রিয়া করার জন্য একটি কাঠামোর অভাব রয়েছে। একটি শেয়ার্ড ফ্রেমওয়ার্ক ছাড়া, অ্যাপ্লিকেশনগুলির জন্য [স্কেল(scale)](/bn/scalability/) এবং একীভূত করা চ্যালেঞ্জিং। ## এটা কিভাবে সাহায্য করে - -APIগুলি কম্পিউটার প্রোগ্রাম বা অ্যাপ্লিকেশনগুলিকে একটি সংজ্ঞায়িত এবং বোধগম্য পদ্ধতিতে তথ্য আদান-প্রদান এবং আদান-প্রদান করার অনুমতি দেয়। তারা আধুনিক অ্যাপ্লিকেশনের জন্য বিল্ডিং ব্লক এবং তারা ডেভেলপারদের অ্যাপ্লিকেশন একত্রিত করার একটি উপায় প্রদান করে থাকে। যখনই আপনি [মাইক্রসার্ভিস(microservices)](/microservices/) একসাথে কাজ করার কথা শুনেন, আপনি অনুমান করতে পারেন যে তারা একটি API এর মাধ্যমে ইন্টারঅ্যাক্ট করে। +APIগুলি কম্পিউটার প্রোগ্রাম বা অ্যাপ্লিকেশনগুলিকে একটি সংজ্ঞায়িত এবং বোধগম্য পদ্ধতিতে তথ্য আদান-প্রদান এবং আদান-প্রদান করার অনুমতি দেয়। তারা আধুনিক অ্যাপ্লিকেশনের জন্য বিল্ডিং ব্লক এবং তারা ডেভেলপারদের অ্যাপ্লিকেশন একত্রিত করার একটি উপায় প্রদান করে থাকে। যখনই আপনি [মাইক্রসার্ভিস(microservices)](/bn/microservices/) একসাথে কাজ করার কথা শুনেন, আপনি অনুমান করতে পারেন যে তারা একটি API এর মাধ্যমে ইন্টারঅ্যাক্ট করে। diff --git a/content/bn/auto_scaling.md b/content/bn/auto_scaling.md new file mode 100644 index 0000000000..967b12c326 --- /dev/null +++ b/content/bn/auto_scaling.md @@ -0,0 +1,12 @@ +--- +title: অটোস্কেলিং (Autoscaling) +status: Completed +category: সম্পত্তি +tags: ["infrastructure", "", ""] +--- + +অটোস্কেলিং হল সাধারণত একটি সিস্টেমের কম্পিউটিং রিসোর্সগুলির পরিপ্রেক্ষিতে স্বয়ংক্রিয়ভাবে [স্কেল](/bn/scalability/) ক্ষমতা। অটোস্কেলিং সিস্টেমের সাহায্যে, ব্যবহারকারী চাহিদা অনুযায়ী রিসোর্স স্কেল করতে এবং প্রয়োজনের সময় স্বয়ংক্রিয়ভাবে রিসোর্সগুলি যোগ করতে পারে। অটোস্কেলিং প্রক্রিয়া পরিবর্তনশীল এবং মেমোরি বা প্রক্রিয়া সময়ের মতো বিভিন্ন মেট্রিক্সের উপর ভিত্তি করে স্কেল করার জন্য কনফিগারযোগ্য। ক্লাউড পরিষেবাগুলি সাধারণত অটোস্কেলিং এর মাধ্যমে পরিচালিত হয় কারণ বেশিরভাগ অন-প্রিমাইজ ডিপ্লোয়মেন্টের চেয়ে এটিতে আরও বেশি বাস্তবায়ন করার ব্যবস্থা রয়েছে। + +পূর্বে, সিস্টেমের অবকাঠামো এবং অ্যাপ্লিকেশনগুলিকে আর্কিটেক্ট করা হয়েছিল সিস্টেমের সর্বোচ্চ ব্যবহার বিবেচনা করার মাধ্যমে। এই স্থাপনার দ্বারা রিসোর্সগুলি কম ব্যবহার হচ্ছিল এবং ভোক্তাদের চাহিদা পরিবর্তন করার জন্য স্থিতিস্থাপক ছিল। এই স্থিতিস্থাপকতা ফলে ব্যবসায় উচ্চ খরচ ছিল এবং অতিরিক্ত চাহিদা দেখা দিলেই ব্যবসা বন্ধ হয়ে যাচ্ছিল। + +ক্লাউড, [ভারচুয়ালাইজিং](/bn/virtualization/), and [কন্টেইনারাইজিং](/bn/containerization/) অ্যাপ্লিকেশন এবং তাদের নির্ভরতা ব্যবহার করে, সংস্থাগুলি ব্যবহারকারীর চাহিদা অনুযায়ী অ্যাপ্লিকেশন তৈরি করতে পারে। এটি অ্যাপ্লিকেশন চাহিদা নিরীক্ষণ করতে পারে এবং স্বয়ংক্রিয়ভাবে এসব অ্যাপ্লিকেশন স্কেল করতে পারে, যার ফলে এট ব্যবহারকারীদের সর্বোত্তম অভিজ্ঞতা প্রদান করে। যেমন প্রতি শুক্রবার সন্ধ্যায় Netflix-এর দর্শক সংখ্যা বৃদ্ধি পায়। স্বয়ংক্রিয়ভাবে আউট করার অর্থ হল গতিশীলভাবে আরও সংস্থান যোগ করা: উদাহরণস্বরূপ, আরও ভিডিও স্ট্রিমিংয়ের অনুমতি দেয় এমন সার্ভারের সংখ্যা বৃদ্ধি করা এবং একবার ব্যবহার স্বাভাবিক হয়ে গেলে আবার স্কেল করা। diff --git a/content/bn/bare-metal-machine.md b/content/bn/bare-metal-machine.md new file mode 100644 index 0000000000..cb2078edc9 --- /dev/null +++ b/content/bn/bare-metal-machine.md @@ -0,0 +1,34 @@ +--- +title: বেয়ার মেটাল মেশিন (Bare Metal Machine) +status: সম্পন্ন +category: প্রযুক্তি +tags: ["infrastructure", "", ""] +--- + +## এটা কি + +বেয়ার মেটাল(bare metal) বলতে একটি ভৌত ​​কম্পিউটারকে বোঝায়, আরও নির্দিষ্টভাবে একটি সার্ভার, যার একটি এবং শুধুমাত্র একটি অপারেটিং সিস্টেম রয়েছে। +আধুনিক কম্পিউটিংয়ে পার্থক্যটি গুরুত্বপূর্ণ কারণ বেশিরভাগ সার্ভারগুলোই [ভার্চুয়াল মেশিন](/bn/virtual-machine/)। +একটি ভৌত ​​সার্ভার(physical server) সাধারণত শক্তিশালী হার্ডওয়্যার অন্তর্নির্মিত একটি মোটামুটি বড় কম্পিউটার। +[ভার্চুয়ালাইজেশন](bn/virtualization/) ছাড়া একটি অপারেটিং সিস্টেম ইনস্টল করা এবং সরাসরি শারীরিক হার্ডওয়্যারে অ্যাপ্লিকেশনটি চালানো কে, +"বেয়ার মেটাল"("bare metal") এ চলমান হিসাবে উল্লেখ করা হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +একটি অপারেটিং সিস্টেমকে একটি ফিজিক্যাল কম্পিউটারের সাথে যুগল করাই হলো কম্পিউটিং এর আসল প্যাটার্ন(pattern)। +শারীরিক কম্পিউটারের সমস্ত সংস্থান সরাসরি অপারেটিং সিস্টেমে উপলব্ধ এবং কোন ভার্চুয়ালাইজেশন(virtualization) স্তর উপস্থিত না থাকার ফলে, +হার্ডওয়্যারে অপারেটিং সিস্টেম নির্দেশাবলী অনুবাদ করার জন্য কোন কৃত্রিম বিলম্ব নেই। + +## এটা কিভাবে সাহায্য করে + +একটি কম্পিউটারের সমস্ত গণনা সংস্থান একটি একক অপারেটিং সিস্টেমে উত্সর্গ করে, +আপনি অপারেটিং সিস্টেমে সম্ভাব্য সর্বোত্তম কর্মক্ষমতা প্রদান করতে পারেন। +আপনার যদি এমন একটি ওয়ার্কলোড(workload) চালানোর প্রয়োজন হয় যাতে অবশ্যই হার্ডওয়্যার সংস্থানগুলিতে অত্যন্ত দ্রুত অ্যাক্সেস থাকতে হবে, +বেয়ার মেটাল(bare metal) সঠিক সমাধান হতে পারে। + +[ক্লাউড নেটিভ অ্যাপস](/bn/cloud-native-apps/) প্রসঙ্গে +আমরা সাধারণত [স্কেলিং](/bn/scalability/)(scaling) এর পরিপ্রেক্ষিতে পারফরম্যান্সের কথা চিন্তা করি, +যা [অনুভূমিক স্কেলিং](/bn/horizontal-scaling/)(horizontal-scaling) (আপনার রিসোর্স পুলে(resource pool) আরও মেশিন যোগ করা) দ্বারা পরিচালিত হতে পারে। +কিন্তু কিছু ওয়ার্কলোডস-এর(workloads) [উল্লম্ব স্কেলিং](/bn/vertical-scaling/) (একটি বিদ্যমান শারীরিক মেশিনে আরও শক্তি যোগ করা) +এবং একটি অত্যন্ত দ্রুত শারীরিক হার্ডওয়্যার(hardware) এর প্রয়োজন হতে পারে যে ক্ষেত্রে বেয়ার মেটাল(bare metal) ভালো উপযুক্ত। +শারীরিক হার্ডওয়্যার(hardware) এবং হার্ডওয়্যার ড্রাইভারগুলির(hardware drivers) সাথে তাল মিলিয়ে বেয়ার মেটাল(bare metal) যে কোন কাজ সম্পন্ন করতে সহায়তা করার অনুমতি দেয়। diff --git a/content/bn/blue-green-deployment.md b/content/bn/blue-green-deployment.md new file mode 100644 index 0000000000..acfed03708 --- /dev/null +++ b/content/bn/blue-green-deployment.md @@ -0,0 +1,29 @@ +--- +title: নীল সবুজ স্থাপনা (Blue Green Deployment) +status: Completed +category: ধারণা +tags: ["methodology", "application", ""] +--- + +## এটা কি + +ন্যূনতম ডাউনটাইম সহ চলমান কম্পিউটার সিস্টেম আপডেট করার জন্য নীল-সবুজ স্থাপনা একটি কৌশল। +অপারেটর দুটি পরিবেশ বজায় রাখে, যা "নীল" এবং "সবুজ" নামে ডাকা হয়। +একটি প্রোডাকশন ট্র্যাফিক পরিবেশন করে (সংস্করণটি যেটি সেই সময় ব্যবহারকারীরা ব্যবহার করেন), যখন অন্যটি আপডেট করা হয়। +একবার অ-সক্রিয় (সবুজ) পরিবেশে পরীক্ষা শেষ হয়ে গেলে, +উৎপাদনে ট্র্যাফিক সুইচ ওভার করা হয় (প্রায়শই লোড ব্যালেন্সার ব্যবহারের মাধ্যমে)। +মনে রাখবেন যে নীল-সবুজ স্থাপনার অর্থ হল সম্পূর্ণ পরিবেশ পরিবর্তন করা, একযোগে, অনেকগুলি পরিষেবা সমন্বিত করে। +বিভ্রান্তিকরভাবে, কখনও কখনও শব্দটি একটি সিস্টেমের মধ্যে পৃথক পরিষেবার ক্ষেত্রে ব্যবহৃত হয়। +এই অস্পষ্টতা এড়াতে, পৃথক উপাদান উল্লেখ করার সময় "শূন্য-ডাউনটাইম স্থাপনা (zero-downtime deployment)" শব্দটি পছন্দ করা হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +নীল-সবুজ স্থাপনাগুলি সফ্টওয়্যার আপডেট করার সময় ন্যূনতম ডাউনটাইমের অনুমতি দেয় যা পশ্চাদগামী সামঞ্জস্যের অভাবের কারণে "লকস্টেপ" এ পরিবর্তন করতে হয়। +উদাহরণস্বরূপ, নীল-সবুজ স্থাপনা একটি ওয়েবসাইট এবং একটি ডাটাবেস সমন্বিত একটি অনলাইন স্টোরের জন্য উপযুক্ত হবে যা আপডেট করা প্রয়োজন, কিন্তু ডাটাবেসের নতুন সংস্করণ ওয়েবসাইটের পুরানো সংস্করণের সাথে কাজ করে না এবং এর তদ্বিপরীত। +এই ক্ষেত্রে, উভয় একই সময়ে পরিবর্তন করা প্রয়োজন। +যদি এটি উৎপাদন সিস্টেমে করা হয় তবে গ্রাহকরা ডাউনটাইম লক্ষ্য করবেন। + +## এটা কিভাবে সাহায্য করে + +নীল-সবুজ স্থাপনা নন-ক্লাউড নেটিভ সফ্টওয়্যারের জন্য একটি উপযুক্ত কৌশল যা ন্যূনতম ডাউনটাইমের সাথে আপডেট করা দরকার। +যাইহোক, এটির ব্যবহার সাধারণত একটি "গন্ধ(smell)" যা লেগাসি সফ্টওয়্যারগুলি কে পুনরায় ইঞ্জিনিয়ার করার প্রয়োজন তৈরী করে যাতে উপাদানগুলি পৃথকভাবে আপডেট করা সম্ভব হয় ওঠে । diff --git a/content/bn/canary-deployment.md b/content/bn/canary-deployment.md new file mode 100644 index 0000000000..7660de240b --- /dev/null +++ b/content/bn/canary-deployment.md @@ -0,0 +1,33 @@ +--- +title: ক্যানারি ডিপ্লয়মেন্ট (Canary Deployment) +status: Completed +category: ধারণা +tags: ["methodology", "application", ""] +--- + +## এটা কি + +ক্যানারি ডিপ্লয়মেন্ট হল একটি স্থাপনার কৌশল যা দুটি পরিবেশ দিয়ে শুরু হয়: +একটি লাইভ ট্র্যাফিক সহ এবং অন্যটিতে লাইভ ট্র্যাফিক ছাড়াই আপডেট করা কোড রয়েছে৷ +ট্র্যাফিকটি ধীরে ধীরে অ্যাপ্লিকেশনটির আসল সংস্করণ থেকে আপডেট হওয়া সংস্করণে স্থানান্তরিত হয়। +এটি লাইভ ট্রাফিকের 1%, তারপর 10%, 25% এবং আরও অনেক কিছু সরানোর মাধ্যমে শুরু হতে পারে +যতক্ষণ না সমস্ত ট্রাফিক আপডেট সংস্করণের মাধ্যমে চলছে। +সংস্থাগুলি উৎপাদনে সফ্টওয়্যারটির নতুন সংস্করণ পরীক্ষা করতে পারে, প্রতিক্রিয়া পেতে পারে, +ত্রুটিগুলি নির্ণয় করুন এবং প্রয়োজনে দ্রুত স্থিতিশীল সংস্করণে রোলব্যাক করুন৷ + +"ক্যানারি" শব্দটি "কয়লা খনিতে ক্যানারি" অনুশীলনকে বোঝায় +যেখানে খনি শ্রমিকদের নিরাপদ রাখতে ক্যানারি পাখিদের কয়লা খনিতে নিয়ে যাওয়া হয়েছিল। +যদি গন্ধহীন ক্ষতিকারক গ্যাস উপস্থিত থাকে তবে পাখিটি মারা যাবে এবং খনি শ্রমিকরা জানত যে তাদের দ্রুত সরে যেতে হবে। +একইভাবে, আপডেট করা কোডের সাথে কিছু ভুল হলে, লাইভ ট্র্যাফিক মূল সংস্করণে "খালি করা" হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +পরীক্ষার কৌশল যতই পুঙ্খানুপুঙ্খ হোক না কেন, উৎপাদনে সবসময় কিছু বাগ পাওয়া যায়। +একটি অ্যাপের একটি সংস্করণ থেকে অন্য সংস্করণে 100% ট্র্যাফিক স্থানান্তর করা হলে তা আরও প্রভাবশালী ব্যর্থতার কারণ হতে পারে। + +## এটা কিভাবে সাহায্য করে + +ক্যানারি স্থাপনা সংস্থাগুলিকে দেখতে দেয় যে নতুন সফ্টওয়্যার বাস্তব-বিশ্বের পরিস্থিতিতে কীভাবে আচরণ করে +নতুন সংস্করণে উল্লেখযোগ্য ট্রাফিক সরানোর আগে। +এই কৌশলটি সংস্থাগুলিকে ডাউনটাইম কমাতে এবং নতুন স্থাপনার সমস্যাগুলির ক্ষেত্রে দ্রুত রোলব্যাক করতে সক্ষম করে। +এটি সামগ্রিক ব্যবহারকারীর অভিজ্ঞতার উপর উল্লেখযোগ্য প্রভাব ছাড়াই আরও গভীরভাবে উত্পাদন অ্যাপ্লিকেশন পরীক্ষার অনুমতি দেয়। diff --git a/content/bn/chaos-engineering.md b/content/bn/chaos-engineering.md new file mode 100644 index 0000000000..d3ca48f467 --- /dev/null +++ b/content/bn/chaos-engineering.md @@ -0,0 +1,18 @@ +--- +title: কেওস ইঞ্জিনিয়ারিং (Chaos Engineering) +status: Completed +category: ধারণা +tags: ["methodology", "", ""] +--- + +## এটা কি + +কেওস ইঞ্জিনিয়ারিং (Chaos Engineering) বা CE হল [ডিস্ট্রিবিউটেড সিস্টেমে (distributed system)](/bn/distributed-systems/) পরীক্ষা করার শৃঙ্খলা যাতে কোলাহলপূর্ণ এবং অপ্রত্যাশিত পরিস্থিতি সহ্য করার জন্য সিস্টেমে ক্ষমতা তৈরি হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +[SRE (Site reliability engineering)](/bn/site-reliability-engineering/) এবং [DevOps](/bn/devops/) অনুশীলনে, প্রোডাক্টের স্থিতিস্থাপকতা (resiliency) এবং [নির্ভরযোগ্যতা (reliability)](/bn/reliability/) বাড়ানোর কৌশলের উপর ফোকাস করে। পর্যাপ্ত পরিষেবার মান নিশ্চিত করার সময়, একটি সিস্টেমের ব্যর্থতা সহ্য করার ক্ষমতা সাধারণত সফ্টওয়্যার ডেভেলপমেন্টে খুব প্রয়োজনীয়। এমন বেশ কয়েকটি দিক জড়িত যা একটি অ্যাপ্লিকেশনের আউটেজের দিকে নিয়ে যেতে পারে, যেমন অবকাঠামো (infrastructure), প্ল্যাটফর্ম (platform), বা ([মাইক্রোসার্ভিস-ভিত্তিক (microservices)](/bn/microservices/)) অ্যাপ্লিকেশনের অন্যান্য চলমান অংশ। প্রোডাকশন পরিবেশে নতুন ফিচারগুলির খুব তাড়াতাড়ি একের পর এক স্থাপনের ফলে ডাউনটাইম (downtime) হওয়ার সম্ভাবনা বেড়ে যায় এবং একটি গুরুতর ঘটনাও ঘটতে পারে — যা ব্যবসার জন্য যথেষ্ট পরিণতিপূর্ণ। + +## এটা কিভাবে সাহায্য করে + +কেওস ইঞ্জিনিয়ারিং হল স্থিতিস্থাপকতার প্রয়োজনীয়তা পূরণ করার একটি কৌশল। এটি অবকাঠামো (Infrustracture), প্ল্যাটফর্ম (Platform) এবং অ্যাপ্লিকেশন ব্যর্থতার (Application failure) বিরুদ্ধে স্থিতিস্থাপকতা অর্জন করতে ব্যবহৃত হয়। একটি অ্যাপ্লিকেশন, অবকাঠামো বা প্ল্যাটফর্ম স্ব-নিরাময় (Self-heal) করতে পারে তা যাচাই করার জন্য কেওস ইঞ্জিনিয়াররা কেয়স এক্সপেরিমেন্ট ব্যবহার করে সক্রিয়ভাবে ব্যর্থতাগুলিকে ইঞ্জেক্ট করে এবং তাতে ব্যর্থতাগুলি গ্রাহকদের লক্ষণীয়ভাবে প্রভাবিত করতে পারে না। কেয়স এক্সপেরিমেন্টের লক্ষ্য অন্ধ দাগ (Blind-spots) আবিষ্কার করা (যেমন Monitoring বা Autoscaling কৌশল) এবং সমালোচনামূলক ঘটনার সময়ে দলগুলির মধ্যে যোগাযোগ উন্নত করা। এই পদ্ধতিটি স্থিতিস্থাপকতা বাড়াতে সাহায্য করে এবং জটিল সিস্টেমে বিশেষ করে প্রোডাকশন দলের আস্থা বাড়ায়। diff --git a/content/bn/client-server-architecture.md b/content/bn/client-server-architecture.md new file mode 100644 index 0000000000..4021dca0c5 --- /dev/null +++ b/content/bn/client-server-architecture.md @@ -0,0 +1,36 @@ +--- +title: ক্লায়েন্ট-সার্ভার স্থাপত্য (Client-Server Architecture) +status: Completed +category: ধারণা +tags: ["architecture", "", ""] +--- + +## এটা কি + +একটি ক্লায়েন্ট-সার্ভার স্থাপত্য (Client-Server Architecture), যুক্তি (বা কোড) যা একটি অ্যাপ্লিকেশন তৈরি করে তা দুই বা ততোধিক উপাদানের মধ্যে বিভক্ত হয়ঃ +একটি ক্লায়েন্ট যে কাজ করতে বলে +(যেমন আপনার ওয়েব ব্রাউজারে চলমান জিমেইল ওয়েব অ্যাপ্লিকেশন), +এবং এক বা একাধিক সার্ভার যা সেই অনুরোধটি পূরণ করে +(যেমন "ইমেল পাঠান" পরিষেবাটি ক্লাউডে গুগল-এর কম্পিউটারে চলছে)। +এই উদাহরণে, আপনার লেখা বহির্গামী ইমেল ক্লায়েন্ট দ্বারা পাঠানো হয় (আপনার ওয়েব ব্রাউজারে চলমান ওয়েব অ্যাপ্লিকেশন (web application)) +একটি সার্ভারে (জিমেইল (gmail) এর কম্পিউটার, আপনার বহির্গামী মেইল (mail) তাদের প্রাপকদের কাছে প্রেরন করে)। + +এটি স্বয়ংসম্পূর্ণ অ্যাপ্লিকেশনগুলির সাথে বৈপরীত্য করে (যেমন ডেস্কটপ অ্যাপ্লিকেশন) যা সমস্ত কাজ এক জায়গায় করে। +উদাহরণস্বরূপ, মাইক্রোসফ্ট ওয়ার্ডের (Microsoft Word) মতো একটি ওয়ার্ড প্রক্রিয়াকরণ প্রোগ্রাম ইনস্টল করা এবং সম্পূর্ণরূপে আপনার কম্পিউটারে চালানো হতে পারে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +একটি ক্লায়েন্ট-সার্ভার স্থাপত্যের (client-server architecture) একটি বড় চ্যালেঞ্জ স্বয়ংসম্পূর্ণ অ্যাপ্লিকেশনের সমস্যা সমাধান করা, যেমন : নিয়মিত আপডেট। +একটি স্বয়ংসম্পূর্ণ অ্যাপে, প্রতিটি আপডেটের জন্য, ব্যবহারকারীদের সর্বশেষ সংস্করণ ডাউনলোড এবং স্থাপন করতে হবে। +কল্পনা করুন অ্যামাজনের সমস্ত পন্যের ক্যাটালগ ব্রাউজ করতে সক্ষম হতে আপণাকে আগে সব ডাউনলোড করতে হবে! + +## এটা কিভাবে সাহায্য করে + +একটি দূরবর্তী সার্ভার (server) বা পরিষেবাতে অ্যাপ্লিকেশনের যুক্তি প্রয়োগ করে, +অপারেটররা ক্লায়েন্ট-সাইডে (client-side) যুক্তি পরিবর্তন করার প্রয়োজন ছাড়াই এটি আপডেট করতে পারে। +এর মানে আপডেট অনেক বেশি ঘন ঘন করা যেতে পারে। +সার্ভারে ডেটা সঞ্চয় করায় অনেক ক্লায়েন্টকে একই ডেটা দেখতে এবং শেয়ার করতে দেয়। +প্রথাগত অফলাইন ওয়ার্ড প্রসেসরের (word processor) তুলনায় একটি অনলাইন ওয়ার্ড প্রসেসর (word processor,) ব্যবহারের মধ্যে পার্থক্য বিবেচনা করুন। +পূর্বে, আপনার ফাইল সার্ভার-সাইডে বিদ্যমান থাকতো এবং +অন্যান্য ব্যবহারকারীদের সাথে ভাগ করা যেতো যারা কেবল সার্ভার থেকে ডাউনলোড করতো। +উত্তরাধিকার জগতে (Legacy World), ফাইলগুলিকে প্রয়োজনে অপসারণযোগ্য মিডিয়াতে অনুলিপি (copied) করা (floppy disks!) এবং ব্যক্তিদের সাথে ভাগ করা হয়েছে। diff --git a/content/bn/cloud-computing.md b/content/bn/cloud-computing.md index 362105c418..68aca3d72b 100644 --- a/content/bn/cloud-computing.md +++ b/content/bn/cloud-computing.md @@ -2,6 +2,7 @@ title: ক্লাউড কম্পিউটিং (Cloud Computing) status: Completed category: ধারণা +tags: ["infrastructure", "fundamental", ""] --- ## এটা কি @@ -14,4 +15,4 @@ category: ধারণা ## এটা কিভাবে সাহায্য করে -ক্লাউড সুবিধা প্রদানকারী সংস্থাসমূহ তাদের ব্যবহারকারী সংস্থাগুলিকে অর্থের বিনিময়ে চাহিদা অনুযায়ী কম্পিউট রিসোর্স ভাড়া করার এবং ব্যবহার করার ক্ষমতা প্রদান করে। এটি দুটি প্রধান উদ্ভাবনের অনুমতি দেয়: সংস্থাগুলি ভৌত অবকাঠামোতে অর্থ বা সংস্থান ব্যয় না করে এবং সময় অপচয় না করে নতুন কিছু চেষ্টা করতে পারে এবং তারা প্রয়োজন এবং চাহিদা অনুযায়ী [স্কেল(scale)](/scalability/) করতে পারে। ক্লাউড সুবিধা প্রদানকারী সংস্থাসমূহ তাদের ব্যবহারকারী সংস্থাগুলিকে প্রয়োজন অনুযায়ী বা সর্বনিম্ন প্রয়োজন মোতাবেক পরিকাঠামো ব্যবহার করতে দেয়। +ক্লাউড সুবিধা প্রদানকারী সংস্থাসমূহ তাদের ব্যবহারকারী সংস্থাগুলিকে অর্থের বিনিময়ে চাহিদা অনুযায়ী কম্পিউট রিসোর্স ভাড়া করার এবং ব্যবহার করার ক্ষমতা প্রদান করে। এটি দুটি প্রধান উদ্ভাবনের অনুমতি দেয়: সংস্থাগুলি ভৌত অবকাঠামোতে অর্থ বা সংস্থান ব্যয় না করে এবং সময় অপচয় না করে নতুন কিছু চেষ্টা করতে পারে এবং তারা প্রয়োজন এবং চাহিদা অনুযায়ী [স্কেল(scale)](/bn/scalability/) করতে পারে। ক্লাউড সুবিধা প্রদানকারী সংস্থাসমূহ তাদের ব্যবহারকারী সংস্থাগুলিকে প্রয়োজন অনুযায়ী বা সর্বনিম্ন প্রয়োজন মোতাবেক পরিকাঠামো ব্যবহার করতে দেয়। diff --git a/content/bn/cloud-native-apps.md b/content/bn/cloud-native-apps.md new file mode 100644 index 0000000000..2b66ca48df --- /dev/null +++ b/content/bn/cloud-native-apps.md @@ -0,0 +1,32 @@ +--- +title: ক্লাউড নেটিভ অ্যাপস (Cloud Native Apps) +status: Completed +category: ধারণা +tags: ["application", "fundamental", ""] +--- + +## এটা কি + +ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলি বিশেষভাবে [ক্লাউড কম্পিউটিং (Cloud Computing)](/bn/cloud-computing/)-এ উদ্ভাবনের সুবিধা নেওয়ার জন্য ডিজাইন করা হয়েছে। +এই অ্যাপ্লিকেশনগুলি তাদের নিজ নিজ ক্লাউড আর্কিটেকচারের সাথে সহজেই একত্রিত হয়, ক্লাউডের সংস্থান এবং [স্কেলিং](/bn/scalability/) ক্ষমতার সুবিধা নিয়ে থাকে। +এটি ক্লাউড কম্পিউটিং দ্বারা চালিত অবকাঠামোতে(infrastructure) উদ্ভাবনের সুবিধা গ্রহণকারী অ্যাপ্লিকেশনগুলিকেও বোঝায়। +ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলি আজকে এমন অ্যাপগুলিকে অন্তর্ভুক্ত করে যা একটি ক্লাউড প্রদানকারীর ডেটাসেন্টারে(data-center) এবং ক্লাউড নেটিভ প্ল্যাটফর্মে অন-প্রিমিসে(on-premise) চলে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ঐতিহ্যগতভাবে, অন-প্রিমিস পরিবেশগুলি মোটামুটি পছন্দসই উপায়ে গণনা সংস্থান সরবরাহ করে। +প্রতিটি ডেটাসেন্টারের(data-center) পরিষেবা ছিল যা নির্দিষ্ট পরিবেশে অ্যাপ্লিকেশনগুলিকে [শক্তভাবে সংযুক্ত](/bn/tightly-coupled-architectures/) করে, +প্রায়শই [ভার্চুয়াল মেশিন (Virtual Machine)](/bn/virtual-machine/) এবং পরিষেবার মতো অবকাঠামোর(infrastructure) জন্য ম্যানুয়াল প্রভিশনিংয়ের(manual provisioning) উপর অনেক বেশি নির্ভর করে। +যার ফল স্বরূপ, ডেভেলপার এবং তাদের অ্যাপ্লিকেশনগুলিকে সেই নির্দিষ্ট ডেটা সেন্টারে সীমাবদ্ধ করে। +ক্লাউডের জন্য ডিজাইন করা হয়নি এমন অ্যাপ্লিকেশনগুলি ক্লাউড পরিবেশের স্থিতিস্থাপকতা এবং স্কেলিং(scaling) ক্ষমতার সুবিধা নিতে পারে না। +উদাহরণস্বরূপ, সঠিকভাবে শুরু করার জন্য ম্যানুয়াল হস্তক্ষেপের(manual intervention) প্রয়োজন এমন অ্যাপগুলি স্বয়ংক্রিয়ভাবে স্কেল(scale) করতে পারে না, +অথবা ব্যর্থতার ক্ষেত্রে সেগুলি স্বয়ংক্রিয়ভাবে পুনরায় চালু করা যাবে না। + +## এটা কিভাবে সাহায্য করে + +যদিও ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলির জন্য কোনও "এক মাপ সব ক্ষেত্রে মানানসই" পথ নেই, তবে তাদের কিছু মিল রয়েছে৷ +ক্লাউড নেটিভ অ্যাপগুলি স্থিতিস্থাপক, পরিচালনাযোগ্য এবং তাদের সাথে থাকা ক্লাউড পরিষেবাগুলির স্যুট(suite) দ্বারা সাহায্য করা হয়৷ +বিভিন্ন ক্লাউড পরিষেবাগুলি উচ্চ মাত্রার(high degree) [পর্যবেক্ষণযোগ্যতা (Observability)](observability)(/bn/observability/) সক্ষম, +সমস্যাগুলি বৃদ্ধির আগে ব্যবহারকারীদের সনাক্ত করতে এবং সমাধান করতে সক্ষম। + +ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলি দৃঢ় অটোমেশনের(automation) সাথে মিলিত হয়ে ইঞ্জিনিয়ারদের(engineer) ন্যূনতম পরিশ্রমের মাদ্ধমে উচ্চ-প্রভাবিত(high-impact) পরিবর্তন নিখুঁতভাবে করতে সাহায্য করে। diff --git a/content/bn/cloud-native-security.md b/content/bn/cloud-native-security.md index a7e8a921ea..7cdd1b639f 100644 --- a/content/bn/cloud-native-security.md +++ b/content/bn/cloud-native-security.md @@ -2,11 +2,12 @@ title: ক্লাউড নেটিভ নিরাপত্তা (Cloud Native Security) status: Completed category: ধারণা +tags: ["security", "", ""] --- ## এটা কি -ক্লাউড নেটিভ সিকিউরিটি এমন একটি পদ্ধতি যা [ক্লাউড নেটিভ অ্যাপ্লিকেশন](/cloud-native-apps/) এ নিরাপত্তা তৈরি করে। এটি নিশ্চিত করে যে নিরাপত্তা উন্নয়ন থেকে উৎপাদন পর্যন্ত সমগ্র অ্যাপ্লিকেশন জীবনচক্রের অংশ। ক্লাউড নেটিভ সিকিউরিটি ক্লাউড নেটিভ এনভায়রনমেন্টের বিবরণ, যথা দ্রুত কোড পরিবর্তন এবং অত্যন্ত ক্ষণস্থায়ী অবকাঠামোর সাথে খাপ খাওয়ানোর সময় প্রথাগত নিরাপত্তা মডেলের মতো একই মান নিশ্চিত করতে চায়। ক্লাউড নেটিভ নিরাপত্তা [DevSecOps](/devsecops/) নামক অনুশীলনের সাথে অত্যন্ত সম্পর্কিত। +ক্লাউড নেটিভ সিকিউরিটি এমন একটি পদ্ধতি যা [ক্লাউড নেটিভ অ্যাপ্লিকেশন](/bn/cloud-native-apps/) এ নিরাপত্তা তৈরি করে। এটি নিশ্চিত করে যে নিরাপত্তা উন্নয়ন থেকে উৎপাদন পর্যন্ত সমগ্র অ্যাপ্লিকেশন জীবনচক্রের অংশ। ক্লাউড নেটিভ সিকিউরিটি ক্লাউড নেটিভ এনভায়রনমেন্টের বিবরণ, যথা দ্রুত কোড পরিবর্তন এবং অত্যন্ত ক্ষণস্থায়ী অবকাঠামোর সাথে খাপ খাওয়ানোর সময় প্রথাগত নিরাপত্তা মডেলের মতো একই মান নিশ্চিত করতে চায়। ক্লাউড নেটিভ নিরাপত্তা [DevSecOps](/bn/devsecops/) নামক অনুশীলনের সাথে অত্যন্ত সম্পর্কিত। ## এটা যেসব সমস্যাতে দৃষ্টিপাত করে diff --git a/content/bn/cloud-native-tech.md b/content/bn/cloud-native-tech.md index 057a7b7b3a..7885837b86 100644 --- a/content/bn/cloud-native-tech.md +++ b/content/bn/cloud-native-tech.md @@ -2,13 +2,14 @@ title: ক্লাউড নেটিভ প্রযুক্তি (Cloud Native Technology) status: Completed category: ধারণা +tags: ["fundamental", "", ""] --- ## এটা কি -ক্লাউড নেটিভ টেকনোলজি, ক্লাউড নেটিভ স্ট্যাক হিসেবেও উল্লেখ করা হয়, [ক্লাউড নেটিভ অ্যাপ্লিকেশন](/cloud-native-apps/) তৈরি করতে ব্যবহৃত প্রযুক্তি। সরকারী, প্রাইভেট এবং হাইব্রিড ক্লাউডের মতো আধুনিক, গতিশীল পরিবেশে মাপযোগ্য অ্যাপ্লিকেশনগুলি তৈরি এবং চালানোর জন্য সংস্থাগুলিকে সক্ষম করে, তারা 'ক্লাউডের প্রতিশ্রুতি' বজায় রাখে এবং ক্লাউড কম্পিউটিং সুবিধাগুলি তাদের সম্পূর্ণরূপে লাভ করে। ক্লাউড কম্পিউটিং এবং কন্টেইনার, সার্ভিস মেশ, মাইক্রোসার্ভিসেস এবং অপরিবর্তনীয় অবকাঠামোর ক্ষমতাকে কাজে লাগানোর জন্য গ্রাউন্ড আপ থেকে ডিজাইন করা হয়েছে এই পদ্ধতির উদাহরণ। +ক্লাউড নেটিভ টেকনোলজি, ক্লাউড নেটিভ স্ট্যাক হিসেবেও উল্লেখ করা হয়, [ক্লাউড নেটিভ অ্যাপ্লিকেশন](/bn/cloud-native-apps/) তৈরি করতে ব্যবহৃত প্রযুক্তি। সরকারী, প্রাইভেট এবং হাইব্রিড ক্লাউডের মতো আধুনিক, গতিশীল পরিবেশে মাপযোগ্য অ্যাপ্লিকেশনগুলি তৈরি এবং চালানোর জন্য সংস্থাগুলিকে সক্ষম করে, তারা 'ক্লাউডের প্রতিশ্রুতি' বজায় রাখে এবং ক্লাউড কম্পিউটিং সুবিধাগুলি তাদের সম্পূর্ণরূপে লাভ করে। ক্লাউড কম্পিউটিং এবং কন্টেইনার, সার্ভিস মেশ, মাইক্রোসার্ভিসেস এবং অপরিবর্তনীয় অবকাঠামোর ক্ষমতাকে কাজে লাগানোর জন্য গ্রাউন্ড আপ থেকে ডিজাইন করা হয়েছে এই পদ্ধতির উদাহরণ। -## এটা যেসব সমস্যাতে ফোকাস করে +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে ক্লাউড নেটিভ স্ট্যাকের অনেকগুলি বিভিন্ন প্রযুক্তি বিভাগ রয়েছে, বিভিন্ন চ্যালেঞ্জ মোকাবেলা করে৷ আপনি যদি [CNCF ক্লাউড নেটিভ ল্যান্ডস্কেপ](https://landscape.cncf.io/) দেখে থাকেন তবে আপনি দেখতে পাবেন যে এটি কতগুলি বিভিন্ন অঞ্চলকে স্পর্শ করে। কিন্তু একটি উচ্চ স্তরে, তারা চ্যালেঞ্জগুলির একটি প্রধান সেটকে মোকাবেলা করে: ঐতিহ্যগত আইটি অপারেটিং মডেলগুলির ডাউনসাইডস। চ্যালেঞ্জগুলির মধ্যে রয়েছে মাপযোগ্য, ত্রুটি-সহনশীল, স্ব-নিরাময় অ্যাপ্লিকেশন তৈরির অসুবিধা, সেইসাথে অদক্ষ সম্পদ ব্যবহার, অন্যদের মধ্যে। diff --git a/content/bn/cluster.md b/content/bn/cluster.md index a2650a685b..49c43c53e2 100644 --- a/content/bn/cluster.md +++ b/content/bn/cluster.md @@ -2,15 +2,16 @@ title: ক্লাস্টার (Cluster) status: Completed category: ধারণা +tags: ["infrastructure", "fundamental", ""] --- ## এটা কি -একটি ক্লাস্টার হল কম্পিউটার বা অ্যাপ্লিকেশনগুলির একটি গ্রুপ যা একটি সাধারণ লক্ষ্যে একসাথে কাজ করে। ক্লাউড নেটিভ কম্পিউটিং প্রসঙ্গে, শব্দটি প্রায়শই কুবারনেটে প্রয়োগ করা হয়। একটি Kubernetes ক্লাস্টার হল পরিষেবাগুলির একটি সেট (বা কাজের চাপ) যা তাদের নিজস্ব পাত্রে চলে, সাধারণত বিভিন্ন মেশিনে। এই সমস্ত [কন্টেইনারাইজড(Containerized)](/containerization/) পরিষেবাগুলির সংগ্রহ, একটি নেটওয়ার্কের মাধ্যমে সংযুক্ত, একটি ক্লাস্টার প্রতিনিধিত্ব করে। +একটি ক্লাস্টার হল কম্পিউটার বা অ্যাপ্লিকেশনগুলির একটি গ্রুপ যা একটি সাধারণ লক্ষ্যে একসাথে কাজ করে। ক্লাউড নেটিভ কম্পিউটিং প্রসঙ্গে, শব্দটি প্রায়শই কুবারনেটে প্রয়োগ করা হয়। একটি Kubernetes ক্লাস্টার হল পরিষেবাগুলির একটি সেট (বা কাজের চাপ) যা তাদের নিজস্ব পাত্রে চলে, সাধারণত বিভিন্ন মেশিনে। এই সমস্ত [কন্টেইনারাইজড(Containerized)](/bn/containerization/) পরিষেবাগুলির সংগ্রহ, একটি নেটওয়ার্কের মাধ্যমে সংযুক্ত, একটি ক্লাস্টার প্রতিনিধিত্ব করে। ## এটা যেসব সমস্যাতে দৃষ্টিপাত করে -একটি একক কম্পিউটারে চলা সফ্টওয়্যার ব্যর্থতার একটি একক পয়েন্ট উপস্থাপন করে — যদি সেই কম্পিউটারটি ক্র্যাশ হয়ে যায়, বা কেউ দুর্ঘটনাক্রমে পাওয়ার কেবলটি আনপ্লাগ করে, তবে কিছু ব্যবসা-সংক্রান্ত সমস্যা সিস্টেম অফলাইনে নেওয়া হতে পারে। এই কারণেই আধুনিক সফ্টওয়্যারগুলি সাধারণত [ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন(Distributed application)](/distributed-apps/) হিসাবে তৈরি করা হয়, ক্লাস্টার হিসাবে একসাথে গ্রুপ করা হয়। +একটি একক কম্পিউটারে চলা সফ্টওয়্যার ব্যর্থতার একটি একক পয়েন্ট উপস্থাপন করে — যদি সেই কম্পিউটারটি ক্র্যাশ হয়ে যায়, বা কেউ দুর্ঘটনাক্রমে পাওয়ার কেবলটি আনপ্লাগ করে, তবে কিছু ব্যবসা-সংক্রান্ত সমস্যা সিস্টেম অফলাইনে নেওয়া হতে পারে। এই কারণেই আধুনিক সফ্টওয়্যারগুলি সাধারণত [ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন(Distributed application)](/bn/distributed-apps/) হিসাবে তৈরি করা হয়, ক্লাস্টার হিসাবে একসাথে গ্রুপ করা হয়। ## এটা কিভাবে সাহায্য করে diff --git a/content/bn/container-image.md b/content/bn/container-image.md new file mode 100644 index 0000000000..0f03cac749 --- /dev/null +++ b/content/bn/container-image.md @@ -0,0 +1,18 @@ +--- +title: কন্টেইনার ইমেজ (Container Image) +status: Feedback Appreciated +category: ধারণা +tags: ["", "", ""] +--- + +## এটা কি + +একটি কন্টেইনার ইমেজ হল একটি অপরিবর্তনীয়, স্ট্যাটিক ফাইল যাতে একটি [কন্টেইনার](/bn/container/) তৈরির নির্ভরতা থাকে। এই নির্ভরতাগুলির মধ্যে একটি একক এক্সিকিউটেবল (single executable) বাইনারি ফাইল, সিস্টেম লাইব্রেরি, সিস্টেম টুলস, এনভায়রনমেন্ট ভেরিয়েবল এবং অন্যান্য প্রয়োজনীয় প্ল্যাটফর্ম সেটিংস অন্তর্ভুক্ত থাকতে পারে। কন্টেইনার ইমেজ একটি অ্যাপ্লিকেশনের [কন্টেইনারাইজেশন](/bn/containerization/) থেকে আসে এবং সাধারণত কন্টেইনার রেজিস্ট্রিতে সংরক্ষণ করা হয়, যেখানে সেগুলি ডাউনলোড করা যায় এবং একটি কন্টেইনার রানটাইম ইন্টারফেস (সিআরআই) ব্যবহার করে একটি বিচ্ছিন্ন প্রক্রিয়া হিসাবে চালানো যায়। একটি কন্টেইনার ইমেজ ফ্রেমওয়ার্ককে অবশ্যই ওপেন কন্টেইনার ইনিশিয়েটিভ (OCI) দ্বারা সংজ্ঞায়িত স্ট্যান্ডার্ড স্কিমা অনুসরণ করতে হবে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ঐতিহ্যগতভাবে, অ্যাপ্লিকেশন সার্ভারগুলি প্রতি পরিবেশে (environment) কনফিগার করা হয় এবং অ্যাপ্লিকেশনগুলি তাদের সাথে স্থাপন করা হয়। পরিবেশের মধ্যে কোনো ভুল কনফিগারেশন সমস্যাযুক্ত এবং প্রায়ই ডাউনটাইম বা ব্যর্থ স্থাপনার (failed deployments) দিকে নিয়ে যায়। একটি অ্যাপ্লিকেশনের পরিবেশ পুনরাবৃত্তিযোগ্য এবং ভালভাবে সংজ্ঞায়িত থাকা প্রয়োজন; অন্যথায়, পরিবেশ-সম্পর্কিত (environment-related) বাগগুলির সম্ভাবনা বৃদ্ধি পায়। যখন অ্যাপ্লিকেশন পরিবেশগুলি অপর্যাপ্ত বা ভুলভাবে কনফিগার করা হয়,তখন অ্যাপ্লিকেশনগুলির [অনুভূমিক (horizontal)](/bn/horizontal-scaling/) এবং [উল্লম্ব (vertical)](/bn/vertical-scaling/) স্কেলিং চ্যালেঞ্জিং হয়ে ওঠে। + +## এটা কিভাবে সাহায্য করে + +কন্টেইনার ইমেজগুলি একটি অ্যাপ্লিকেশনকে তার যেকোন রানটাইম নির্ভরতা, যেমন একটি অ্যাপ্লিকেশন সার্ভারের সাথে একত্রিত (bundle) করে। এটি একটি ডেভেলপারের মেশিন সহ সমস্ত পরিবেশ জুড়ে ধারাবাহিকতা (consistency) প্রদান করে৷ কন্টেইনার ইমেজগুলো ব্যবহার করে প্রয়োজনমত তাৎক্ষণিক যতখুশি তত কন্টেইনার তৈরি করা যেতে পারে, যা বেশি [স্কেলিবিলিটি](/bn/scalability/) প্রদান করে। \ No newline at end of file diff --git a/content/bn/container.md b/content/bn/container.md index 507d21301a..f7ceed0507 100644 --- a/content/bn/container.md +++ b/content/bn/container.md @@ -2,6 +2,7 @@ title: কন্টেইনার (Container) status: Completed category: প্রযুক্তি +tags: ["application", "fundamental", ""] --- ## এটা কি @@ -16,4 +17,4 @@ category: প্রযুক্তি কনটেইনারগুলি একই অপারেটিং সিস্টেম এবং এর মেশিন সংস্থানগুলি ভাগ করে, অপারেটিং সিস্টেমের সংস্থান ওভারহেড ছড়িয়ে দেয় এবং শারীরিক মেশিনের দক্ষ ব্যবহার তৈরি করে। এই ক্ষমতা শুধুমাত্র সম্ভব কারণ কন্টেইনারগুলি সাধারণত একে অপরের সাথে যোগাযোগ করতে সক্ষম হতে সীমিত। এটি একই শারীরিক মেশিনে আরও অনেক অ্যাপ্লিকেশন চালানোর অনুমতি দেয়। -তবে সীমাবদ্ধতা আছে। যেহেতু কন্টেইনারগুলি একই অপারেটিং সিস্টেম শেয়ার করে, তাই প্রক্রিয়াগুলি বিকল্পগুলির তুলনায় কম নিরাপদ বলে বিবেচিত হতে পারে৷ ধারকদেরও ভাগ করা সম্পদের সীমা প্রয়োজন। সম্পদের নিশ্চয়তা দিতে, প্রশাসকদের অবশ্যই মেমরি এবং সিপিইউ ব্যবহার সীমাবদ্ধ এবং সীমিত করতে হবে যাতে অন্যান্য অ্যাপ্লিকেশনগুলি খারাপভাবে কাজ না করে। +তবে সীমাবদ্ধতা আছে। যেহেতু কন্টেইনারগুলি একই অপারেটিং সিস্টেম শেয়ার করে, তাই প্রক্রিয়াগুলি বিকল্পগুলির তুলনায় কম নিরাপদ বলে বিবেচিত হতে পারে৷ ধারকদেরও ভাগ করা সম্পদের সীমা প্রয়োজন। সম্পদের নিশ্চয়তা দিতে, প্রশাসকদের অবশ্যই মেমরি এবং সিপিইউ ব্যবহার সীমাবদ্ধ এবং সীমিত করতে হবে যাতে অন্যান্য অ্যাপ্লিকেশনগুলি খারাপভাবে কাজ না করে। \ No newline at end of file diff --git a/content/bn/containerization.md b/content/bn/containerization.md new file mode 100644 index 0000000000..47ae0ff657 --- /dev/null +++ b/content/bn/containerization.md @@ -0,0 +1,19 @@ +--- +title: কন্টেইনারাইজেশন (Containerization) +status: Completed +category: প্রযুক্তি +tags: ["application", "", ""] +--- + +## এটা কি + +কন্টেইনারাইজেশন হল একটি প্রক্রিয়া যা একটি অ্যাপ্লিকেশন এবং এর সংশ্লিষ্ট জিনিসসমূহকে একটি [কন্টেইনার ইমেজ (Container Image)](/bn/container-image/) এ বান্ডিল করার প্রক্রিয়া। কন্টেইনার নির্মাণ প্রক্রিয়ার জন্য [ওপেন কন্টেইনার ইনিশিয়েটিভ](https://opencontainers.org) (OCI) মান মেনে চলা প্রয়োজন। যতক্ষণ না একটি কন্টেইনার ইমেজ এই স্ট্যান্ডার্ড মেনে চলে, যে কোন কন্টেইনারাইজেশন টুল ই ব্যবহার করা হয় তা চিন্তার বিষয় নয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +কনটেইনারগুলি প্রচলিত হওয়ার আগে, সংস্থাগুলি যেকোনো [বেয়ার-মেটাল মেশিন (bare-metal machine)](/bn/bare_metal_machine/) এর একাধিক অ্যাপ্লিকেশন তৈরি করার জন্য ভার্চুয়াল মেশিনের (VM) উপর নির্ভর করত। ভিএমগুলি পাত্রের তুলনায় উল্লেখযোগ্যভাবে বড় এবং যার ফলে এটি চালানোর জন্য একটি হাইপারভাইজার প্রয়োজন।যেহেতু এই বৃহৎ ভিএম টেমপ্লেটগুলির স্টোরেজ, ব্যাকআপ এবং স্থানান্তরের কাজ করে, এ কারণে ভিএম টেমপ্লেট তৈরি করাও একটি ধীর প্রক্রিয়া। অতিরিক্তভাবে, ভিএমগুলি যদি [অপরিবর্তনশীলতা (immutability)](/bn/immutable-infrastructure//) নীতি লঙ্ঘন করে, তবে এটি কনফিগারেশন ড্রিফটে ভুগতে পারে। + +## এটা কিভাবে সাহায্য করে + +কন্টেইনারাইজেশন প্রক্রিয়ার জন্য একটি নির্ভরযোগ্য একটি ফাইল প্রয়োজন যেখানে তথ্যসমূহ তালিকা আকারে রাখা সম্ভব হয় এবং এক্ষেত্রে কন্টেইনার ইমেজগুলি (প্রথাগত ভিএমগুলির তুলনায়) তুলনামূলক হালকা ওজনের হয়। এই ফাইলটির সংস্করণ নিয়ন্ত্রিত এবং বিল্ড প্রক্রিয়া অটোমেটিক হতে পারে, যার কারণে যখন স্বয়ংক্রিয় প্রক্রিয়াগুলি যন্ত্রাংশের যত্ন নেয় তখন বিভিন্ন সংস্থাকে অন্যান্য অগ্রাধিকারগুলিতে ফোকাস করার অনুমতি দেয়। একটি কন্টেইনার ইমেজ একটি অনন্য শনাক্তকারী দ্বারা সংরক্ষিত থাকে যা এর সঠিক বিষয়বস্তু এবং কনফিগারেশনের সাথে সংযুক্ত থাকে।যেহেতু কন্টেইনারগুলি নির্ধারিত এবং পুনঃনির্ধারিত করা সম্ভব, তাই সেগুলিকে সর্বদা তাদের প্রাথমিক অবস্থায় পুনরায় সেট করা যায় যা কনফিগারেশন ত্রুটি দূর করে। + diff --git a/content/bn/containers-as-a-service.md b/content/bn/containers-as-a-service.md new file mode 100644 index 0000000000..1cf27057b8 --- /dev/null +++ b/content/bn/containers-as-a-service.md @@ -0,0 +1,32 @@ +--- +title: কন্টেইনার এজ এ সার্ভিস (Containers as a Service) +status: Deprecated +category: প্রযুক্তি +tags: ["platform", "", ""] +--- + +## এটা কি + +কন্টেইনার এজ এ সার্ভিস (CaaS) হল একটি ক্লাউড পরিষেবা যা অ্যাপগুলি পরিচালনা এবং স্থাপনে সহায়তা করে +[ধারক](/bn/container/)-ভিত্তিক [বিমূর্ততা](/bn/abstraction) ব্যবহার করে। +এই পরিষেবাটি প্রাঙ্গনে(on-premises) বা ক্লাউডে স্থাপন করা যেতে পারে। + +CaaS প্রদানকারীরা একটি ফ্রেমওয়ার্ক বা অর্কেস্ট্রেশন প্ল্যাটফর্ম অফার করে যা মূল আইটি ফাংশনগুলিকে স্বয়ংক্রিয় করে যার উপর কন্টেনার স্থাপন করা হয় এবং পরিচালিত হয়। +এটি বিকাশকারীদের সুরক্ষিত এবং [স্কেলযোগ্য](/bn/scalable/) কন্টেইনারাইজড অ্যাপ তৈরি করতে সাহায্য করে। +কারণ ব্যবহারকারীরা তাদের প্রয়োজনীয় সংস্থানগুলিই কেনেন (শিডিউল করার ক্ষমতা, লোড ব্যালেন্সিং ইত্যাদি), +তারা অর্থ সঞ্চয় এবং দক্ষতা বৃদ্ধি করে। + +কন্টেইনারগুলি দ্রুত বিকাশ এবং ডেলিভার করার জন্য সামঞ্জস্যপূর্ণ পরিবেশ তৈরি করে [ক্লাউড-নেটিভ অ্যাপ্লিকেশান](/bn/cloud-native-apps/) যা যেকোনো জায়গায় চলতে পারে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +CaaS ব্যতীত, সফ্টওয়্যার ডেভেলপমেন্ট দলগুলিকে কন্টেইনারগুলি চালানোর অন্তর্নিহিত অবকাঠামো স্থাপন, পরিচালনা এবং নিরীক্ষণ করতে হবে। + +## এটা কিভাবে সাহায্য করে + +একটি CaaS প্ল্যাটফর্মে কন্টেইনারাইজড অ্যাপ্লিকেশন স্থাপন করার সময়, +লগ এগ্রিগেশন এবং মনিটরিং টুলের মাধ্যমে ব্যবহারকারীরা সিস্টেম পারফরম্যান্সে দৃশ্যমানতা লাভ করে। +CaaS-এ [অটো স্কেলিং](/bn/auto-scaling/) এবং অর্কেস্ট্রেশন পরিচালনার জন্য অন্তর্নির্মিত কার্যকারিতাও রয়েছে। +এটি দলগুলিকে উচ্চ দৃশ্যমানতা এবং উচ্চ প্রাপ্যতা [ডিস্ট্রিবিউটেড সিস্টেম](/bn/distributed-systems/) তৈরি করতে সক্ষম করে। +উপরন্তু, দ্রুত স্থাপনার অনুমতি দিয়ে, CaaS টিম ডেভেলপমেন্টের বেগ বাড়ায়। +যদিও কন্টেইনারগুলি একটি ধারাবাহিক স্থাপনার লক্ষ্য নিশ্চিত করে, CaaS স্থাপনা পরিচালনার জন্য প্রয়োজনীয় [DevOps](/devops/) সংস্থানগুলি হ্রাস করে প্রকৌশল অপারেটিং খরচ কমিয়ে দেয়। diff --git a/content/bn/continuous-delivery.md b/content/bn/continuous-delivery.md new file mode 100644 index 0000000000..162cdb2df5 --- /dev/null +++ b/content/bn/continuous-delivery.md @@ -0,0 +1,31 @@ +--- +title: ক্রমাগত বিতরণ (Continuous Delivery) (CD) +status: Completed +category: ধারণা +tags: ["methodology", "application", ""] +--- + +## এটা কি + +ক্রমাগত বিতরণ (continuous delivery), প্রায়ই CD হিসাবে সংক্ষিপ্ত, অনুশীলনের একটি সেট যেখানে কোডের পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে একটি গ্রহণযোগ্য পরিবেশে স্থাপন করা হয় (অথবা, ক্রমাগত স্থাপনার (continuous deployment) ক্ষেত্রে, উৎপাদনে)। +স্থাপনার (deployment) আগে সফ্টওয়্যারটি (software) পর্যাপ্তভাবে পরীক্ষা করা হয়েছে তা নিশ্চিত করার জন্য CD অত্যন্ত গুরুত্বপূর্ণভাবে প্রক্রিয়াগুলি অন্তর্ভুক্ত করে এবং প্রয়োজন মনে হলে পরিবর্তনগুলি রোলব্যাক (rollback) করার একটি উপায় প্রদান করে। +ক্রমাগত একীকরণ (continuous integration) (CI) ক্রমাগত বিতরণের (continuous delivery) প্রথম পদক্ষেপ +(অর্থাৎ, পরিবর্তনগুলি পরীক্ষা এবং স্থাপনের আগে পরিষ্কারভাবে একত্রিত করতে হবে)। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +[নির্ভরযোগ্য (reliable)](/bn/reliability/) আপডেটগুলি বিতরণ (deploying) করার স্কেলে একটি সমস্যা হয়ে দাঁড়ায়। +আদর্শভাবে, শেষ-ব্যবহারকারীদের কাছে আরও ভাল মূল্য প্রদানের করতে আমরা আরও ঘন ঘন স্থাপন (deliver) করব। +যাইহোক, এটি ম্যানুয়ালি (manually) করা প্রতিটি পরিবর্তনের জন্য উচ্চ লেনদেনের খরচে স্থানান্তরিত করে। +ঐতিহাসিকভাবে, এই খরচগুলি এড়াতে, সংস্থাগুলি কম ঘন ঘন মুক্তি (released) করে, একবারে অধিক পরিবর্তন স্থাপন করে এবং কিছু ভুল হওয়ার ঝুঁকি বাড়ায়। + +## এটা কিভাবে সাহায্য করে + +CD কৌশলগুলি একটি সম্পূর্ণ স্বয়ংক্রিয় পথ তৈরি করে যেটি পরীক্ষা উৎপাদন করে এবং বিভিন্ন স্থাপনার কৌশল ব্যবহার করে সফ্টওয়্যার স্থাপন (deploy) করে যেমন [ক্যানারি (canary)](/bn/canary-deployment/) বা [নীল-সবুজ (blue-green)](/bn/blue-green-deployment/) রিলিজ (releases)। +এটি সফ্টওয়্যার (software) উন্নয়নকারীদেরকে ঘন ঘন কোড স্থাপন (deploy) করতে দেয়, তাদের মনে শান্তি দেয় যে নতুন সংশোধন পরীক্ষা করা হয়েছে। +সাধারণত,বৈশিষ্ট্য শাখা (feature branching) বা টান অনুরোধের (pull requests) বিপরীতে ট্রাঙ্ক-ভিত্তিক (trunk-based) উন্নয়ন CD কৌশলগুলিতে ব্যবহার করা হয়। + +## সম্পর্কিত পদ + +* [ক্রমাগত একীকরণ (Continuous Integration)](/bn/continuous-integration/) +* [ক্রমাগত স্থাপনা (Continuous Deployment)](/bn/continuous-deployment/) diff --git a/content/bn/continuous-deployment.md b/content/bn/continuous-deployment.md new file mode 100644 index 0000000000..91aa57af1e --- /dev/null +++ b/content/bn/continuous-deployment.md @@ -0,0 +1,29 @@ +--- +title: ক্রমাগত স্থাপনা (Continuous Deployment (CD)) +status: Completed +category: ধারণা +tags: ["application", "methodology", ""] +--- + +## এটা কি + +ক্রমাগত স্থাপনা (Continuous Deployment), প্রায়ই CD হিসাবে সংক্ষেপে, সরাসরি উৎপাদনে সমাপ্ত সফ্টওয়্যার (software) স্থাপনের মাধ্যমে [ক্রমাগত বিতরণ (Continuous Delivery)](/bn/continuous-delivery/) থেকে এক ধাপ এগিয়ে যায়। +ক্রমাগত স্থাপনা (CD) [ক্রমাগত একীকরণ (Continuous Integration)](/bn/continuous-integration/) (CI) এর সাথে হাত মিলিয়ে যায় এবং প্রায়ই CI/CD হিসাবে উল্লেখ করা হয়। +একটি প্রদত্ত অ্যাপ্লিকেশনে পরিবর্তনগুলি বৈধ কিনা তা CI প্রক্রিয়া পরীক্ষা করে এবং CD প্রক্রিয়া স্বয়ংক্রিয়ভাবে একটি প্রতিষ্ঠানের পরিবেশের মাধ্যমে পরীক্ষা থেকে উৎপাদন পর্যন্ত কোডের পরিবর্তনগুলি স্থাপন করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +নতুন সফ্টওয়্যার সংস্করণ প্রকাশ করা একটি শ্রম-নিবিড় এবং ত্রুটি-প্রবণ প্রক্রিয়া হতে পারে। +এটি প্রায়শই এমন কিছু যা সংস্থাগুলি উৎপাদন ঘটনা এড়াতে এবং নিয়মিত ব্যবসায়িক সময়ের বাইরে প্রকৌশলীদের উপলব্ধ থাকার সময় কমাতে চায়। +ঐতিহ্যগত সফ্টওয়্যার স্থাপনার মডেলগুলি সংস্থাগুলিকে একটি দুষ্ট চক্রের মধ্যে ফেলে দেয় যেখানে সফ্টওয়্যার প্রকাশের প্রক্রিয়াটি স্থিতিশীলতা এবং বৈশিষ্ট্যের বেগ উভয়ের চারপাশে সাংগঠনিক চাহিদা মেটাতে ব্যর্থ হয়। + +## এটা কিভাবে সাহায্য করে + +রিলিজ চক্রকে স্বয়ংক্রিয় করে এবং সংস্থাগুলিকে আরও ঘন ঘন উৎপাদনের মুক্তি দিতে বাধ্য করার মাধ্যমে, CI ডেভেলপমেন্ট টিমের জন্য যা করে CD অপারেশন দলের জন্য তাই করে। +বিশেষত, এটি অপারেশন দলগুলিকে উৎপাদন স্থাপনের বেদনাদায়ক এবং ত্রুটি-প্রবণ অংশগুলিকে স্বয়ংক্রিয় করতে বাধ্য করে, সামগ্রিক ঝুঁকি হ্রাস করে। +এটি উৎপাদন পরিবর্তনগুলি গ্রহণ এবং মানিয়ে নেওয়ার ক্ষেত্রে সংস্থাগুলিকে আরও ভাল করে তোলে, যা উচ্চ স্থিতিশীলতার দিকে পরিচালিত করে। + +## সম্পর্কিত পদ + +* [ক্রমাগত একীকরণ (Continuous Integration)](/bn/continuous-integration/) +* [ক্রমাগত বিতরণ (Continuous Delivery)](/bn/continuous-delivery/) diff --git a/content/bn/continuous-integration.md b/content/bn/continuous-integration.md new file mode 100644 index 0000000000..725918ff0b --- /dev/null +++ b/content/bn/continuous-integration.md @@ -0,0 +1,30 @@ +--- +title: ক্রমাগত একীকরণ (Continuous Integration) (CI) +status: Completed +category: ধারণা +tags: ["application", "methodology", ""] +--- + +## এটা কি + +ক্রমাগত একীকরণ (Continuous integration), প্রায়ই CI হিসাবে সংক্ষেপে, যতটা সম্ভব নিয়মিত কোড পরিবর্তনগুলিকে একীভূত করার অনুশীলন। +CI হল [ক্রমাগত বিতরণ (Continuous Delivery)](/bn/continuous-delivery/) (CD) এর পূর্বশর্ত। +ঐতিহ্যগতভাবে, CI প্রক্রিয়া শুরু হয় যখন কোড পরিবর্তনগুলি একটি উৎস নিয়ন্ত্রণ ব্যবস্থার (Git, Mercurial, বা Subversion) প্রতি প্রতিশ্রুতিবদ্ধ হয় এবং একটি CD সিস্টেমের দ্বারা গ্রাস করার জন্য প্রস্তুত একটি পরীক্ষিত আর্টিফ্যাক্ট দিয়ে শেষ হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +সফ্টওয়্যার সিস্টেমগুলি প্রায়শই বড় এবং জটিল হয়, অসংখ্য বিকাশকারী তাদের রক্ষণাবেক্ষণ এবং আপডেট করে। +সিস্টেমের বিভিন্ন অংশে সমান্তরালভাবে কাজ করে, এই বিকাশকারীরা পরস্পরবিরোধী পরিবর্তন করতে পারে এবং অসাবধানতাবশত একে অপরের কাজ ভেঙে দিতে পারে। +উপরন্তু, একই প্রজেক্টে একাধিক ডেভেলপার কাজ করে, যেকোন দৈনন্দিন কাজ যেমন টেস্টিং এবং কোডের গুণমান গণনা করার জন্য প্রতিটি ডেভেলপারকে সময় নষ্ট করে বারবার করতে হবে। + +## এটা কিভাবে সাহায্য করে + +CI সফ্টওয়্যার স্বয়ংক্রিয়ভাবে চেক করে যে কোড পরিবর্তনগুলি পরিষ্কারভাবে একত্রিত হয় যখনই একজন বিকাশকারী পরিবর্তন কমিট (commits) করে। +কোডের গুণমান পরীক্ষা, পরীক্ষা এবং এমনকি স্থাপনা চালানোর জন্য CI সার্ভার ব্যবহার করা এটি একটি প্রায় সর্বব্যাপী অনুশীলন। +যেমন, এটি দলের মধ্যে মান নিয়ন্ত্রণের একটি কংক্রিট (concrete) বাস্তবায়ন হয়ে ওঠে। +CI সফ্টওয়্যার দলগুলিকে প্রতিটি কোড কমিটকে একটি কংক্রিট ব্যর্থতা বা একটি কার্যকর রিলিজ প্রার্থীতে পরিণত করার অনুমতি দেয়। + +## সম্পর্কিত পদ + +* [ক্রমাগত বিতরণ (Continuous Delivery)](/bn/continuous-delivery/) +* [ক্রমাগত স্থাপনা (Continuous Deployment)](/bn/continuous-deployment/) diff --git a/content/bn/data-center.md b/content/bn/data-center.md new file mode 100644 index 0000000000..3ce45d3263 --- /dev/null +++ b/content/bn/data-center.md @@ -0,0 +1,29 @@ +--- +title: তথ্য কেন্দ্র (Data center) +status: Feedback Appreciated +category: প্রযুক্তি +tags: ["infrastructure", "", ""] +--- + +## এটা কি + +একটি তথ্য কেন্দ্র হল একটি বিশেষ ভবন বা সুবিধা যা বিশেষভাবে হাউজ কম্পিউটার, প্রায়শই সার্ভারগুলির জন্য ডিজাইন করা হয়। +তথ্য কেন্দ্রগুলি উচ্চ-গতির ইন্টারনেট লাইনের সাথে সংযুক্ত থাকে, +বিশেষ করে তথ্য কেন্দ্রের ক্ষেত্রে [ক্লাউড কম্পিউটিং](bn/cloud-computing/) উপর নির্ভর করে। +বিভিন্ন ধরণের ঘটনাগুলির ক্ষেত্রেও তথ্য কেন্দ্র গুলোর ভবন রয়েছে পরিষেবা বজায় রাখার জন্য সরঞ্জাম রয়েছে, +যেমন বিদ্যুৎ বিভ্রাটের সময় বিদ্যুৎ সরবরাহ করতে জেনারেটর, পাশাপাশি কম্পিউটার দ্বারা উত্পাদিত অতিরিক্ত তাপ মোকাবেলা করার জন্য শক্তিশালী শীতাতপ নিয়ন্ত্রণ ব্যবস্থা। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +প্রতিটি ব্যবসা প্রতিষ্ঠান, যেখানে তারা অবস্থিত, সেখানে নিজস্ব সার্ভার সরঞ্জাম হোস্ট করার পরিবর্তে +তথ্য কেন্দ্র এসব প্রতিষ্ঠান এবং ব্যক্তিদের বড় পরিসরে তথ্য ব্যবস্থাপনার বিশেষ জ্ঞান এবং দক্ষতা ব্যবহার করতে অনুমতি দেয় +এর মানে হল শক্তি সরবরাহ , অগ্নি প্রযুক্তি , শীতাতপ নিয়ন্ত্রণ, উচ্চ গতির ইন্টারনেট সংযোগ নিয়ে চিন্তা করতে হবে না। + +## এটা কিভাবে সাহায্য করে + +ক্লাউড কম্পিউটিংয়ের জন্য, তথ্য কেন্দ্র গুলি অত্যন্ত গুরুত্বপূর্ণ। +যেহেতু চাহিদার [স্কেল](bn/scalability/) অনুযায়ী সংস্থান এবং অবকাঠামোর ব্যবস্থা করা যেতে পারে, +ব্যবসাপ্রতিষ্ঠানগুলি কম্পিউটিং সংস্থানগুলির জন্য পূর্বাভাস এবং সম্ভাব্যভাবে কম রিসোর্সিং বা অতিরিক্ত অর্থ প্রদান সম্পর্কে চিন্তা না করেই একটি তথ্য কেন্দ্র এ ক্লাউড কম্পিউটিং সংস্থান ভাড়া নিতে পারে। +যেহেতু সারা বিশ্বে তথ্য কেন্দ্র সেন্টার রয়েছে, +এটি ভৌগোলিকভাবে চাহিদার কাছাকাছি সংস্থান সরবরাহের অনুমতি দেয় +সত্যিকারের সরঞ্জাম আনা এবং সরঞ্জাম সেট আপ না করে। diff --git a/content/bn/database-as-a-service.md b/content/bn/database-as-a-service.md new file mode 100644 index 0000000000..c0f82ab730 --- /dev/null +++ b/content/bn/database-as-a-service.md @@ -0,0 +1,30 @@ +--- +title: ডেটবেস-এজ-এ-সার্ভিস (Database as a Service) (DBaaS) +status: Deprecated +category: প্রযুক্তি +draft: true +tags: ["", "", ""] +--- + +## এটা কি + +ডেটবেস-এজ-এ-সার্ভিস (DBaaS) হল একটি "[ক্লাউড](/bn/cloud_computing/)" অপারেটর (সর্বজনীন বা ব্যক্তিগত) দ্বারা পরিচালিত একটি পরিষেবা +যেটি অ্যাপ্লিকেশন টিমের প্রয়োজন ছাড়াই অ্যাপ্লিকেশনগুলিকে সমর্থন করে৷ +ঐতিহ্যগত ডাটাবেস প্রশাসন ফাংশন সঞ্চালন. +DBaaS অ্যাপ ডেভেলপারদের বিশেষজ্ঞ না হয়েও ডাটাবেস ব্যবহার করতে দেয় +ডাটাবেস আপ টু ডেট রাখতে একজন ডাটাবেস অ্যাডমিনিস্ট্রেটর (DBA) নিয়োগ করা। + +## এটা কিভাবে সাহায্য করে + +ঐতিহ্যগতভাবে, অন-প্রিমিস সেটআপে, সংস্থাগুলিকে নিয়মিত বিনিয়োগ করতে হয় +ডাটাবেস সম্প্রসারণের জন্য অতিরিক্ত স্টোরেজ এবং প্রক্রিয়াকরণ ক্ষমতা যা ব্যয়বহুল হতে পারে। +উপরন্তু, বিকাশকারীরা আইটি অবকাঠামো দলগুলির সাহায্যে ডেটাবেসগুলি সরবরাহ করে এবং কনফিগার করে, +ডাটাবেস-চালিত অ্যাপ্লিকেশনগুলির স্থাপনার গতি কমিয়ে দেয়। +এগুলি লোড করা এবং কার্যকর করতেও বেশি সময় লাগে৷ + +## এটা কিভাবে সাহায্য করে + +DBaaS ডেভেলপারদের ক্লাউড-ভিত্তিক পরিষেবা প্রদানকারীর কাছে সমস্ত প্রশাসন/প্রশাসনিক ক্রিয়াকলাপ আউটসোর্স করার অনুমতি দেয়। +পরিষেবা প্রদানকারী নিশ্চিত করে যে ডাটাবেসটি সুচারুভাবে চলছে। +এটি আমাদের কনফিগারেশন ম্যানেজমেন্ট, ব্যাকআপ, প্যাচ, আপগ্রেড, পরিষেবা পর্যবেক্ষণ এবং আরও অনেক কিছু করতে সুবিধাজনক ইন্টারফেস দেয়। +DBaaS সংস্থাগুলিকে ডাটাবেস খরচ কমিয়ে দ্রুত এন্টারপ্রাইজ-গ্রেড অ্যাপ্লিকেশন বিকাশে সহায়তা করে। diff --git a/content/bn/debugging.md b/content/bn/debugging.md new file mode 100644 index 0000000000..46fe2ca9ee --- /dev/null +++ b/content/bn/debugging.md @@ -0,0 +1,30 @@ +--- +title: ডিবাগিং (Debugging) +status: Deprecated +category: ধারণা +draft: true +tags: ["application", "methodology", ""] +--- + +## এটা কি + +ডিবাগিং হল কম্পিউটার প্রোগ্রাম, সফ্টওয়্যার, বা সিস্টেম থেকে পছন্দসই ফলাফল পেতে বাগগুলি (বা ত্রুটিগুলি) খুঁজে বের করার এবং সমাধান করার প্রক্রিয়া বা কার্যকলাপ। +একটি বাগ হল একটি ত্রুটি বা একটি সমস্যা যা ভুল বা অপ্রত্যাশিত ফলাফলের দিকে পরিচালিত করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +সফ্টওয়্যার ডেভেলপমেন্ট জটিল কার্যকলাপ যা বাগ প্রবর্তন ছাড়া কোড লেখা প্রায় অসম্ভব করে তোলে। +এই বাগগুলি এমন কোডের দিকে নিয়ে যায় যা কার্যকর করার সময় সম্ভবত পছন্দসই (অনির্ধারিত আচরণ) হিসাবে কাজ করবে না। +একটি অ্যাপ্লিকেশন কতটা সমালোচনামূলক তার উপর নির্ভর করে, বাগগুলি একটি উল্লেখযোগ্য নেতিবাচক প্রভাব ফেলতে পারে — আর্থিকভাবে বা এমনকি মানুষের জীবনেও। +সাধারণত, অ্যাপ্লিকেশন কোড বিভিন্ন পর্যায় বা পরিবেশের মধ্য দিয়ে যেতে হয় যেখানে এটি পরীক্ষা করা হয়। +একটি অ্যাপ্লিকেশন যত বেশি সমালোচনামূলক, পরীক্ষাটি তত বেশি নির্ভুল হতে হবে। + +## এটা কিভাবে সাহায্য করে + +যখন বাগগুলি উপস্থিত হয়, তখন প্রকৌশলীদের উৎপাদন সিস্টেমের জন্য অবাঞ্ছিত আচরণ কমাতে অ্যাপটি ডিবাগ করতে হয় (যেমন, অনুসন্ধান এবং ঠিক করা)। +ডিবাগিং কোন সহজ কাজ নয় কারণ প্রকৌশলীদের অবাঞ্ছিত আচরণের উৎস খুঁজে বের করতে হবে। +এটির জন্য কোড নিজেই এবং রানটাইমে এক্সিকিউশন প্রসঙ্গ সম্পর্কে জ্ঞান প্রয়োজন। +এখানেই বিভিন্ন ডিবাগিং কৌশল এবং সরঞ্জামগুলি কাজে আসে৷ +লগ, ট্রেস এবং মেট্রিক্সের বিশ্লেষণ, উদাহরণস্বরূপ, সরাসরি উৎপাদনে ডিবাগ করার জন্য ব্যবহার করা হয়। +ডেভেলপাররা ইন্টারেক্টিভ ডিবাগিং ব্যবহার করে রানটাইমে কোডের মধ্য দিয়ে যেতে পারে যখন সম্পর্কিত এক্সিকিউশন প্রসঙ্গ বিশ্লেষণ করে। +একবার তারা ব্যর্থতার উৎস সনাক্ত করার পরে, তারা কোডটি সংশোধন করে এবং একটি বাগ ফিক্স বা প্যাচ তৈরি করে। \ No newline at end of file diff --git a/content/bn/devops.md b/content/bn/devops.md index 116de1a2c3..fbc917e659 100644 --- a/content/bn/devops.md +++ b/content/bn/devops.md @@ -2,15 +2,16 @@ title: ডেভওপস (DevOps) status: Completed category: ধারণা +tags: ["methodology", "", ""] --- ## এটা কি ডেভওপস হল একটি পদ্ধতি যেখানে দলগুলি অ্যাপ্লিকেশন ডেভেলপমেন্ট থেকে প্রোডাকশন অপারেশন পর্যন্ত সম্পূর্ণ প্রক্রিয়ার পরিচালনা করে থাকে। এটি সাধারণ প্রযুক্তি থেকে উচ্চ পর্যায় রয়েছে এবং সাধারণ ধরন থেকে আলাদা হয়। ডেভওপস প্রকৌশলীদের দলদের জন্য আহ্বান করে যারা ছোট উপাদানগুলিতে কাজ করে (একটি সম্পূর্ণ বৈশিষ্ট্যের বিপরীতে), হ্যান্ডঅফগুলি হ্রাস করে – যা সাধারণ ভুলের কারন। -## এটি যেই সমস্যাটি নির্দেশ করে +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে -ঐতিহ্যগতভাবে, জটিল সংস্থা [শক্তভাবে মিলিত](/tightly-coupled-architectures/) ও [মনোলিথিক অ্যাপস](/monolithic-apps/) এর কাজ সাধারণত একাধিক দলের মধ্যে খণ্ডিত ছিল । এটি অসংখ্য হ্যান্ডঅফ এবং দীর্ঘ পরবর্তী সময় নেয়। প্রতিবার যখনই একটি উপাদান বা আপডেট প্রস্তুত ছিল, এটি পরবর্তী দলের জন্য একটি সারিতে স্থাপন করা হয়েছিল। যেহেতু ব্যক্তিরা কেবলমাত্র প্রকল্পের একটি ছোট অংশে কাজ করেছিল, এই পদ্ধতির ফলে মালিকানার অভাব দেখা দেয়। তাদের লক্ষ্য ছিল পরবর্তী দলের কাছে কাজটি পৌঁছে দেওয়া, গ্রাহকের কাছে সঠিক কার্যকারিতা সরবরাহ না করা যাকে অগ্রাধিকারগুলির একটি স্পষ্ট বিভ্রান্তি হিসেবে বলা যায়। +ঐতিহ্যগতভাবে, জটিল সংস্থা [শক্তভাবে মিলিত(Tightly coupled architectures)](/bn/tightly-coupled-architectures/) ও [মনোলিথিক অ্যাপস(Monolithic apps)](/bn/monolithic-apps/) এর কাজ সাধারণত একাধিক দলের মধ্যে খণ্ডিত ছিল । এটি অসংখ্য হ্যান্ডঅফ এবং দীর্ঘ পরবর্তী সময় নেয়। প্রতিবার যখনই একটি উপাদান বা আপডেট প্রস্তুত ছিল, এটি পরবর্তী দলের জন্য একটি সারিতে স্থাপন করা হয়েছিল। যেহেতু ব্যক্তিরা কেবলমাত্র প্রকল্পের একটি ছোট অংশে কাজ করেছিল, এই পদ্ধতির ফলে মালিকানার অভাব দেখা দেয়। তাদের লক্ষ্য ছিল পরবর্তী দলের কাছে কাজটি পৌঁছে দেওয়া, গ্রাহকের কাছে সঠিক কার্যকারিতা সরবরাহ না করা যাকে অগ্রাধিকারগুলির একটি স্পষ্ট বিভ্রান্তি হিসেবে বলা যায়। কোডটি শেষ পর্যন্ত আসার সময় পর্যন্ত, এটি এত বেশি ডেভেলপারের মধ্য দিয়ে গিয়েছিল, এত সারিতে অপেক্ষা করেছিল যে কোডটি কাজ না করলে সমস্যার উৎস খুঁজে বের করা কঠিন ছিল। ডেভওপস এই পদ্ধতিকে উল্টো করে দেয়। diff --git a/content/bn/devsecops.md b/content/bn/devsecops.md new file mode 100644 index 0000000000..286f745958 --- /dev/null +++ b/content/bn/devsecops.md @@ -0,0 +1,26 @@ +--- +title: ডেভসেকঅপ্স (DevSecOps) +status: Completed +category: ধারণা +--- + + +## এটা কি + +ডেভসেকঅপ্স (DevSecOps) শব্দটি উন্নয়ন, কর্মক্ষম, এবং নিরাপত্তা দায়িত্বের সাংস্কৃতিক একীকরণকে বোঝায়। +এটি ডেভেলপার এবং অপারেশনাল ওয়ার্কফ্লোতে ন্যূনতম কোনও ব্যাঘাত না করে সুরক্ষা অগ্রাধিকারগুলি অন্তর্ভুক্ত করতে ডেভঅপ্স [(DevOps)](/bn/devops/) পদ্ধতির প্রসারিত করে৷ +ডেভঅপ্স-এর মতো, ডেভসেকঅপ্স হল একটি সাংস্কৃতিক পরিবর্তন, যা গৃহীত প্রযুক্তির দ্বারা ঠেলে দেওয়া হয়, অনন্য গ্রহণের পদ্ধতি সহ। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ডেভঅপ্স অনুশীলনের মধ্যে রয়েছে অবিচ্ছিন্ন একীকরণ [(continuous integration)](/bn/continuous-integration/) এবং +অবিচ্ছিন্ন স্থাপনা [(continuous deployment)](/continuous-delivery/) এবং অ্যাপ্লিকেশন বিকাশ এবং প্রকাশের চক্রকে ত্বরান্বিত করা। +দুর্ভাগ্যবশত, স্বয়ংক্রিয় রিলিজ প্রক্রিয়া যা সমস্ত সাংগঠনিক স্টেকহোল্ডারদের যথাযথভাবে প্রতিনিধিত্ব করতে ব্যর্থ হয় তা বিদ্যমান সমস্যাগুলিকে আরও বাড়িয়ে তুলতে পারে। +একটি প্রক্রিয়া যা নিরাপত্তার প্রয়োজন বিবেচনা না করে দ্রুত নতুন সফ্টওয়্যার প্রকাশ করে তা একটি প্রতিষ্ঠানের নিরাপত্তা ভঙ্গিকে অবনমিত করতে পারে। + +## এটা কিভাবে সাহায্য করে + +ডেভসেকঅপ্স টিম সাইলো (silos) ভাঙ্গার উপর ফোকাস করে এবং সুরক্ষিত, স্বয়ংক্রিয় ওয়ার্কফ্লো তৈরির প্রচার করে। +নিরাপত্তা অ্যাপ্লিকেশন নির্বাচন করার সময়, সংস্থাগুলিকে অবশ্যই স্বয়ংক্রিয় CI/CD কর্মপ্রবাহ এবং +নীতি প্রয়োগের সুবিধা নিতে হবে যা বিকাশকারীকে ক্ষমতায়ন করে।লক্ষ্যটি ব্লকার হওয়া নয় বরং ব্যবহারকারীদের কীভাবে তাদের প্রকল্পকে এগিয়ে নিয়ে যাওয়া যায় সে সম্পর্কে সঠিক তথ্য দেওয়ার সময় নিরাপত্তা নীতিগুলি প্রয়োগ করা। +সঠিকভাবে প্রয়োগ করা হলে, একটি সংস্থা আরও ভাল টিম যোগাযোগ লাভ করবে এবং নিরাপত্তা দুর্ঘটনা এবং সংশ্লিষ্ট খরচ কমিয়ে দেবে। diff --git a/content/bn/distributed-apps.md b/content/bn/distributed-apps.md new file mode 100644 index 0000000000..58acc50701 --- /dev/null +++ b/content/bn/distributed-apps.md @@ -0,0 +1,23 @@ +--- +title: বিতরিত অ্যাপ্লিকেশন (Distributed Apps) +status: Completed +category: ধারণা +--- + +## এটা কি + +একটি বিতরিত অ্যাপ্লিকেশন হল একটি অ্যাপ্লিকেশন যেখানে কার্যকারিতা একাধিক ছোট স্বাধীন অংশে বিভক্ত হয়। +বিতরিত অ্যাপ্লিকেশনগুলি সাধারণত পৃথক [মাইক্রোসার্ভিসগুলির](/bn/microservices-architecture/) সমন্বয়ে গঠিত হয় যা বিস্তৃত অ্যাপ্লিকেশনের মধ্যে বিভিন্ন উদ্বেগ পরিচালনা করে। +একটি ক্লাউড নেটিভ পরিবেশে, পৃথক উপাদানগুলি সাধারণত একটি [ক্লাস্টারে](/bn/cluster/) [পাত্র(container)](/bn/container/) হিসাবে চালিত হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +একটি একক কম্পিউটারে চলমান একটি অ্যাপ্লিকেশন ব্যর্থতার একক পয়েন্ট উপস্থাপন করে - যদি সেই কম্পিউটারটি ব্যর্থ হয়, অ্যাপ্লিকেশনটি অনুপলব্ধ হয়ে যায়। +বিতরিত অ্যাপ্লিকেশনগুলি প্রায়শই [মনোলিথিক অ্যাপ্লিকেশনের](/bn/monolithic-apps/) বিপরীতে থাকে। একটি মনোলিথিক অ্যাপ স্কেল করা কঠিন হতে পারে কারণ বিভিন্ন উপাদান স্বাধীনভাবে স্কেল করা যায় না। +তারা বৃদ্ধির সাথে সাথে ডেভেলপারএর গতিতেও টেনে আনতে পারে কারণ আরও ডেভেলপারদের একটি ভাগ করা কোডবেসে কাজ করতে হবে যার অগত্যা ভালভাবে সংজ্ঞায়িত সীমানা নেই। + +## এটা কিভাবে সাহায্য করে + +একটি অ্যাপ্লিকেশনকে বিভিন্ন অংশে বিভক্ত করার সময় এবং সেগুলিকে অনেক জায়গায় চালানোর সময়, সামগ্রিক সিস্টেম আরও ব্যর্থতা সহ্য করতে পারে। +এটি একটি অ্যাপ্লিকেশনকে একটি একক অ্যাপ্লিকেশন উদাহরণের জন্য উপলব্ধ নয় এমন স্কেলিং বৈশিষ্ট্যগুলির সুবিধা নিতে দেয়, যেমন [অনুভূমিকভাবে স্কেল](/bn/horizontal-scaling/) করার ক্ষমতা। +তবে এটি একটি খরচে আসে: জটিলতা বৃদ্ধি এবং অপারেশনাল ওভারহেড - আপনি এখন একটি অ্যাপের পরিবর্তে প্রচুর অ্যাপ্লিকেশন উপাদান চালাচ্ছেন। diff --git a/content/bn/distributed-systems.md b/content/bn/distributed-systems.md new file mode 100644 index 0000000000..064da9d532 --- /dev/null +++ b/content/bn/distributed-systems.md @@ -0,0 +1,30 @@ +--- +title: বিতরিত সিস্টেম (Distributed System) +status: Completed +category: ধারণা +--- + +## এটা কি + +একটি বিতরিত সিস্টেম হল একটি নেটওয়ার্কের সাথে সংযুক্ত স্বায়ত্তশাসিত কম্পিউটিং উপাদানগুলির একটি সংগ্রহ যা ব্যবহারকারীদের কাছে একটি একক সুসংগত সিস্টেম হিসাবে প্রদর্শিত হয়। +সাধারণত [নোড](/bn/nodes/) হিসাবে উল্লেখ করা হয়, এই উপাদানগুলি হার্ডওয়্যার ডিভাইস (যেমন কম্পিউটার, মোবাইল ফোন) বা সফ্টওয়্যার প্রক্রিয়া হতে পারে। +নোডগুলি একটি সাধারণ লক্ষ্য অর্জনের জন্য প্রোগ্রাম করা হয় এবং সহযোগিতা করার জন্য, তারা নেটওয়ার্কে বার্তা বিনিময় করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +অনেক আধুনিক অ্যাপ্লিকেশন আজ এত বড় যে তাদের পরিচালনা করার জন্য সুপার কম্পিউটারের প্রয়োজন হবে। +জিমেইল বা নেটফ্লিক্সের কথা ভাবুন। সম্পূর্ণ অ্যাপ্লিকেশন হোস্ট করার জন্য কোনো একক কম্পিউটার যথেষ্ট শক্তিশালী নয়। +একাধিক কম্পিউটার সংযোগ করে, গণনার শক্তি প্রায় সীমাহীন হয়ে যায়। ডিস্ট্রিবিউটেড কম্পিউটিং ছাড়া, আজকে আমরা অনেক অ্যাপ্লিকেশন উপর নির্ভরশীল হওয়া সম্ভব হবে না। + + +ঐতিহ্যগতভাবে, সিস্টেমগুলি উল্লম্বভাবে [স্কেল](/bn/scalability/) করবে। আপনি যখন একটি পৃথক মেশিনে আরও সিপিউ (CPU) বা মেমরি যোগ করেন তখনই। +উল্লম্ব স্কেলিং সময় সাপেক্ষ, ডাউনটাইম প্রয়োজন, এবং দ্রুত তার সীমাতে পৌঁছে যায়। + + +## এটা কিভাবে সাহায্য করে + +বিতরিত সিস্টেমগুলি [ অনুভূমিক স্কেলিং](/bn/horizontal-scaling/) করার অনুমতি দেয় (যেমন যখনই প্রয়োজন হয় সিস্টেমে আরও নোড যোগ করা) | +এটি স্বয়ংক্রিয়ভাবে একটি সিস্টেমকে কাজের চাপ বা সম্পদ খরচে হঠাৎ বৃদ্ধি পরিচালনা করার অনুমতি দেয়। + +একটি নন-ডিস্ট্রিবিউটেড সিস্টেম ব্যর্থতার ঝুঁকিতে নিজেকে প্রকাশ করে কারণ যদি একটি মেশিন ব্যর্থ হয়, পুরো সিস্টেম ব্যর্থ হয়। +একটি বিতরিত সিস্টেম এমনভাবে ডিজাইন করা যেতে পারে যে, এমনকি কিছু মেশিন নিচে গেলেও, সামগ্রিক সিস্টেম একই ফলাফল তৈরি করতে কাজ চালিয়ে যেতে পারে। diff --git a/content/bn/edge-computing.md b/content/bn/edge-computing.md new file mode 100644 index 0000000000..087c3f7ace --- /dev/null +++ b/content/bn/edge-computing.md @@ -0,0 +1,17 @@ +--- +title: এজ কম্পিউটিং (Edge Computing) +status: Completed +category: ধারণা +--- + +## এটা কি + +এজ কম্পিউটিং হল একটি [বিতরণ সিস্টেম](/bn/distributed-systems/) পদ্ধতি যা প্রাথমিক ডেটা সেন্টার থেকে ডেটা উৎসে কিছু স্টোরেজ এবং কম্পিউটিং ক্ষমতা স্থানান্তর করে। সংগৃহীত ডেটা স্থানীয়ভাবে গণনা করা হয় (যেমন, একটি কারখানার মেঝেতে,একটি দোকানে বা একটি শহর জুড়ে) প্রক্রিয়াকরণ (processing) এবং বিশ্লেষণের জন্য কেন্দ্রীভূত ডেটা সেন্টারে পাঠানোর পরিবর্তে। এই স্থানীয় প্রক্রিয়াকরণ ইউনিট বা ডিভাইসগুলি সিস্টেমের প্রান্তের (edge) প্রতিনিধিত্ব করে,যেখানে ডেটা সেন্টার হল এর কেন্দ্র। প্রান্তে গণনা করা আউটপুট পরবর্তী প্রক্রিয়াকরণের জন্য প্রাথমিক ডেটা সেন্টারে ফেরত পাঠানো হয়। এজ কম্পিউটিংয়ের উদাহরণগুলির মধ্যে রয়েছে হাতের কব্জির গ্যাজেট বা কম্পিউটার যা ট্র্যাফিক প্রবাহ বিশ্লেষণ করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +গত এক দশকে,আমরা এজ ডিভাইসের (যেমন,মোবাইল ফোন,স্মার্ট ঘড়ি বা সেন্সর) ক্রমবর্ধমান পরিমাণ দেখেছি। কিছু ক্ষেত্রে,রিয়েল-টাইম ডেটা প্রসেসিং শুধুমাত্র রুচিকর নয় গুরুত্বপূর্ণও। যেমন স্ব-চালিত গাড়ি। এখন কল্পনা করা যাক একটি গাড়ির সেন্সর থেকে ডেটা গাড়িতে ফেরত পাঠানোর আগে প্রক্রিয়াকরণের জন্য একটি ডেটা সেন্টারে স্থানান্তর করতে হবে যাতে এটি যথাযথভাবে প্রতিক্রিয়া করতে পারে। অন্তর্নিহিত নেটওয়ার্ক লেটেন্সি মারাত্মক হতে পারে। যদিও এটি একটি চরম উদাহরণ,বেশিরভাগ ব্যবহারকারী স্মার্ট ডিভাইস ব্যবহার করতে চান না কারণ এটি তাত্ক্ষণিক প্রতিক্রিয়া প্রদান করতে অক্ষম। + +## এটা কিভাবে সাহায্য করে + +উপরের বর্ণনা হিসাবে,এজ ডিভাইসগুলিকে প্রয়োজনে ব্যাবহার করতে হলে,ডিভাইসগুলিকে অবশ্যই অন্তত আংশিকভাবে প্রক্রিয়াকরণ এবং স্থানীয় বিশ্লেষণ করতে হবে ব্যবহারকারীদের কাছে রিয়েল-টাইম প্রতিক্রিয়া প্রদানের জন্য। ডেটা সেন্টার থেকে যেখানে ডেটা উৎপন্ন হয় সেখানে কিছু স্টোরেজ এবং প্রসেসিং রিসোর্স স্থানান্তর করে এটি অর্জন করা হয়: এজ ডিভাইস। প্রক্রিয়াজাত এবং অপ্রক্রিয়াজাত ডেটা পরবর্তীতে আরও প্রক্রিয়াকরণ এবং স্টোরেজের জন্য ডেটা সেন্টারে পাঠানো হয়। সংক্ষেপে,দক্ষতা এবং গতি হলো এজ কম্পিউটিং এর প্রাথমিক উপাদান। diff --git a/content/bn/event-driven-architecture.md b/content/bn/event-driven-architecture.md new file mode 100644 index 0000000000..505b40d31f --- /dev/null +++ b/content/bn/event-driven-architecture.md @@ -0,0 +1,26 @@ +--- +title: ঘটনা-চালিত স্থাপত্য (Event-Driven Architecture) +status: Completed +category: ধারণা +tags: ["architecture", "", ""] +--- + +## এটা কি + +ঘটনা চালিত স্থাপত্য হল একটি সফ্টওয়্যার স্থাপত্য যা ঘটনা তৈরি, প্রক্রিয়াকরণ এবং ব্যবহারকে প্রচার করে। +একটি ঘটনা হল একটি অ্যাপ্লিকেশনের অবস্থার পরিবর্তন। +উদাহরণস্বরূপ, একটি রাইড-শেয়ারিং অ্যাপে রাইডের প্রশংসা করা একটি ঘটনার প্রতিনিধিত্ব করে৷ +এই স্থাপত্যটি এমন কাঠামো তৈরি করে যেখানে ঘটনাগুলো তাদের উৎস থেকে (অ্যাপটি একটি রাইডের অনুরোধ করে) থেকে পছন্দসই রিসিভারগুলিতে (আশেপাশে উপলব্ধ ড্রাইভারদের অ্যাপগুলি) সঠিকভাবে রুট করা যেতে পারে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +তথ্য যত বেশি বাস্তব সম্মত হয়, ঘটনাগুলো ক্যাপচার করা এবং উপযুক্ত [সার্ভিস](/bn/service/) যা ঘটনার অনুরোধগুলি প্রক্রিয়া করে, তা নিশ্চিত করার জন্য নির্ভরযোগ্য উপায়গুলি খুঁজে পাওয়া ততবেশি চ্যালেঞ্জিং হয়ে উঠে। +ঘটনাগুলো পরিচালনার ঐতিহ্যগত পদ্ধতিগুলিতে প্রায়শই বার্তাগুলি যথাযথভাবে রুট করা হয়েছে বা প্রকৃতপক্ষে পাঠানো বা গ্রহণ করা হয়েছে তার গ্যারান্টি দেওয়ার কোন উপায় নেই। +অ্যাপ্লিকেশনগুলি স্কেল করা শুরু করার সাথে সাথে ঘটনাগুলো সাজানো আরও চ্যালেঞ্জিং হয়ে ওঠে৷ + +## এটা কিভাবে সাহায্য করে + +ঘটনা-চালিত আর্কিটেকচারগুলি সমস্ত ঘটনার জন্য একটি কেন্দ্রীয় কেন্দ্র স্থাপন করে (যেমন, Kafka)। +তারপরে আপনি ঘটনা প্রযোজক (উৎস) এবং ভোক্তা (গ্রহীতা) সংজ্ঞায়িত করেন এবং কেন্দ্রীয় ঘটনা হাব ঘটনার প্রবাহের নিশ্চয়তা দেয়। +এই স্থাপত্যটি নিশ্চিত করে যে পরিষেবাগুলি দ্বৈত থাকে এবং ঘটনাগুলো সঠিকভাবে প্রযোজক থেকে ভোক্তার কাছে পাঠানো হয়। +প্রযোজক অভিমুখী ঘটনা নেবেন, সাধারণত HTTP প্রোটোকল দ্বারা, তারপর ঘটনার তথ্য রুট করে। diff --git a/content/bn/event-streaming.md b/content/bn/event-streaming.md new file mode 100644 index 0000000000..861fc9689f --- /dev/null +++ b/content/bn/event-streaming.md @@ -0,0 +1,31 @@ +--- +title: ঘটনা প্রবাহ ( Event Streaming ) +status: Completed +category: ধারণা +tags: ["methodology", "networking", ""] +--- + +## এটা কি + +ঘটনা প্রবাহ হল এমন একটি পদ্ধতি যেখানে সফ্টওয়্যার একটি অ্যাপ্লিকেশন থেকে অন্য অ্যাপ্লিকেশনে ঘটনার তথ্য পাঠায় যাতে তারা কী করছে তা অবিরতভাবে যোগাযোগ করতে পারে। +অন্য সমস্ত পরিষেবাতে যা করে তা সম্প্রচার করে এমন একটি পরিষেবার চিত্র নিন৷ +একটি পরিষেবা দ্বারা নেওয়া প্রতিটি কার্যকলাপকে একটি ঘটনা হিসাবে উল্লেখ করা হয়, তাই ঘটনা প্রবাহ। +উদাহরণস্বরূপ, NASDAQ প্রতি সেকেন্ডে স্টক এবং পণ্যের মূল্যের আপডেট পায়। +আপনার যদি এমন একটি অ্যাপ্লিকেশন থাকে যা স্টকের একটি নির্দিষ্ট সেট নিরীক্ষণ করে, আপনি সেই তথ্যটি কাছাকাছি বর্তমান-সময়ে পেতে চাইবেন। +ফাইন্যান্স একটি [API](/bn/application-programming-interface/) প্রদান করে যা NASDAQ থেকে টেনে নেয় এবং তাদের অ্যাপ্লিকেশন থেকে তথ্য (বা ঘটনা) পাঠায় (বা প্রবাহ) যেকোন অ্যাপ্লিকেশনে যার সদস্যতা নেয়। +যে তথ্য পাঠানো হচ্ছে সেই সাথে সেই তথ্যের পরিবর্তনগুলি (স্টকের দাম) ঘটনাগুলো যখন একটি অ্যাপ্লিকেশনে সেগুলি বিতরণ করে সেই প্রক্রিয়াটি ঘটনা প্রবাহ। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ঐতিহ্যগতভাবে, ফাইন্যান্স একক TCP অনুরোধ ব্যবহার করবে। +এটি খুবই অকার্যকর হবে কারণ এটি প্রতিটি ইভেন্টের জন্য একটি সংযোগ তৈরি করতে হয়৷ +তথ্য প্রকৃপক্ষে যত বাস্তব-সম্মত হয়ে উঠে, এই জাতীয় সমাধানকে স্কেল করা অকার্যকর হয়ে পড়ে। +একবার সংযোগ খোলা এবং ঘটনাগুলোকে প্রবাহিত করার অনুমতি দেওয়া বাস্তব-সময়ে সংগ্রহের জন্য আদর্শ। +উৎপন্ন তথ্যের পরিমাণ দ্রুতগতিতে বৃদ্ধি পাচ্ছে এবং সেই সাথে তথ্যের অবস্থা ক্রমাগত প্রবাহিত হচ্ছে। ডেভেলপার এবং ব্যবহারকারীদের কাছে বর্তমান-সময়ে সেই তথ্য দেখতে সক্ষম হতে হবে। + +## এটা কিভাবে সাহায্য করে + +ঘটনা প্রবাহ তথ্য পরিবর্তনগুলিকে উৎস থেকে রিসিভারে যোগাযোগ করার অনুমতি দেয়। +তথ্যের অনুরোধ করার জন্য পরিষেবাগুলির অপেক্ষা করার পরিবর্তে, পরিষেবাটি তার সমস্ত ঘটনা (বা কার্যকলাপ) ক্রমাগত প্রবাহিত করে। +এক্ষেত্রে এটি তথ্যের কি হবে তা নিয়ে উদ্বিগ্ন নয়। +এটি কেবল যা করতে হবে তা করে এবং এটি সম্প্রচার করে, এইভাবে অন্য যেকোনও পরিষেবা থেকে সম্পূর্ণ স্বাধীন থাকে। diff --git a/content/bn/firewall.md b/content/bn/firewall.md new file mode 100644 index 0000000000..d43839a012 --- /dev/null +++ b/content/bn/firewall.md @@ -0,0 +1,27 @@ +--- +title: ফায়ারওয়াল (Firewall) +status: Deprecated +draft: true +category: প্রযুক্তি +tags: ["", "", ""] +--- + +## এটা কি + +ফায়ারওয়াল হল এমন একটি সিস্টেম যা নির্দিষ্ট নিয়মের ভিত্তিতে নেটওয়ার্ক ট্র্যাফিক ফিল্টার করে। +ফায়ারওয়ালগুলি হার্ডওয়্যার, সফ্টওয়্যার বা দুটির সংমিশ্রণ হতে পারে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ডিফল্টরূপে, একটি নেটওয়ার্ক যে কাউকে প্রবেশ এবং প্রস্থান করার অনুমতি দেবে যতক্ষণ তারা নেটওয়ার্কের রাউটিং নিয়ম অনুসরণ করে। +এই ডিফল্ট আচরণের কারণে, একটি নেটওয়ার্ক সুরক্ষিত করা চ্যালেঞ্জিং। +যেমন, [মাইক্রোসার্ভিস(microservices)](/bn/microservices-architecture/) ভিত্তিক একটি ব্যাংকিং অ্যাপ্লিকেশনে, সেখানে সেবাগুলি একে অন্যকে নেটওয়ার্কের মাধ্যমে বিশেষভাবে সংযোগ করে, যাতে অত্যন্ত সংযুক্তিসম্পন্ন আর্থিক তথ্য পাঠানো হয়। +একটি ক্ষতিকারক কর্মী নেটওয়ার্কে অনুপ্রবেশ করতে পারে, যোগাযোগে বাধা দিতে পারে এবং ফায়ারওয়াল না থাকলে ক্ষতি করতে পারে। + + +## এটা কিভাবে সাহায্য করে + +একটি ফায়ারওয়াল পূর্ব-নির্ধারিত নিয়ম ব্যবহার করে নেটওয়ার্ক ট্র্যাফিক পরীক্ষা করে। +সমস্ত ট্র্যাফিক ফিল্টার করা হয়েছে, এবং অবিশ্বস্ত বা সন্দেহজনক উৎস থেকে আসা যে কোনও ট্র্যাফিক ব্লক করা হয়েছে৷ +— শুধুমাত্র গৃহীত হওয়ার জন্য কনফিগার করা ট্রাফিক প্রবেশ করে। +ফায়ারওয়াল সুরক্ষিত এবং নিয়ন্ত্রিত অভ্যন্তরীণ বিশ্বস্ত নেটওয়ার্কগুলির মধ্যে একটি বাধা স্থাপন করে। diff --git a/content/bn/function-as-a-service.md b/content/bn/function-as-a-service.md new file mode 100644 index 0000000000..e075838139 --- /dev/null +++ b/content/bn/function-as-a-service.md @@ -0,0 +1,39 @@ +--- +title: ফাংশন-এজ়-এ-সার্ভিস (Function as a Service) (FaaS) +status: Completed +category: প্রযুক্তিবিদ্যা +tags: ["infrastructure", "", ""] +--- + +## এটা কি + +ফাংশন-এজ়-এ-সার্ভিস +একটি পরিষেবা হিসাবে ফাংশন (FaaS) হল এক প্রকার [সার্ভারলেস](/bn/serverless/) [ক্লাউড কম্পিউটিং](/bn/cloud-computing/) [সর্বিস](/bn/service/) +যা ইভেন্টের প্রতিক্রিয়ায় কোড চালানোর অনুমতি দেয় +জটিল অবকাঠামো বজায় না রেখে +সাধারণত [মাইক্রোসার্ভিসেস](/bn/microservices-architecture/) অ্যাপ্লিকেশন তৈরি এবং চালু করার সাথে যুক্ত। +FaaS এর সাথে, ব্যবহারকারীরা শুধুমাত্র ফাংশন এবং ডেটা পরিচালনা করে যখন ক্লাউড প্রদানকারী অ্যাপ্লিকেশন পরিচালনা করে। +এটি ডেভেলপারদের কোড চালু না থাকলে পরিষেবার জন্য অর্থ প্রদান না করে তাদের প্রয়োজনীয় ফাংশনগুলি পেতে অনুমতি দেয়। +কিছু জনপ্রিয় FaaS উদাহরণের মধ্যে রয়েছে: [Amazon's AWS Lambda](https://aws.amazon.com/lambda/), +[Google Cloud Functions](https://cloud.google.com/functions/) এবং [Microsoft Azure Functions](https://azure.microsoft.com/en-us/services/functions/)। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +একটি ঐতিহ্যগত অন-প্রাঙ্গনে দৃশ্যকল্পে, একটি ব্যবসা তার নিজস্ব ডেটা সেন্টার পরিচালনা করে এবং রক্ষণাবেক্ষণ করে। +ব্যবসার অবশ্যই সার্ভার, স্টোরেজ, সফ্টওয়্যার এবং অন্যান্য প্রযুক্তিতে বিনিয়োগ করতে হবে +এবং সম্ভাব্যভাবে সমস্ত সরঞ্জাম এবং লাইসেন্স ক্রয়, পরিচালনা এবং আপগ্রেড করার জন্য একজন IT কর্মী বা ঠিকাদার নিয়োগ করুন। +কাজের চাপ কমে গেলে এবং সেই সংস্থানগুলি নিষ্ক্রিয় থাকা সত্ত্বেও সর্বোচ্চ চাহিদা মেটাতে ডেটা সেন্টার তৈরি করতে হবে। +বিপরীতভাবে, যদি ব্যবসা দ্রুত বৃদ্ধি পায়, তাহলে আইটি বিভাগটি চালিয়ে যেতে সংগ্রাম করতে পারে। +একটি স্ট্যান্ডার্ড [Infrastructure-as-a-Service (IaaS)](/bn/infrastructure-as-a-service/) ক্লাউড কম্পিউটিং মডেলের অধীনে, +ব্যবহারকারীরা প্রাক-ক্রয় ক্ষমতা ইউনিট, যার অর্থ আপনি আপনার অ্যাপগুলি চালানোর জন্য সর্বদা-অন সার্ভার উপাদানগুলির জন্য একটি সর্বজনীন ক্লাউড প্রদানকারীকে অর্থ প্রদান করেন। +উচ্চ চাহিদার সময়ে সার্ভারের ক্ষমতা বাড়ানোর দায়িত্ব ব্যবহারকারীর +এবং যখন সেই ক্ষমতা আর প্রয়োজন হয় না তখন স্কেল করুন। +একটি অ্যাপ চালানোর জন্য প্রয়োজনীয় ক্লাউড অবকাঠামো সক্রিয় থাকে এমনকি যখন অ্যাপটি ব্যবহার করা হচ্ছে না। + +## এটা কিভাবে সাহায্য করে + +FaaS সার্ভার পরিচালনা না করে ইভেন্টের প্রতিক্রিয়া হিসাবে ওয়েব অ্যাপ্লিকেশন চালানোর জন্য বিকাশকারীদের একটি [বিমূর্ততা](/bn/abstraction/) দেয়। +উদাহরণস্বরূপ, একটি ফাইল আপলোড করা কাস্টম কোড ট্রিগার করতে পারে যা ফাইলটিকে বিভিন্ন ফর্ম্যাটে ট্রান্সকোড করে। +FaaS পরিকাঠামো ভারী ব্যবহারের জন্য কোড স্বয়ংক্রিয়ভাবে স্কেল করবে, +এবং ডেভেলপারকে [স্ক্যালেবিলিটি](/bn/scalability/) এর জন্য কোড তৈরি করতে কোনো সময় বা সংস্থান ব্যয় করতে হবে না। +বিলিং শুধুমাত্র গণনা সময়ের উপর ভিত্তি করে করা হয়, যার অর্থ ব্যবসায়িকদের অর্থ প্রদান করতে হবে না যখন ফাংশনগুলি ব্যবহার করা হয় না। diff --git a/content/bn/gitops.md b/content/bn/gitops.md new file mode 100644 index 0000000000..f6adaee5f6 --- /dev/null +++ b/content/bn/gitops.md @@ -0,0 +1,18 @@ +--- +title: গিটঅপস (GitOps) +status: Feedback Appreciated +category: ধারণা +tags: ["methodology", "", ""] +--- + +## এটা কি + +গিটঅপস (GitOps) হল [শেয়ার করা নীতির (shared principles)](https://opengitops.dev/) উপর ভিত্তি করে সর্বোত্তম অনুশীলনের একটি সেট, যা একটি ওয়ার্কফ্লোতে প্রয়োগ করা হয় যা সফ্টওয়্যার এজেন্টের উপর নির্ভর করে যা একটি গিট রিপোজিটরিতে ঘোষিত সিস্টেমের (declared system) অবস্থা বা কনফিগারেশনের পুনর্মিলন (reconcile) করতে স্বয়ংক্রিয়করণে সক্ষম করে। এই সফ্টওয়্যার এজেন্ট এবং অনুশীলনগুলি একটি সমন্বিত কর্মপ্রবাহ (cohesive workflow) চালানোর জন্য ব্যবহৃত হয় যা গিট-এর মতো একটি সোর্স কন্ট্রোল ব্যবস্থাকে "সত্যের একক উৎস" হিসাবে ব্যবহার করে এবং এই অনুশীলনটিকে অ্যাপ্লিকেশন, অবকাঠামো এবং অপারেশনাল পদ্ধতিতে প্রসারিত করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +অবকাঠামো কনফিগারেশন পরিচালনার জন্য বিদ্যমান প্রক্রিয়াগুলি কনফিগারেশন ড্রিফ্ট, ব্যর্থ বিস্তার (failed deployments), সাফল্যের জন্য সিস্টেমের পূর্ববর্তী অবস্থার উপর নির্ভর করা, ডকুমেন্টেশন হারিয়ে যাওয়া, অথবা অজানা উন্নয়ন ইতিহাসের (unknown development history) মতো চ্যালেঞ্জগুলির মুখোমুখি হতে পারে। একটি গিটঅপস (GitOps) ওয়ার্কফ্লো গ্রহণ এই সমস্যাগুলি উপশম করতে সাহায্য করতে পারে, অন্য আরও অনেক সমস্যাগুলোর মধ্যে। + +## এটা কিভাবে সাহায্য করে + +GitOps একটি দৃষ্টান্ত যা একটি অ্যাপ্লিকেশন এবং ক্লাউড সিস্টেম অবকাঠামো পরিচালনা করতে সাহায্য করার জন্য একটি কর্মপ্রবাহে প্রয়োগ করা যেতে পারে। এটি সংস্থাগুলিকে বিভিন্ন সুবিধা প্রদান করে যেমন উন্নত সমন্বয়, স্বচ্ছতা, স্থিতিশীলতা, এবং একটি সিস্টেমের নির্ভরযোগ্যতা। একটি ক্লোজ লুপে ক্রিয়াকলাপ নিশ্চিত করে যে একটি সিস্টেমের বর্তমান লাইভ স্টেটটি গিট রিপোজিটরিতে নির্দিষ্ট করা কাঙ্ক্ষিত টার্গেট স্টেটের সাথে মেলে। \ No newline at end of file diff --git a/content/bn/horizontal-scaling.md b/content/bn/horizontal-scaling.md new file mode 100644 index 0000000000..68adef9108 --- /dev/null +++ b/content/bn/horizontal-scaling.md @@ -0,0 +1,39 @@ +--- +title: অনুভূমিক স্কেলিং (Horizontal Scaling) +status: Completed +category: ধারণা +tags: ["infrastructure", "", ""] +--- + +## এটা কি + +অনুভূমিক স্কেলিং হল এমন একটি কৌশল যেখানে আরও [নোড](/bn/nodes/) যোগ করে একটি সিস্টেমের ক্ষমতা বৃদ্ধি করা হয়। +স্বতন্ত্র নোডগুলিতে আরও গণনা সংস্থান যোগ করার বিপরীতে (পরবর্তীটি [উল্লম্ব স্কেলিং](/bn/vertical-scaling/) নামে পরিচিত)। +ধরা যাক, আমাদের 4GB RAM এর একটি সিস্টেম আছে এবং এর ক্ষমতা 16GB RAM-তে বাড়াতে চাই, +এটিকে অনুভূমিকভাবে স্কেল করার অর্থ হল 16GB RAM সিস্টেমে স্যুইচ করার পরিবর্তে 4 x 4GB RAM যোগ করে তা করা। + +এই পদ্ধতিটি নতুন দৃষ্টান্ত, বা [নোড](/bn/nodes/), যোগ করে একটি অ্যাপ্লিকেশনের কর্মক্ষমতা বাড়ায় +কাজের চাপ ভালভাবে বিতরণ করতে। +সহজ কথায়, এর লক্ষ্য সার্ভারের লোড কমানো +ব্যক্তিগত সার্ভারের ক্ষমতা প্রসারিত করার পরিবর্তে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +যেহেতু একটি অ্যাপ্লিকেশনের চাহিদা সেই অ্যাপ্লিকেশন উদাহরণের বর্তমান ক্ষমতার বাইরে বেড়ে যায়, +আমাদের সিস্টেমে [মাপযোগ্যতা](/bn/scalability/) (এ ক্ষমতা যোগ করার) উপায় খুঁজে বের করতে হবে। +আমরা হয় সিস্টেমে আরও নোড যোগ করতে পারি (অনুভূমিক পরিমাপ) +বা বিদ্যমান নোডগুলিতে আরও গণনা সংস্থান (উল্লম্ব পরিমাপে)। + +## এটা কিভাবে সাহায্য করে + +অনুভূমিক পরিমাপ অ্যাপ্লিকেশনগুলিকে অন্তর্নিহিত ক্লাস্টার সরবরাহ করে যা সীমাবদ্ধ করে তা স্কেল করার অনুমতি দেয়। +সিস্টেমে আরও দৃষ্টান্ত যোগ করে, অ্যাপটি আরও বেশি সংখ্যক অনুরোধ প্রক্রিয়া করতে পারে। +যদি একটি একক নোড প্রতি সেকেন্ডে 1,000টি অনুরোধ পরিচালনা করতে পারে, +প্রতিটি অতিরিক্ত নোড প্রতি সেকেন্ডে প্রায় 1,000 অনুরোধ দ্বারা অনুরোধের মোট সংখ্যা বৃদ্ধি করা উচিত। +এটি অ্যাপ্লিকেশনটিকে একসাথে আরও কাজ করতে দেয় +বিশেষ করে কোনো নোডের ক্ষমতা বাড়ানোর প্রয়োজন ছাড়াই। + +## সম্পর্কিত পদ + +* [উল্লম্ব স্কেলিং](/bn/vertical-scaling/) +* [অটোস্কেলিং](/bn/auto-scaling/) diff --git a/content/bn/hypervisor.md b/content/bn/hypervisor.md new file mode 100644 index 0000000000..575ce08cef --- /dev/null +++ b/content/bn/hypervisor.md @@ -0,0 +1,25 @@ +--- +title: হাইপারভাইজার (Hypervisor) +status: Feedback Appreciated +category: প্রযুক্তি +tags: ["application", "", ""] +--- + +## এটা কি + +একটি হাইপারভাইজার [বেয়ার মেটাল মেশিন (bare metal machine)](/bn/bare-metal-machine/) সম্পদ (সিপিইউ (CPU), স্মৃতি (Memory), অন্তর্জাল (Network) এবং সঞ্চয়স্থান (Storage)) এর সুবিধা গ্রহণ করে [ভার্চুয়ালাইজেশন (virtualization)](/bn/virtualization/) সক্ষম করে, সেগুলিকে উপ-অংশে ভাগ করে এবং অন্তর্নিহিত হোস্ট (host) তার কর্মক্ষমতা সীমাতে না পৌঁছা পর্যন্ত [ভার্চুয়াল মেশিন (Virtual Machine (VM))](/bn/virtual-machine/) তৈরি করার জন্য সেই অনুযায়ী সংস্থান বরাদ্দ করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ঐতিহ্যগতভাবে, একটি সার্ভার শুধুমাত্র একটি একক অপারেটিং সিস্টেমের (operating system) অ্যাপ্লিকেশন (applications) চালাতে পারে। +সফ্টওয়্যার (software) অর্জনের প্রক্রিয়াটি সময় নেয়। এটি পরিচালনা এবং পর্যবেক্ষণ করার জন্য একটি নির্দিষ্ট পরিবেশ এবং প্রকৌশলীদের একটি দল সহ অবকাঠামো প্রয়োজন। +সাসার্ভারগুলি কম ব্যবহার করা হয়েছিল, একটি সার্ভারের কম্পিউটিং শক্তি বিবেচনা করে এটি একাধিক অপারেটিং সিস্টেম এবং আরো অ্যাপ্লিকেশন চালাতে পারে। +ট্রাফিকর ওঠানামার চাহিদা মেটানোর জন্য বেয়ার মেটালে (bare metal) অ্যাপ্লিকেশন চালানো যথেষ্ট ছিল না। + +## এটা কিভাবে সাহায্য করে + +[ক্লাউড কম্পিউটিং (cloud computing)](/bn/cloud-computing/) এর প্রেক্ষাপটে হাইপারভাইজার (hypervisor) একটি কার্যকরী হাতিয়ার হয়ে ওঠে। +একটি ভার্চুয়াল মেশিন (virtual machine) তৈরির ঐতিহ্যগত পদ্ধতির বিপরীতে, একটি হাইপারভাইজার (hypervisor) প্রক্রিয়াটিকে অনেক সহজ এবং দ্রুত করে তোলে। +হার্ডওয়্যার (hardware) সম্পদগুলি এবং তাদের স্বতন্ত্র একক হিসাবে বিচ্ছিন্ন রেখে VM-এ বরাদ্দ করা হয়, নিশ্চিত করে যে তারা স্বাধীনভাবে কাজ করে যাতে একটির সমস্যা অন্যদের প্রভাবিত না করে এবং VM-কে যেকোন প্রয়োজনীয় অপারেটিং সিস্টেম (operating system) ইনস্টল করার অনুমতি দেয়। +একটি হাইপারভাইজার হল শারীরিক হার্ডওয়্যারের (hardware) উপর একটি বিমূর্ততা, এটি VM গুলি পরিচালনা এবং তাদের নিরীক্ষণের নিম্ন-স্তরের জটিলতার যত্ন নেয়, VMগুলিকে হার্ডওয়্যারের (hardware) সাথে আবদ্ধ করে, সংস্থাগুলিকে তাদের অ্যাপ্লিকেশনগুলিকে (applications) দূরবর্তী সার্ভার/ক্লাউডে (servers/cloud) স্থানান্তর করতে সক্ষম করে এবং তাদের পরিষেবাগুলি অটোস্কেল (autoscale) করে। +সময়ের সাথে সাথে, এই [মাল্টি-টেন্যান্ট (multi-tenant)](/bn/multi-tenant/) সফ্টওয়্যার (software) ব্যবহারের কম্পিউটিং (computing) খরচ কমিয়েছে। diff --git a/content/bn/idempotence.md b/content/bn/idempotence.md new file mode 100644 index 0000000000..5ff8b33d23 --- /dev/null +++ b/content/bn/idempotence.md @@ -0,0 +1,10 @@ +--- +title: অক্ষমতা (Idempotence) +status: Completed +category: সম্পত্তি +tags: ["property", "", ""] +--- + +গণিত বা কম্পিউটার বিজ্ঞানে, অক্ষমতা এমন একটি প্রক্রিয়াকে বর্ণনা করে যা সর্বদা একই ফলাফলের দিকে নিয়ে যায়, +এটি যতবার করা হোক না কেন। +যদি পরামিতিক মানগুলি একই হয়, তাহলে একটি অক্ষম ক্রিয়াকলাপকে যে অ্যাপ্লিকেশনটিকে কল করে তাকে প্রভাবিত করবে না। diff --git a/content/bn/immutable-infrastructure.md b/content/bn/immutable-infrastructure.md new file mode 100644 index 0000000000..fda630e401 --- /dev/null +++ b/content/bn/immutable-infrastructure.md @@ -0,0 +1,25 @@ +--- +title: অপরিবর্তনীয় পরিকাঠামো (Immutable Infrastructure) +status: Completed +category: সম্পত্তি +tags: ["infrastructure", "property", ""] +--- + +অপরিবর্তনীয় অবকাঠামো বলতে কম্পিউটার অবকাঠামো বোঝায় +([ভার্চুয়াল মেশিন](/bn/virtual-machine/), [ধারক](/bn/container/), নেটওয়ার্ক যন্ত্রপাতি) +যে একবার স্থাপন করা পরিবর্তন করা যাবে না. +এটি একটি স্বয়ংক্রিয় প্রক্রিয়া দ্বারা প্রয়োগ করা যেতে পারে যা অননুমোদিত পরিবর্তনগুলিকে ওভাররাইট করে বা +একটি সিস্টেমের মাধ্যমে যা প্রথম স্থানে পরিবর্তনের অনুমতি দেবে না। +কনটেইনারগুলি অপরিবর্তনীয় অবকাঠামোর একটি ভাল উদাহরণ +কারণ পাত্রে ক্রমাগত পরিবর্তন শুধুমাত্র দ্বারা করা যেতে পারে +ধারকটির একটি নতুন সংস্করণ তৈরি করা বা এর চিত্র থেকে বিদ্যমান ধারকটিকে পুনরায় তৈরি করা। + +অননুমোদিত পরিবর্তন প্রতিরোধ বা চিহ্নিত করে, +অপরিবর্তনীয় অবকাঠামো নিরাপত্তা ঝুঁকি শনাক্ত করা এবং কমানো সহজ করে তোলে। +এই ধরনের একটি সিস্টেম অপারেটিং অনেক বেশি সোজা হয়ে যায় +কারণ প্রশাসকরা এটি সম্পর্কে অনুমান করতে পারেন। +সর্বোপরি, তারা জানে যে কেউ ভুল বা পরিবর্তন করেনি তারা যোগাযোগ করতে ভুলে গেছে। +অপরিবর্তনীয় অবকাঠামো [কোড হিসাবে পরিকাঠামো](/bn/infrastructure-as-code/) এর সাথে হাত মিলিয়ে যায় +যেখানে অবকাঠামো তৈরির জন্য প্রয়োজনীয় সমস্ত অটোমেশন সংস্করণ নিয়ন্ত্রণে সংরক্ষণ করা হয় (যেমন গিট)। +অপরিবর্তনীয়তা এবং সংস্করণ নিয়ন্ত্রণের এই সংমিশ্রণটি বোঝায় +একটি সিস্টেমে প্রতিটি অনুমোদিত পরিবর্তনের একটি টেকসই অডিট লগ আছে। diff --git a/content/bn/infrastructure-as-a-service.md b/content/bn/infrastructure-as-a-service.md new file mode 100644 index 0000000000..306d6688aa --- /dev/null +++ b/content/bn/infrastructure-as-a-service.md @@ -0,0 +1,23 @@ +--- +title: পরিষেবা হিসেবে পরিকাঠামো (Infrastructure as a service) +status: Completed +category: ধারণা +tags: ["infrastructure", "", ""] +--- + + +## এটা কি + +পরিষেবা হিসেবে পরিকাঠামো অথবা IaaS হল একটি [ক্লাউড কম্পিউটিং](/bn/cloud-computing/) পরিষেবার আদল যেটি Pay as you go এর আদলে [ফিজিক্যাল](/bn/bare-metal-machine/) অথবা [ভার্চুয়ালাইজড](/bn/virtualization/) কম্পিউট, স্টোরেজ এবং প্রয়োজনে নেটওয়ার্ক রিসোর্স প্রদান করে। ক্লাউড প্রদানকারীরা হার্ডওয়্যার এবং সফটওয়্যার এর মালিক হন এবং পরিচালনা করেন যা গ্রাহকদের জন্য সরকারি ,ব্যক্তিগত কিংবা হাইব্রিড ক্লাউড স্থাপনায় উপলব্ধ। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +প্রথাগতভাবে সংস্থাগুলি প্রায়ই কার্যকর কম্পিউটিং সংস্থানের সংকুলান নিয়ে সমস্যায় পড়ে | এমনকি যদি এটি শুধুমাত্র 1% সময়ের জন্য প্রয়োজন হয় তবে সম্ভাব্য সর্বোচ্চ চাহিদার জন্য তথ্য কেন্দ্র তৈরি করতে হবে | কম চাহিদার সময় এই গণনা সংস্থাগুলি নিষ্ক্রিয় থাকে এবং যদি কাজের চাপ প্রত্যাশিত চাপেও ছাড়িয়ে যায় সেই কাজের চাপ প্রক্রিয়া করার জন্য কম্পিউটিং সংস্থানগুলির অভাব রয়েছে | স্কেলেবিলিটির এই অভাবের ফলে খরচ বেড়ে যায় এবং সম্পদের অপ্রয়োজনীয় ব্যবহার হয়। + + + +## এটা কিভাবে সাহায্য করে + +IaaS এর সাহায্যে সংস্থাগুলি তাদের অ্যাপ্লিকেশন এর জন্য কম্পিউট এবং ডাটা সেন্টার স্পেস ক্রয় এবং রক্ষণাবেক্ষণ এড়াতে পারে। প্রয়োজন ভিত্তিক কাঠামো তাদের বৃদ্ধি বা হ্রাসের নমনীয়তা দেওয়ার পাশাপাশি প্রয়োজন অনুযায়ী কম্পিউট রিসোর্স ভাড়া নিতে এবং বড় মূলধন ব্যয়, বা [CAPEX](https://en.wikipedia.org/wiki/Capital_expenditure) পিছিয়ে দিতে অনুমতি দেয়। + +IaaS গবেষণা অথবা নতুন অ্যাপ্লিকেশনের খরচ কমিয়ে আনে এবং দ্রুত পরিকাঠামো উন্নয়নের সুবিধা দেয় | একটি ক্লাউড প্রদানকারী development বা পরীক্ষার পরিবেশের জন্য একটি চমৎকার বিকল্প, যা Developer দের পরীক্ষা এবং উদ্ভাবনে সহায়তা করে। diff --git a/content/bn/infrastructure-as-code.md b/content/bn/infrastructure-as-code.md new file mode 100644 index 0000000000..241a957ace --- /dev/null +++ b/content/bn/infrastructure-as-code.md @@ -0,0 +1,18 @@ +--- +title: কোড হিসেবে পরিকাঠামো (Infrastructure as Code) +status: Completed +category: ধারণা +tags: ["infrastructure", "methodology", ""] +--- + +## এটা কি + +কোড হিসেবে পরিকাঠামো হল, অবকাঠামোর সংজ্ঞা এক বা একধিক ফাইল হিসেবে সংরক্ষণ করার অনুশীলন। এটি প্রথাগত মডেলকে প্রতিস্থাপন করে যেখানে পরিকাঠামোকে একটি পরিষেবা হিসেবে মানবিকভাবে প্রতিবিধান করা হয় সাধারণত সেল স্ক্রিপ্ট বা অন্যান্য কনফিগারেশন উপাদানের মাধ্যমে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ক্লাউড নেটিভ পদ্ধতিতে অ্যাপ্লিকেশন তৈরি করার জন্য পরিকাঠামো নিষ্পত্তিযোগ্য এবং পুনরুৎপাদনযোগ্য হতে হবে। সাধারণত মানুষের হস্তক্ষেপ ছাড়াই এটি একটি স্বয়ংক্রিয় এবং পুনরাবৃত্তি যোগ্য উপায় [স্কেল](/bn/scalability/) করতে পারে। মানবিক নজরদারি প্রতিক্রিয়াশীলতা এবং [ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলির](/bn/cloud-native-apps/) প্রয়োজনীয়তা পূরণ করতে পারে না। মানবিক কাঠামো পরিবর্তনগুলি উৎপাদনযোগ্য নয়, দ্রুত পরিমাপ সীমার মধ্যে চলে যায় এবং মাইক্রো কনফিগারেশন ভুলগুলি করে। + +## এটা কিভাবে সাহায্য করে + +ডেটা সেন্টার রিসোর্স যেমন সার্ভার, লোড ব্যালেন্সার এবং সাবনেটগুলিকে কোড হিসাবে উপস্থাপন করে, এটি অবকাঠামো দলগুলিকে সমস্ত কনফিগারেশনের জন্য সত্যের একক উৎস থাকতে দেয় এবং একটি [CI](/bn/continuous-integration/) পাইপলাইনে তাদের ডেটা সেন্টার পরিচালনা করতে দেয়, সংস্করণ নিয়ন্ত্রণ এবং স্থাপনার কৌশল প্রয়োগ করে। diff --git a/content/bn/kubernetes.md b/content/bn/kubernetes.md new file mode 100644 index 0000000000..415d3e7c38 --- /dev/null +++ b/content/bn/kubernetes.md @@ -0,0 +1,25 @@ +--- +title: কুবারনেটিস (Kubernetes) +status: Completed +category: প্রযুক্তি +tags: ["infrastructure", "fundamental", ""] +--- + +## এটা কি + +কুবারনেটিস (Kubernetes), প্রায়ই K8s হিসাবে সংক্ষিপ্ত হয়, একটি ওপেন-সোর্স কন্টেইনার অর্কেস্ট্রেটর যা আধুনিক পরিকাঠামোতে [কন্টেইনারাইজড (containerized)](/bn/container/) অ্যাপ্লিকেশনের জীবনচক্রকে স্বয়ংক্রিয় করে। এটি একটি ডেটা সেন্টারের অপারেটিং সিস্টেমের মতো, যা অংশ-বিভাগিত সিস্টেম (Distributed System) জুড়ে চলমান অ্যাপ্লিকেশনগুলিকে পরিচালনা করে (ঠিক যেমন আপনার ল্যাপটপের OS আপনার অ্যাপগুলি পরিচালনা করে) ‍। + +কুবারনেটিস একটি [ক্লাস্টারের](cluster.md) নোড জুড়ে কন্টেইনারের সময়সূচী নির্ধারণ করে। এটিতে বিভিন্ন ধরনের ইনফ্রাস্টাকচার কনস্টাক্টস (infrustructure contructs)(যেমন- প্রিমিটিভস (primitives)), কোনো অ্যাপ্লিকেশনের ইনস্টেন্স, লোড ব্যালেন্সার (Load Balancer), পারসিস্টেন্ট স্টোরেজ (Persistance Storage) এবং অন্যান্য সার্ভিস একত্রিত করে অ্যাপ্লিকেশন বানানো হয়। + +কুবারনেটিস অটোমেশন (Automation) এবং এক্সটেনসিবিলিটি (Extensibility) সক্ষম করে এবং ব্যবহারকারীদেরকে পুনর্গঠনযোগ্য ও ঘোষণামূলকভাবে অ্যাপ্লিকেশন স্থাপন করতে দেয়। কুবারনেটিস ইকোসিস্টেমের সফ্টওয়্যার প্রডাক্ট এবং প্রজেক্টগুলি, কুবারনেটিস [এপিআই (API)](/bn/application-programming-interface/) প্রসারিত করার জন্য সেই অটোমেশন এবং এক্সটেনসিবিলিটির সুবিধা নেয়। কুবারনেটিসের অটোমেশনকে ব্যবহার করে, কুবারনেটিসের টুলসগুলিকে আরও অ্যাক্সেসযোগ্য করে তোলা হয় অভিজ্ঞ কুবারনেটিস অনুশীলনকারীদের কাছে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ইনফ্রাস্ট্রাকচার অটোমেশন (Infrastructure automation) এবং ঘোষণামূলক কনফিগারেশন ম্যানেজমেন্ট (Declarative Configuration Management) দীর্ঘকাল ধরে একটি গুরুত্বপূর্ণ ধারণা, এবং [ক্লাউড কম্পিউটিং](/bn/cloud-computing/) জনপ্রিয়তা অর্জন করায় এটি আরও বেশি চাপে পড়ে। কম্পিউট রিসোর্সের (compute resources) চাহিদা বৃদ্ধি পাওয়ায় কম সংখ্যক ইন্জিনিয়ারের সাথে সার্ভিস প্রদান করতে সংস্থাগুলি চাপ অনুভব করে, এবং এটি পূরণের জন্য নতুন প্রযুক্তি এবং কাজের পদ্ধতিরই প্রয়োজন হয়। উপরন্তু, ক্লাউড কম্পিউটিং-এর (Cloud computing) জনপ্রীয়তা কন্টেনারাইজেশনের (Containerization) সাথে যুক্ত ছিল এবং যে সংস্থাগুলি ঐতিহ্যগত ইনফ্রাস্ট্রাকচারকে (Traditional infrastructure), অটোমেট করতে ব্যস্ত ছিল তাদেরই কনফিগারেশন (Configuration) এবং ডিপ্লয়মেন্ট (Deployment) অটোমেশন করার জন্য একটি প্রক্রিয়ার প্রয়োজন পরে। + +## এটা কিভাবে সাহায্য করে + +ঐতিহ্যগতভাবে ইনফ্রাস্ট্রাকচার এস কোড (Traditional infrastructure as code) টুলসগুলির মতোই একই রকম পদ্ধতিতে কুবারনেটিসও অটোমেশনে সাহায্য করে কিন্তু কুবারনেটিসে ভার্চুয়াল বা ফিজিক্যাল মেশিনের তুলনায় কনফিগারেশন ড্রিফ্টে (Configuration Drift) বেশি প্রতিরোধী কন্টেইনারগুলির সাথে কাজ করার সুবিধা রয়েছে। +কুবারনেটিস ঘোষণামূলকভাবে (declaratively) কাজ করে, যার মানে হল অপারেটররা কীভাবে কিছু করতে হবে সে সম্পর্কে নির্দেশনা প্রদান করার পরিবর্তে তারা যা করতে চায় সেটা সাধারণত ম্যানিফেস্ট (Manifest) ফাইল (যেমন YAML) হিসাবে বর্ণনা করে; কুবারনেটিস নিজে থেকেই "কিভাবে" করতে হবে সেটার যত্ন নেয়। এর ফলে কুবারনেটিস ইনফ্রাস্ট্রাকচার এস কোডের (Infrastructure as code) সাথে অত্যন্ত সামঞ্জস্যপূর্ণ। + +কুবারনেটিস নিজেও নিজের নিরাময় (self-heal) করে। এর মানে হল যে কুবারনেটিস নিশ্চিত করে ক্লাস্টারের প্রকৃত অবস্থা সর্বদা অপারেটরের পছন্দসই অবস্থার সাথে মেলে। কুবারনেটিস কোনো বিচ্যুতি সনাক্ত করলে, একটি কুবারনেটিস কন্ট্রোলার (Kubernetes Controller) কাজে নামে এবং সেটিকে ঠিক করে। সুতরাং এটি যে ইনফ্রাস্ট্রাকচার (Infrastructure) ব্যবহার করে তা ক্রমাগত পরিবর্তীত হতে পারে, তাই কুবারনেটিস ক্রমাগত স্বয়ংক্রিয়ভাবে পরিবর্তিত হতে থাকে এবং নিশ্চিত করে এটি যাতে পছন্দসই অবস্থার সাথে মেলে। diff --git a/content/bn/load-balancer.md b/content/bn/load-balancer.md new file mode 100644 index 0000000000..ecc4a1f954 --- /dev/null +++ b/content/bn/load-balancer.md @@ -0,0 +1,18 @@ +--- +title: লোড ব্যালেন্সার (Load Balancer) +status: Feedback Appreciated +category: ধারণা +tags: ["infrastructure", "networking", ""] +--- + +## এটা কি + +একটি লোড ব্যালেন্সার এমন একটি টুল যা একটি অ্যাপ্লিকেশনের একাধিক ইন্সটেন্স এর (instance) মধ্যে আগত অনুরোধগুলি (incoming requests) দক্ষতার সাথে বিতরণ করে। উদাহরণস্বরূপ একটি [মাইক্রোসার্ভিস](/bn/microservices-architecture/) আর্কিটেকচার নিন, যেখানে প্রতিটি পরিষেবা [অনুভূমিকভাবে স্কেল করা (Horizontal Scaling)](/bn/horizontal-scaling/) যেতে পারে। একটি লোড ব্যালেন্সার একটি স্কেলড মাইক্রোসার্ভিসের সামনে বসে এবং নিশ্চিত করে যেন একটি ইন্সটেন্সই বেশিরভাগ অনুরোধগুলি না পায়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +আধুনিক অ্যাপ্লিকেশন এবং ওয়েবসাইটগুলি সাধারণত একযোগে কয়েক শ'হাজার ব্যবহারকারীর অনুরোধ পরিবেশন করে। এই সমস্ত অনুরোধগুলি পরিচালনা করতে, অ্যাপ্লিকেশনগুলি প্রায়শই অনুভূমিকভাবে স্কেল করা হয়। কিন্তু অনুভূমিক স্কেলিং একটি নতুন চ্যালেঞ্জ প্রবর্তন করে। আপনি কীভাবে সমস্ত পরিষেবাতে আগত ট্র্যাফিক সমানভাবে বিতরণ করবেন? এখানেই আসে লোড ব্যালেন্সার। + +## এটা কিভাবে সাহায্য করে + +লোড ব্যালেন্সারগুলি গতিশীলভাবে (dynamically) সমস্ত আগত অনুরোধগুলি একাধিক পরিষেবার মধ্যে বিতরণ করে, নিশ্চিত করে যে যখন অন্য পরিষেবাগুলো কেবল কয়েকটি বা কিছুই পায় না তখন কেউ একাই পরিষেবার সিংহভাগ যেন না পায়। সংক্ষেপে, এটি একটি সংজ্ঞায়িত স্কিমা অনুসরণ করে একাধিক পরিষেবা জুড়ে লোড ছড়িয়ে দেয় (অর্থাৎ, সমানভাবে বা শতাংশ-ভিত্তিক)। লোড ব্যালেন্সার একটি অ্যাপ্লিকেশনের সামগ্রিক কর্মক্ষমতা এবং শেষ পর্যন্ত ব্যবহারকারীর অভিজ্ঞতার জন্য অপরিহার্য। \ No newline at end of file diff --git a/content/bn/loosely-coupled-architecture.md b/content/bn/loosely-coupled-architecture.md new file mode 100644 index 0000000000..9663d06b53 --- /dev/null +++ b/content/bn/loosely-coupled-architecture.md @@ -0,0 +1,11 @@ +--- +title: শিথিল সংযোজিত স্থাপত্য (Loosely Coupled Architecture) +status: Completed +category: ধারণা +tags: ["fundamental", "architecture", "property"] +--- + +শিথিল সংযোজিত স্থাপত্য হল সেই ধরনের স্থাপত্যশৈলী যেখানে প্রতিটি পৃথক উপাদান স্বাধীনভাবে তৈরি হয় ([ দৃঢ় সংবদ্ধ স্থাপত্য শৈলীর](/bn/tightly-coupled-architectures/) ঠিক বিপরীত )| অনেক সময় এর প্রতিটি উপাদানকে [মাইক্রোসার্ভিসেস আর্কিটেকচার](/bn/microservices-architecture/) হিসেবে চিহ্নিত করা যায় +যেগুলি এমনভাবে তৈরি করা হয় যাতে তা অন্য আরও বিভিন্ন পরিষেবার ব্যবহৃত হতে পারে, এই শৈলীটি সাধারণত দৃঢ় সংবদ্ধ শৈলী তুলনায় অনেক ধীর কিন্তু এর অনেকগুলি সুবিধা আছে বিশেষত অ্যাপ্লিকেশন স্কেল হিসেবে। + +শিথিল শৈলী দলগুলিকে তাদের বৈশিষ্ট্য উন্নয়নে, স্থাপনে এবং স্বাধীনভাবে স্কেল করার অনুমতি দেয় যার ফলে প্রতিষ্ঠান খুব দ্রুত পৃথক উপাদানের সঙ্গে সংযোগ স্থাপন করতে পারে| Application development অনেক গতিশীল হয় এবং দলগুলি তাদের সামর্থ্য অনুসারে নির্দিষ্ট প্রযুক্তির প্রতি দৃষ্টি নিবদ্ধ রেখে তৈরি হতে পারে। diff --git a/content/bn/managed-services.md b/content/bn/managed-services.md new file mode 100644 index 0000000000..cddf8faf52 --- /dev/null +++ b/content/bn/managed-services.md @@ -0,0 +1,24 @@ +--- +title: ম্যানাজ্ড সার্ভিসেস (Managed services) +status: Deprecated +draft: true +category: প্রযুক্তি +tags: ["", "", ""] +--- + +## এটা কি + +একটি ম্যানাজ্ড পরিষেবা হল একটি সফ্টওয়্যার অফার যেখানে অপারেশন এবং পরিচালনা তৃতীয় পক্ষ দ্বারা যত্ন নেওয়া হয়। +উদাহরণগুলির মধ্যে একটি পরিষেবা অফার হিসাবে ডেটাবেস অন্তর্ভুক্ত রয়েছে যেমন Amazon-এর RDS বা Datadog-এর মতো একটি বাহ্যিক পর্যবেক্ষণ পরিষেবা৷ + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +সফ্টওয়্যার পরিচালনা করা জটিল, বিশেষ করে আধুনিক স্ট্যাক তৈরি করে এমন সমস্ত বিভিন্ন প্রযুক্তি বিবেচনা করে। +এর প্রতিটি দিক পরিচালনা করা এবং/অথবা অভ্যন্তরীণ বিশেষজ্ঞদের তা করতে সক্ষম হওয়া খুব ব্যয়বহুল হতে পারে বা আপনার প্রকৌশলীদের সময়ের মূল্য নয়। +সহজেই আউটসোর্স করা যেতে পারে এমন অপারেশনাল কাজগুলির যত্ন নেওয়ার চেয়ে আপনার দল সম্ভবত নতুন ক্ষমতা তৈরি করা ভাল। + +## এটা কিভাবে সাহায্য করে + +ম্যানাজ্ড পরিষেবাগুলি প্রথম দিন থেকে খুব কম অপারেশনাল ওভারহেড সহ ব্যবহারের জন্য প্রস্তুত৷ +তারা সংস্থাগুলিকে কার্যকরভাবে আউটসোর্স করার অনুমতি দেয় যেগুলি তাদের মূল দক্ষতার বাইরে পড়ে +ভালভাবে সংজ্ঞায়িত, এবং সাধারণত [API](/bn/application-programming-interface/) চালিত সীমানা। diff --git a/content/bn/microservices-architecture.md b/content/bn/microservices-architecture.md new file mode 100644 index 0000000000..9f88b50ee9 --- /dev/null +++ b/content/bn/microservices-architecture.md @@ -0,0 +1,20 @@ +--- +title: মাইক্রোসার্ভিসেস আর্কিটেকচার (Microservices Architecture) +status: Completed +category: প্রযুক্তি +tags: ["architecture", "fundamental", ""] +--- + +## এটা কি + +অ্যাপ্লিকেশন ডেভেলপমেন্টে (Application Development) একটি আধুনিক পন্থা হলো মাইক্রোসার্ভিস (Microservice), যা ক্লাউড নেটিভ (Cloud Native) প্রযুক্তির সুবিধা নেয়। যেখানে আধুনিক অ্যাপ্লিকেশনগুলি, যেমন নেটফ্লিক্স(netflix) একটি একক অ্যাপ এর মত দেখায় কিন্তু এটি আসলে অনেকগুলি ছোট ছোট সার্ভিসের একত্রিত রূপ, সবগুলি একে অপরের সাথে আবদ্ধ ভাবে কাজ করে চলেছে। এই ক্ষেত্রে, কোনো অ্যাপ এর একটি একক পেজ যা আমাদের search, authenticate এবং ভিডিও দেখতে অনুমতি দেয় তা আসলে অনেকগুলি ছোট ছোট সার্ভিস দ্বারা চালিত হয়, যেখানে এক একটি সার্ভিস এক একটি বৈশিষ্ট্য সামলায়। সংক্ষেপে, মাইক্রোসার্ভিস বলতে একটি এপ্লিকেশন আর্কিটেকচার প্যাটার্ন (Application Architecture Pattern) কে বোঝানো হয় যা [মনোলিথিক এপ্লিকেশন (Monolithic Application)](/bn/monolithic_apps/) এর থেকে স্বাভাবিকত বিপরীত। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +মাইক্রোসার্ভিসেস হল মনোলিথিক এপ্লিকেশনের দ্বারা জাহির করা চ্যালেঞ্জগুলির প্রতি একটি উত্তর। স্বাভাবিকভাবে, একটি অ্যাপ্লিকেশনের বিভিন্ন অংশকে আলাদা আলাদা ভাবে বড় ([scaled](/bn/scalability/)) করতে হবে। উদাহরণস্বরূপ, একটি অনলাইন দোকানের বিক্রি থেকে প্রোডাক্ট ভিউস বেশি হয়, যার মানে বিক্রির থেকে আমাদের প্রোডাক্ট ভিউস ফাংশনালিটির অনেকগুলি চলমান দৃষ্টান্ত (running instance) প্রয়োজন হয়। একটি মনোলিথিক অ্যাপ্লিকেশনে, আলাদা আলাদাভাবে এই ছোট ছোট যুক্তি বা কোড গুলির সঞ্চার করা সম্ভব নয়। যদি প্রোডাক্ট ভিউস ফাংশনকে আলাদা ভাবে বড়ো করে তোলা না যায় তাহলে আমাদের পুরো সফটওয়্যারটিকে ডুপ্লিকেট করে তার আরো চলমান দৃষ্টান্ত তৈরি করতে হবে, প্রত্যেকটি কম্পনেন্ট সহকারে যা সম্পদের একটি অদক্ষ ব্যবহার। মনোলিথিক অ্যাপ্লিকেশনগুলি ডেভেলোপারদের ডিজাইন পিটফলে (design pitfall) পড়া সহজ করে তোলে। যেহেতু সমস্ত কোড এক জায়গায় রয়েছে, সেই কোডটিকে শক্তভাবে জোড়া দেওয়া [(tightly coupled)](/bn/tightly_coupled_architectures/) সহজ এবং উদ্বেগের বিচ্ছেদের নীতি প্রয়োগ করা আরও কঠিন। মনোলিথিকের জন্য প্রায়ই ডেভেলপারদের উৎপাদনশীল (productive) হওয়ার আগে পুরো কোডবেস বোঝার প্রয়োজন হয়। + +## এটা কিভাবে সাহায্য করে + +কার্যকারিতা(functionality) কে বিভিন্ন মাইক্রোসার্ভিসে আলাদা করে স্বাধীনভাবে স্থাপন, আপডেট এবং দক্ষতা মিশ্রিত করা সহজ। বিভিন্ন দলকে একটি বৃহত্তর অ্যাপ্লিকেশনের ছোট অংশে ফোকাস করার অনুমতি দিয়ে সংস্থার বাকি অংশকে নেতিবাচকভাবে প্রভাবিত না করে তাদের অ্যাপে কাজ করা সহজ হয়। যেখানে মাইক্রোসার্ভিস বহু সমস্যা সমাধান করে, এটি আবার অপারেশনাল ওভারহেডও (operational overhead) তৈরি করে - যে জিনিসগুলি আপনাকে স্থাপন করতে হবে এবং মাত্রার ক্রম অনুসারে বৃদ্ধিতে নজর রাখতে হবে এবং আরও অনেক কিছু। অনেক [ক্লাউড নেগেটিভ প্রযুক্তির](/bn/cloud_native_tech/) উদ্দেশ্যই হলো মাইক্রোসার্ভিস স্থাপন এবং পরিচালনা সহজ করা। + +--- diff --git a/content/bn/monolithic-apps.md b/content/bn/monolithic-apps.md new file mode 100644 index 0000000000..9178d8ae39 --- /dev/null +++ b/content/bn/monolithic-apps.md @@ -0,0 +1,23 @@ +--- +title: মনোলিথিক অ্যাপ (Monolithic Apps) +status: Completed +category: ধারণা +--- + +## এটা কি + +একটি মনোলিথিক অ্যাপ্লিকেশন একটি একক স্থাপনযোগ্য (deployable) প্রোগ্রামে সমস্ত কার্যকারিতা ধারণ করে। +একটি অ্যাপ্লিকেশন তৈরি করার সময় এটি প্রায়শই শুরু করার সবচেয়ে সরল এবং সহজ পদ্ধতি। যাইহোক, একবার অ্যাপ্লিকেশন জটিলতায় বৃদ্ধি পেলে, মনোলিথগুলি বজায় রাখা কঠিন হয়ে উঠতে পারে। +একই কোডবেসে আরও বেশি ডেভেলপার কাজ করার সাথে সাথে বিরোধপূর্ণ পরিবর্তনের সম্ভাবনা এবং ডেভেলপারদের মধ্যে আন্তঃব্যক্তিক যোগাযোগের প্রয়োজনীয়তা বৃদ্ধি পায়। + +## এটি যেই সমস্যাটি নির্দেশ করে + +একটি অ্যাপ্লিকেশনকে [মাইক্রোসার্ভিসে](/bn/microservices-architecture/) রূপান্তর করা হলে এর কার্যক্ষম ওভারহেড বৃদ্ধি পায় — পরীক্ষা, স্থাপন এবং চালিয়ে যেতে আরও অনেক কিছু রয়েছে। +একটি প্রোডাক্টের জীবনচক্রের প্রথম দিকে, এই জটিলতাকে স্থগিত করা এবং প্রোডাক্টটি সফলভাবে নির্ধারিত না হওয়া পর্যন্ত একটি মনোলিথিক অ্যাপ্লিকেশন তৈরি করা সুবিধাজনক হতে পারে। + + +## এটা কিভাবে সাহায্য করে + +একটি সু-পরিকল্পিত মনোলিথ একটি অ্যাপ্লিকেশন চালু এবং চালানোর সবচেয়ে সহজ উপায় হয়ে শীর্ণ (lean) নীতিগুলি বজায় রাখতে পারে। +যখন মনোলিথিক প্রয়োগের ব্যবসায়িক মূল্য সফল প্রমাণিত হয়, তখন এটিকে মাইক্রোসার্ভিসে পরিণত করা যেতে পারে। মূল্যবান প্রমাণিত হওয়ার আগে একটি মাইক্রোসার্ভিসেস-ভিত্তিক অ্যাপ তৈরি করা ইঞ্জিনিয়ারিং প্রচেষ্টার অকাল ব্যয় হতে পারে। +আবেদনের কোনো মূল্য না হলে সেই প্রচেষ্টা নষ্ট হয়ে যায়। diff --git a/content/bn/multitenancy.md b/content/bn/multitenancy.md new file mode 100644 index 0000000000..53504403ed --- /dev/null +++ b/content/bn/multitenancy.md @@ -0,0 +1,31 @@ +--- +title: বহু মালিকানা (Multitenancy) +status: Completed +category: সম্পত্তি +tags: ["architecture", "property", ""] +--- + +## এটা কি + +বহু মালিকানা (multitenancy) (বা মাল্টি-টেনেন্সি (multi-tenancy)) একটি একক সফ্টওয়্যার (software) ইনস্টলেশনকে (installation) বোঝায় যা একাধিক ভাড়াটেদের পরিষেবা দেয়। +ভাড়াটে হল একজন ব্যবহারকারী, অ্যাপ্লিকেশন (application), বা ব্যবহারকারী/অ্যাপ্লিকেশনের একটি গোষ্ঠী যারা তাদের নিজস্ব ডেটা সেটে (data set) কাজ করার জন্য সফ্টওয়্যারটি (software) ব্যবহার করে। +এই ভাড়াটেরা ডেটা ভাগ করে না (যদি না মালিকের দ্বারা স্পষ্টভাবে নির্দেশ দেওয়া হয়) এবং এমনকি একে অপরের বিষয়ে সচেতন নাও হতে পারে। + +একজন ভাড়াটিয়া একটি একক লগইন আইডি (login ID) সহ একজন স্বাধীন ব্যবহারকারীর মতো ছোট হতে পারে — মনে করুন ব্যক্তিগত উৎপাদনশীলতা সফটওয়্যার (software) — বা হাজার হাজার লগইন আইডি (login IDs) সহ একটি সম্পূর্ণ কর্পোরেশনের মতো বড়, প্রতিটির নিজস্ব বিশেষাধিকার থাকলেও একাধিক উপায়ে আন্তঃসম্পর্কিত। +বহু মালিকানা (multitenancy) সফ্টওয়্যার (software) উদাহরণগুলির মধ্যে রয়েছে গুগল মেইল (Google Mail), গুগল ডক্স (Google Docs), মাইক্রোসফ্ট অফিস ৩৬৫ (Microsoft Office 365), সেলসফোর্স সিআরএম (Salesforce CRM) এবং ড্রপবক্স (Dropbox), যা সম্পূর্ণ বা আংশিকভাবে বহু মালিকানা (multitenancy) সফ্টওয়্যার (software) হিসাবে শ্রেণীবদ্ধ করা হয়েছে। + +## এটি যেই সমস্যাটি নির্দেশ করে + +বহু মালিকানা (multitenancy) ছাড়া, প্রতিটি ভাড়াটের জন্য একটি নিরধারিত সফটওয়্যার (software) ইনস্টলেশনের (installation) প্রয়োজন হবে। +এটি সম্পদের ব্যবহার এবং রক্ষণাবেক্ষণের প্রচেষ্টা বাড়ায়, শেষ পর্যন্ত সফ্টওয়্যার খরচ। + +## এটা কিভাবে সাহায্য করে + +বহু মালিকানা (multitenancy) সফ্টওয়্যার (software) প্রতিটি ভাড়াটেকে একটি পৃথক পরিবেশ (কাজের ডেটা, সেটিংস (settings), প্রমাণপত্রের তালিকা, ইত্যাদি) প্রদান করে, একই সাথে একাধিক ভাড়াটেদের পরিবেশন করে। ভাড়াটেদের দৃষ্টিকোণ থেকে, প্রত্যেকেরই নিরধারিত সফ্টওয়্যার (software) ইনস্টলেশন (installation) রয়েছে, যদিও বাস্তবে, তারা সবাই ভাগ করে নিচ্ছে। +একটি সার্ভারে (server) সফ্টওয়্যার (software) চালানোর মাধ্যমে এবং ভাড়াটেদের একটি নেটওয়ার্কের মাধ্যমে ইন্টারফেস (interface) এবং/অথবা একটি [API](/bn/application-programming-interface/) (এছাড়াও পড়ুন [ক্লায়েন্ট-সার্ভার আর্কিটেকচার (Client-Server Architecture)](/bn/client-server-architecture/)) এর মাধ্যমে এটির সাথে সংযোগ করার অনুমতি দিয়ে এটি অর্জন করা হয়। +বহু মালিকানা (multitenancy) সফ্টওয়্যারের (software) দ্বারা, ভাড়াটেরা একে অপরকে প্রভাবিত না করে বা শুধুমাত্র পূর্বনির্ধারিত এবং নিয়ন্ত্রিত উপায়ে একটি ইনস্টলেশনের (installation) মাধ্যমে সম্পদ ভাগ করে দেয়। +সফ্টওয়্যার (software) প্রদানকারীর পক্ষ থেকে সম্পদের সঞ্চয়গুলি ভাড়াটেদের কাছে প্রেরণ করা যেতে পারে, ব্যবহারকারীদের জন্য সফ্টওয়্যার (software) খরচ উল্লেখযোগ্যভাবে হ্রাস করে (আবার মনে করুন, ওয়েব-ভিত্তিক (web-based) ই-মেইল (e-mail) বা ডকুমেন্ট সম্পাদক (document editors))। + +## সম্পর্কিত পদ + +বহু মালিকানা (multitenancy) [SaaS](/bn/software-as-a-service/) এর সমার্থক নয়, যদিও SaaS-এর বহু মালিকানা (multitenancy) হওয়া খুবই সাধারণ এবং এমনকি বহু মালিকানার (multitenancy) বৈশিষ্ট্য গুলি এর মূল সুবিধাগুলির মধ্যে একটি। diff --git a/content/bn/mutual-transport-layer-security.md b/content/bn/mutual-transport-layer-security.md new file mode 100644 index 0000000000..6558f471eb --- /dev/null +++ b/content/bn/mutual-transport-layer-security.md @@ -0,0 +1,23 @@ +--- +title: পারস্পরিক পরিবহন স্তর নিরাপত্তা (Mutual Transport Layer Security) +status: Completed +category: ধারণা +tags: ["security", "", ""] +--- + +## এটা কি + +মিউচুয়াল টিএলএস (এমটিএলএস) একটি প্রযুক্তি যা দুটি [পরিষেবা](/bn/service/) এর মধ্যে প্রেরিত বার্তাগুলি প্রমাণীকরণ এবং এনক্রিপ্ট করতে ব্যবহৃত হয়। +মিউচুয়াল টিএলএস একটি [ট্রান্সপোর্ট লেয়ার সিকিউরিটি](/bn/transport-layer-security/) (টিএলএস) প্রোটোকল কিন্তু, শুধুমাত্র একটি সংযোগের পরিচয় যাচাই করার পরিবর্তে উভয় পক্ষকেই যাচাই করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +[মাইক্রোপরিষেবা](/bn/microservices-architecture/) একটি নেটওয়ার্কের মাধ্যমে যোগাযোগ করে এবং আপনার ওয়াইফাই নেটওয়ার্কের মতো, সেই নেটওয়ার্কে যোগাযোগ ট্রান্সলেশনগুলি হ্যাক হতে পারে। +এমটিএলএস নিশ্চিত করে যেন কোনও অননুমোদিত পক্ষ বৈধ অনুরোধ শুনতে বা নকল করতে পারে না। + +## এটা কিভাবে সাহায্য করে + +এমটিএলএস নিশ্চিত করে যে ক্লায়েন্ট এবং সার্ভারের মধ্যে ট্র্যাফিক উভয় দিকে নিরাপদ এবং নির্ভরযোগ্য এছাড়াও কোনও নেটওয়ার্ক বা +অ্যাপ্লিকেশনটিতে লগ ইন করা ব্যবহারকারীদের জন্য সুরক্ষার একটি অতিরিক্ত স্তর সরবরাহ করে। +এটি ক্লায়েন্ট সরঞ্জামগুলির সাথে সংযোগগুলিও যাচাই করে যেগুলো লগইন প্রক্রিয়া অনুসরণ করে না, যেমন ইন্টারনেট অফ থিংস (IoT) সরঞ্জামগুলি। +অন-পাথ আক্রমণ, স্পুফিং আক্রমণ, ক্রেডেনশিয়াল স্টাফিং, ব্রুট ফোর্স আক্রমণ ইত্যাদির মতো আক্রমণগুলি এমটিএলএস দ্বারা প্রতিরোধ করা যেতে পারে। diff --git a/content/bn/nodes.md b/content/bn/nodes.md new file mode 100644 index 0000000000..026e3f665f --- /dev/null +++ b/content/bn/nodes.md @@ -0,0 +1,19 @@ +--- +title: নোড (Nodes) +status: Completed +category: ধারণা +tags: ["infrastructure", "fundamental", ""] +--- + +## এটা কি + +একটি নোড হল এমন একটি কম্পিউটার, যা অন্য কম্পিউটার বা নোডগুলির সহযোগিতায় একটি সাধারণ কাজ সম্পাদন করে। উদাহরণস্বরূপ আপনার ল্যাপটপ, মোডেম এবং প্রিন্টারকে ধরা যেতে পারে। এই ডিভাইসগুলো আপনার ওয়াইফাই নেটওয়ার্কের মাধ্যমে সংযোগ স্থাপন করে এবং একত্রে কাজ করে, প্রতিটি একটি নোডের প্রতিনিধিত্ব করে। [ক্লাউড কম্পিউটিং](/bn/cloud-computing/) এ, একটি নোড হতে পারে একটি ফিজিক্যাল কম্পিউটার, [ভার্চুয়াল মেশিন](/bn/virtual-machine/) নামে পরিচিত একটি ভার্চুয়াল কম্পিউটার বা একটি [কন্টেনার](/bn/container/)। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +একটি অ্যাপ্লিকেশন একটি একক মেশিনে চালানো যেতে পারে (এবং অনেকে এটি করে থাকেন), তবে এর সাথে কিছু ঝুঁকি জড়িত থাকে। মৌলিক সিস্টেম ব্যর্থ হলে অ্যাপ্লিকেশনটি বিচ্ছিন্ন হয়ে যাওয়ার ঝুঁকি থাকে। এই সমস্যার সমাধানের জন্য, ডেভেলপাররা [বিতরণকৃত অ্যাপ্লিকেশন](/bn/distributed-apps/) তৈরি করতে শুরু করেছেন যেখানে প্রতিটি প্রক্রিয়া নিজস্ব নোডে চলে। এইভাবে, নোডগুলি একটি একক গোষ্ঠীর(Group) অংশ হিসাবে অ্যাপ বা প্রক্রিয়াগুলি চালায় এবং একটি সাধারণ লক্ষ্য অর্জনের জন্য একটি [ক্লাস্টার](/bn/cluster/) বা গোষ্ঠী গঠন করে। + +## এটা কিভাবে সাহায্য করে + +একটি নোড আপনাকে একটি ক্লাস্টারে বরাদ্দ করা যেতে পারে এমন একটি স্বতন্ত্র কম্পিউটিং ইউনিট (মেমোরি, সিপিইউ, নেটওয়ার্ক) দেয়। [ক্লাউড নেটিভ](/bn/cloud-native-tech/) প্ল্যাটফর্ম বা অ্যাপে একটি নোড একটি কাজ সম্পন্ন করতে পারে এমন একটি একক ইউনিট প্রদর্শন করে। সাধারণত, একক নোডগুলিকে আলাদা ধরা হয় না কারন একটি নির্দিষ্ট ধরনের যে কোনো একটি নোডকে একই ধরনের অন্য কোনো নোড থেকে আলাদা করা যায় না। + diff --git a/content/bn/observability.md b/content/bn/observability.md new file mode 100644 index 0000000000..d513ea77be --- /dev/null +++ b/content/bn/observability.md @@ -0,0 +1,21 @@ +--- +title: পর্যবেক্ষণযোগ্যতা (Observability) +status: Completed +category: ধারণা +tags: ["property", "", ""] +--- + +## এটা কি + +পর্যবেক্ষণযোগ্যতা (Observability) হল পর্যবেক্ষণের অধীনে থাকা সিস্টেম থেকে সংকেতগুলির উপর ভিত্তি করে ক্রমাগত কার্যযোগ্য সূক্ষ্মদর্শিতা (continuous actionable insights) তৈরি এবং আবিষ্কার করার ক্ষমতা। অন্য কথায়, পর্যবেক্ষণযোগ্যতা ব্যবহারকারীদের বাহ্যিক আউটপুট থেকে একটি সিস্টেমের অবস্থা বুঝতে এবং (সংশোধনমূলক) পদক্ষেপ নিতে দেয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +কম্পিউটার সিস্টেমগুলি নিম্ন-স্তরের সংকেতগুলি যেমন CPU সময়, মেমরি, ডিস্ক স্পেস এবং উচ্চ-স্তরের এবং ব্যবসায়িক সংকেত, API প্রতিক্রিয়া সময়সহ, ত্রুটি, প্রতি সেকেন্ডে লেনদেন, ইত্যাদি সহ পরিমাপ করা হয়। + +একটি সিস্টেমের পর্যবেক্ষণযোগ্যতা তার অপারেটিং এবং উন্নয়ন খরচের উপর একটি উল্লেখযোগ্য প্রভাব ফেলে। +পর্যবেক্ষণযোগ্য সিস্টেমগুলি তাদের অপারেটরদের কাছে অর্থপূর্ণ, কার্যকরী ডেটা প্রদান করে, তাদের অনুকূল ফলাফল (দ্রুত ঘটনার প্রতিক্রিয়া, বিকাশকারীর উৎপাদনশীলতা (developer productivity) বৃদ্ধি) এবং কম পরিশ্রম এবং ডাউনটাইম অর্জন করতে দেয়। + +## এটা কিভাবে সাহায্য করে + +বুঝতে হবে যে শুধু অধিক তথ্যই আরও পর্যবেক্ষণযোগ্য সিস্টেমে তৈরি করে না। আদতে, কখনও কখনও, একটি সিস্টেম দ্বারা উৎপণ্য তথ্যের পরিমাণ অ্যাপ্লিকেশন দ্বারা উৎপণ্য কোলাহল থেকে মূল্যবান আকাঙ্ক্ষণীয় সংকেত সনাক্ত করা কঠিন করে তুলতে পারে। সঠিক সিদ্ধান্ত নেওয়ার জন্য পর্যবেক্ষণযোগ্যতার প্রয়োজন সঠিক সময়ে সঠিক ডাটা, সঠিক ভোক্তার জন্য (মানুষ অথবা সফ্টওয়্যারের অংশ)। \ No newline at end of file diff --git a/content/bn/platform-as-a-service.md b/content/bn/platform-as-a-service.md new file mode 100644 index 0000000000..eb804ec0f2 --- /dev/null +++ b/content/bn/platform-as-a-service.md @@ -0,0 +1,25 @@ +--- +title: পরিষেবা হিসাবে একটি প্ল্যাটফর্ম (Platform as a Service) +status: Deprecated +category: প্রযুক্তি +draft: true +tags: ["fundamental", "platform", ""] +--- + +## এটা কি + +পরিষেবা হিসাবে একটি প্ল্যাটফর্ম, বা পিএএএস, হলো অ্যাপ্লিকেশন ডেভেলপমেন্ট টিমগুলিকে তাদের অ্যাপ্লিকেশনগুলি স্থাপন এবং চালানোর জন্য একটি বাহ্যিক প্ল্যাটফর্ম। +হিরোকু, ক্লাউড ফাউন্ড্রি, অ্যাপ ইঞ্জিন পিএএএস অফারগুলির উদাহরণ। + +## এটি যে সমস্যা সমাধান করে + +ক্লাউড নেটিভ প্যাটার্নগুলির সুবিধা নিতে যেমন [মাইক্রোপরিষেবা](/bn/microservices-architecture/) অথবা [বিতরণ অ্যাপ্লিকেশন](/bn/distributed-apps/), +অপারেশন দল এবং ডেভেলপারদের উল্লেখযোগ্য পরিমাণে অপারেশন এবং রক্ষণাবেক্ষণের কাজ অফলোড করতে সক্ষম হওয়া দরকার। +এর মধ্যে রয়েছে অবকাঠামো রক্ষণাবেক্ষণের মতো কাজ, +[পরিষেবা আবিষ্কার](/bn/service-discovery/) এবং লোড ভারসাম্য এবং [স্কেলিং](/bn/scalability/) অ্যাপ্লিকেশন পরিচালনা করা। + +## এটি কিভাবে সাহায্য করে + +একটি PaaS অ্যাপ্লিকেশন বিকাশকারীদের সম্পূর্ণ স্বয়ংক্রিয় ফ্যাশনে সাধারণ অবকাঠামো সরঞ্জাম সরবরাহ করে। +এটি ডেভেলপারদের অবকাঠামো সম্পর্কে বুঝতে ও কম চিন্তা করতে সাহায্য করে এবং অ্যাপ্লিকেশন কোড লেখার জন্য আরও সময় এবং প্রচেষ্টা ব্যয় করতে দেই। +এটি অ্যাপ্লিকেশন দলগুলিকে তাদের অ্যাপ্লিকেশনগুলি স্বাস্থ্যকর কিনা তা নিশ্চিত করতে সহায়তা করার জন্য কিছু পর্যবেক্ষণ এবং [অবজারভেবিলিটি](/bn/observability/) সরবরাহ করে। diff --git a/content/bn/policy-as-code.md b/content/bn/policy-as-code.md new file mode 100644 index 0000000000..d3d58fb44c --- /dev/null +++ b/content/bn/policy-as-code.md @@ -0,0 +1,27 @@ +--- +title: কোড হিসাবে নীতি (Policy as Code) +status: Completed +category: ধারণা +tags: ["methodology", "", ""] +draft: +--- + +## এটা কি + +কোড হিসাবে নীতি (PaC ) হলো মেশিন-পাঠযোগ্য এবং প্রক্রিয়াযোগ্য আকারে এক বা একাধিক ফাইল হিসাবে নীতিগুলির সংজ্ঞা সংরক্ষণের অনুশীলন। +এটি ঐতিহ্যগত মডেলকে প্রতিস্থাপন করে যেখানে নীতিগুলি পৃথক নথিতে মানব-পাঠযোগ্য আকারে নথিভুক্ত করা হতো। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +অ্যাপ্লিকেশন এবং অবকাঠামো তৈরি করতে অনেক সময় একটি সংস্থা নির্ধারিত অনেক নীতির মধ্যে বাধিত হতে হয়, +উদাহরণস্বরূপ নিরাপত্তা নীতি যা সোর্স কোডে গোপনীয়তা সংরক্ষণ করতে নিষিদ্ধ করে, +সুপারইউজার অনুমতিসহ কন্টেনার চালানো নিষিদ্ধ করে বা কিছু ডাটা একটি নির্দিষ্ট ভূ-অঞ্চলের বাইরে সংরক্ষণ নিষিদ্ধ করে। +উন্নয়কারীদের এবং পর্যালোচকদের জন্য নথিভুক্ত নীতিগুলির বিরুদ্ধে অ্যাপ্লিকেশন এবং অবকাঠামো ম্যানুয়ালি পরীক্ষা করা অত্যন্ত শ্রমসাধ্য এবং ত্রুটিপ্রবণ। +ম্যানুয়াল প্রক্রিয়াগুলি ক্লাউড নেটিভ অ্যাপ্লিকেশনগুলির প্রতিক্রিয়া শীলতা এবং স্কেল এর প্রয়োজনীয়তা পূরণ করতে পারে না। + +## এটা কিভাবে সাহায্য করে + +কোডের মাধ্যমে নীতিগুলি বর্ণনা করা পুনরাবৃত্তি সক্ষম করে এবং ত্রুটিগুলি হ্রাস করে (ম্যানুয়ালি করার মতো নয়)। +কোড হিসাবে নীতির (PaC) আরেকটি সুবিধা হলো কোডটি গিটের মতো একটি সংস্করণ নিয়ন্ত্রণ সিস্টেম দ্বারা পরিচালিত হতে পারে। +গিট একটি পরিবর্তন লগ ইতিহাস তৈরি করে যা বিশেষভাবে সহায়ক হয় যখন কিছু প্রত্যাশিত হিসাবে কাজ করে না। +এটি ব্যবহারকারী কে পরিবর্তন করেছে তা নির্ধারণ করতে এবং আগের সংস্করণে ফিরে যেতে দেয়। diff --git a/content/bn/portability.md b/content/bn/portability.md new file mode 100644 index 0000000000..4af70292f0 --- /dev/null +++ b/content/bn/portability.md @@ -0,0 +1,14 @@ +--- +title: বহনযোগ্যতা (Portability) +status: Completed +category: সম্পত্তি +tags: ["fundamental", "property", ""] +--- + +বহনযোগ্যতা হল একটি সফ্টওয়্যার বৈশিষ্ট্য এবং পুনঃব্যবহারযোগ্যতার একটি রূপ যা নির্দিষ্ট অপারেটিং পরিবেশে "আটকে যাওয়া" এড়াতে সাহায্য করে । +যেমনঃ অপারেটিং সিস্টেম বা এ সংশ্লিষ্ট কোম্পানির পরিবেশে ক্লাউড প্রোভাইডার । + +প্রথাগতভাবে, সফ্টওয়্যার প্রায়ই নির্দিষ্ট পরিবেশের জন্য তৈরি করা হয় (যেমন এডব্লিউএস বা লিন্যাক্স)। +অন্যদিকে, বহনযোগ্য সফ্টওয়্যারগুলি বিভিন্ন অপারেটিং পরিবেশে কাজ করে বড় কোন পরিবর্তনের প্রয়োজন ছাড়াই। +একটি অ্যাপ্লিকেশন বহনযোগ্য বলে বিবেচিত হয় যদি এটিকে একটি নতুন পরিবেশের সাথে খাপ খাইয়ে নেওয়ার জন্য প্রয়োজনীয় প্রচেষ্টা যুক্তিসঙ্গত সীমার মধ্যে থাকে। +"বহন করা (to port) " শব্দগুচ্ছের অর্থ হল সফ্টওয়্যার পরিবর্তন করা এবং এটিকে একটি ভিন্ন কম্পিউটার সিস্টেমে কাজ করার জন্য অভিযোজিত করা। diff --git a/content/bn/reliability.md b/content/bn/reliability.md new file mode 100644 index 0000000000..5e047bfa63 --- /dev/null +++ b/content/bn/reliability.md @@ -0,0 +1,12 @@ +--- +title: নির্ভরযোগ্যতা (Reliability) +status: Completed +category: সম্পত্তি +tags: ["fundamental", "property", ""] +--- + + +একটি ক্লাউড নেটিভ দৃষ্টিকোণ থেকে,নির্ভরযোগ্যতা বোঝায় যে একটি সিস্টেম ব্যর্থতার প্রতি কত ভালো সাড়া দেয়। +যদি আমাদের একটি বিতরণ ব্যবস্থা ([distributed system](/bn/distributed-systems/)) থাকে যা পরিকাঠামো পরিবর্তন এবং পৃথক উপাদানগুলি +ব্যর্থ হওয়ার সাথে সাথে কাজ করতে থাকে তবে এটি নির্ভরযোগ্য। অন্য দিকে, যদি এটি সহজে ব্যর্থ হয় এবং অপারেটরদের এটি চালু রাখার জন্য স্বয়ং হস্তক্ষেপ করতে হয় তবে এটি অবিশ্বাস্য। +ক্লাউড নেটিভ অ্যাপ্লিকেশনের ([cloud native applications](/bn/cloud-native-apps/)) লক্ষ্য হল সহজাতভাবে নির্ভরযোগ্য সিস্টেম তৈরি করা। diff --git a/content/bn/scalability.md b/content/bn/scalability.md new file mode 100644 index 0000000000..305140379b --- /dev/null +++ b/content/bn/scalability.md @@ -0,0 +1,16 @@ +--- +title: মাপযোগ্যতা (Scalability) +status: Completed +category: সম্পত্তি +tags: ["fundamental", "property", ""] +--- + +মাপযোগ্যতা বলতে বোঝায় একটি সিস্টেম কতটা ভালোভাবে বৃদ্ধি করতে পারে। সিস্টেমের যা করা উচিত তা করার ক্ষমতাকে এটি বৃদ্ধি করে। +উদাহরণস্বরূপ, একটি কুবারনেটিস ([Kubernetes](/bn/kubernetes/)) ক্লাস্টার([cluster](/bn/cluster/))স্কেল কন্টেইনারাইজড ([containerized](/bn/containerization/)) অ্যাপের সংখ্যা বৃদ্ধি বা হ্রাস করে, কিন্তু সেই পরিমাপযোগ্যতা বিভিন্ন কারণের উপর নির্ভর করে। +এটিতে কতগুলি নোড ([nodes](/bn/nodes/)) রয়েছে, প্রতিটি নোড কতগুলি কন্টেইনার পরিচালনা করতে পারে এবং কন্ট্রোল প্যানেলটি কতগুলি রেকর্ড এবং অপারেশানের ভারবহন করতে পারে? + + +একটি মাপযোগ্য সিস্টেম আরও ক্ষমতা যোগ করা সহজ করে তোলে। +আমরা দুটি পরিমাপ পদ্ধতির মধ্যে পার্থক্য করি। একদিকে, অনুভূমিক পরিমাপ ([horizontal scaling](/bn/horizontal-scaling/)) রয়েছে যা বর্ধিত লোড পরিচালনা করতে আরও নোড যোগ করে। +বিপরীতে, উল্লম্ব পরিমাপে ([vertical scaling](/bn/vertical-scaling/)) পৃথক নোডগুলিকে আরও বেশি লেনদেন করার জন্য আরও শক্তিশালী করা হয় (যেমন একটি পৃথক মেশিনে আরও মেমরি বা CPU যোগ করে)। +একটি মাপযোগ্য সিস্টেম সহজেই পরিবর্তন করতে এবং ব্যবহারকারীর চাহিদা মেটাতে সক্ষম। diff --git a/content/bn/search.md b/content/bn/search.md new file mode 100644 index 0000000000..cb936b816f --- /dev/null +++ b/content/bn/search.md @@ -0,0 +1,4 @@ +--- +title: অনুসন্ধান ফলাফল +layout: অনুসন্ধান +--- diff --git a/content/bn/security-chaos-engineering.md b/content/bn/security-chaos-engineering.md new file mode 100644 index 0000000000..818858f73e --- /dev/null +++ b/content/bn/security-chaos-engineering.md @@ -0,0 +1,22 @@ +--- +title: নিরাপত্তা বিশৃঙ্খলা ইঞ্জিনিয়ারিং (Security Chaos Engineering) +status: Completed +category: ধারণা +tags: ["security", "methodology", ""] +--- + +## এটা কি + +নিরাপত্তা বিশৃঙ্খলা ইঞ্জিনিয়ারিং অথবা SCE [বিশৃঙ্খলা ইঞ্জিনিয়ারিং](/bn/chaos-engineering/) এর উপর ভিত্তি করে একটি নিয়মানুবর্তিতা। কোলাহলপূর্ণ এবং দূষিত পরিস্থিতি সহ্য করার জন্য সিস্টেমের ক্ষমতার উপর আস্থা তৈরি করতে SCE একটি ডিসট্রিবিউটেড সিস্টেমে সক্রিয় নিরাপত্তা পরীক্ষা করে (proactive security experimentation)। নিরাপত্তা বিশৃঙ্খলা ইঞ্জিনিয়াররা এটি অর্জন করতে বৈজ্ঞানিক পদ্ধতি লুপ ব্যবহার করে, যার মধ্যে রয়েছে স্থির-স্থিতি (steady-state), হাইপোথিসিস, ক্রমাগত যাচাইকরণ, শিক্ষামূলক অভিজ্ঞতা (lesson learned) এবং প্রশমন (mitigation) বাস্তবায়ন। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +[সাইট নির্ভরযোগ্যতা প্রকৌশলী](/bn/site-reliability-engineering/) (SREs) এবং সাইবার নিরাপত্তা প্রকৌশলীদের প্রধান অগ্রাধিকার হল শূন্য ডাউনটাইম অর্জন এবং ব্যবসায়িক প্রভাব কমানোর লক্ষ্যে যত দ্রুত সম্ভব পরিষেবা পুনরুদ্ধার করা। SRE এবং সাইবার সিকিউরিটি ইঞ্জিনিয়াররা প্রাক-ব্যর্থতা (pre-failure) এবং পরবর্তী ব্যর্থতার ঘটনা উভয় পরিস্থিতির সাথেই মোকাবেলা করে। বেশিরভাগ সিকিউরিটি ইস্যুগুলো দ্রুতসময়ে খুঁজে বের করা এবং তা সমাধান করা চ্যালেঞ্জিং, যেগুলো অ্যাপ্লিকেশন বা সিস্টেম কার্যকারিতাকে প্রভাবিত করে। উপরন্তু, নিরাপত্তা ঘটনাগুলি সাধারণত ডেভেলপমেন্টের সময় চিহ্নিত করা কঠিন। + +## এটা কিভাবে সাহায্য করে + +নিরাপত্তা বিশৃঙ্খলা ইঞ্জিনিয়ারিং, [পর্যবেক্ষণযোগ্যতা](/bn/observability/) এবং সাইবার স্থিতিস্থাপকতা অনুশীলনকে ঘিরে তৈরি করা হয়েছে। +এর লক্ষ্য "অজানার অজানা" উন্মোচন করা এবং সিস্টেমে আস্থা তৈরি করা, সাইবার স্থিতিস্থাপকতা বৃদ্ধি এবং পর্যবেক্ষণযোগ্যতা উন্নত করা। + +ইঞ্জিনিয়ারিং দলগুলি ধীরে ধীরে জটিল অবকাঠামো, প্ল্যাটফর্ম এবং ডিসট্রিবিউটেড সিস্টেমের মধ্যে নিরাপত্তা উদ্বেগের (security concerns) জন্য বোঝাপড়ার উন্নতি ঘটাবে। SCE সমগ্র পণ্যের সাইবার স্থিতিস্থাপকতা উন্নত করে, লুকানো নিরাপত্তা সমস্যাগুলি উন্মোচন করে, ক্লাসিক্যাল ব্লাইন্ড স্পটগুলিকে উন্মোচন করে, এবং গুরুত্বপূর্ণ প্রান্তের ক্ষেত্রে (critical edge cases) দলগুলিকে প্রস্তুত করে৷ +এই পদ্ধতি SREs, [DevOps](/bn/devops/) এবং [DevSecOps](/bn/devsecops/) ইঞ্জিনিয়ারদের সিস্টেমে আস্থা তৈরি করতে, সাইবার স্থিতিস্থাপকতা বাড়াতে এবং পর্যবেক্ষণযোগ্যতা উন্নত করতে সাহায্য করে। \ No newline at end of file diff --git a/content/bn/self healing.md b/content/bn/self healing.md new file mode 100644 index 0000000000..90f1142271 --- /dev/null +++ b/content/bn/self healing.md @@ -0,0 +1,10 @@ +--- +title: স্ব নিরাময়(Self Healing) +status: Completed +category: সম্পত্তি +tags: ["infrastructure", "property"] +--- + +একটি স্ব-নিরাময় ব্যবস্থা কোনও মানুষের হস্তক্ষেপ ছাড়াই নির্দিষ্ট ধরণের ব্যর্থতা থেকে পুনরুদ্ধার করতে সক্ষম। +এটির একটি "অভিসৃতি(Convergence)" বা "নিয়ন্ত্রণ" লুপ রয়েছে যা সক্রিয়ভাবে সিস্টেমের প্রকৃত অবস্থা দেখে এবং অপারেটররা প্রাথমিকভাবে যে অবস্থায় চেয়েছিল তার সাথে তুলনা করে। +যদি কোন পার্থক্য থাকে (যেমন, কাঙ্খিত(desired) তুলনায় অ্যাপ্লিকেশানের কম দৃষ্টান্ত(instances) চলছে), এটি সংশোধনমূলক ব্যবস্থা নেবে (যেমন, নতুন দৃষ্টান্ত তৈরি করা) | diff --git a/content/bn/serverless.md b/content/bn/serverless.md new file mode 100644 index 0000000000..3bf75fb628 --- /dev/null +++ b/content/bn/serverless.md @@ -0,0 +1,18 @@ +--- +Title: সার্ভারহীন (Serverless) +Status: Completed +Category: প্রযুক্তি +tags: ["architecture", "", ""] +--- + +## এটা কি + +সার্ভারলেস হল একটি ক্লাউড নেটিভ ডেভেলপমেন্ট মডেল যা ডেভেলপারদের সার্ভার পরিচালনা না করেই অ্যাপ্লিকেশন তৈরি এবং চালানোর অনুমতি দেয়। এখনও সার্ভারহীনে সার্ভার আছে, কিন্তু তারা অ্যাপ ডেভেলপমেন্ট থেকে [বিমূর্ত](/bn/abstraction/)(abstracted) দূরে। একজন ক্লাউড প্রদানকারী (cloud provider) সার্ভার পরিকাঠামোর প্রভিশনিং, রক্ষণাবেক্ষণ এবং [স্কেলিং](/bn/scalability/) এর রুটিন কাজ পরিচালনা করে। ডেভেলপাররা তাদের কোড কেবল স্থাপনের (deployment) জন্য [কন্টেইনার](/bn/container/) এ প্যাকেজ করতে পারে। একবার স্থাপন করা হয়ে গেলে, সার্ভারহীন অ্যাপগুলি চাহিদার (demand) প্রতি সাড়া দেয় এবং প্রয়োজন অনুসারে স্বয়ংক্রিয়ভাবে সার্ভারের ক্ষমতা বাড়ায় এবং কমায়। পাবলিক ক্লাউড প্রদানকারীদের সার্ভারহীন অফারগুলি সাধারণত একটি ইভেন্ট-চালিত (event-driven) এক্সিকিউশন মডেলের মাধ্যমে চাহিদা অনুযায়ী পরিমাপ করা হয়। ফলস্বরূপ, যখন একটি সার্ভারহীন ফাংশন নিষ্ক্রিয় বসে থাকে, তখন এটির জন্য কিছু খরচ হয় না। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে +একটি স্ট্যান্ডার্ড [Infrastructure-as-a-service (IaaS)](/bn/infrastructure-as-a-service/) [ক্লাউড কম্পিউটিং](/bn/cloud-computing/) মডেলের অধীনে, +ব্যবহারকারীরা ধারণক্ষমতার ইউনিট আগে থেকে ক্রয় করে, যার অর্থ আপনি সর্বদা-অন সার্ভার কম্পোনেন্টগুলোর জন্য একটি পাবলিক ক্লাউড প্রদানকারীকে অর্থ প্রদান করেন যাতে করে আপনি আপনার অ্যাপগুলো চালাতে পারেন। এটা ব্যবহারকারীর দায়িত্ব উচ্চ চাহিদার সময়ে সার্ভারের ক্ষমতা বাড়ানো এবং যখন সেই ক্ষমতা আর প্রয়োজন হয় না হয় তখন সেটা কমানো। একটি অ্যাপ চালানোর জন্য প্রয়োজনীয় ক্লাউড অবকাঠামো সক্রিয় থাকে এমনকি যখন অ্যাপটি ব্যবহার করা হচ্ছে না। + +## এটা কিভাবে সাহায্য করে + +অন্যদিকে, সার্ভারহীন আর্কিটেকচারের ক্ষেত্রে, বিপরীতে, অ্যাপগুলি শুধুমাত্র প্রয়োজন অনুযায়ী চালু করা হয়। যখন একটি ইভেন্ট অ্যাপ কোড চালানোর জন্য ট্রিগার করে, তখন পাবলিক ক্লাউড প্রদানকারী ডাইনামিকভাবে সেই কোডের জন্য সম্পদ (resources) বরাদ্দ করে। কোডটি কার্যকর করা শেষ হলে ব্যবহারকারী অর্থ প্রদান বন্ধ করে দেয়। খরচ এবং দক্ষতাবৃদ্ধি সুবিধা ছাড়াও, সার্ভারলেস ডেভেলপারদের অ্যাপ স্কেলিং এবং সার্ভার প্রভিশনিংয়ের সাথে যুক্ত রুটিন এবং ছোট কাজ থেকে মুক্ত করে। সার্ভারহীন, রুটিন কাজ যেমন অপারেটিং সিস্টেম এবং ফাইল সিস্টেম পরিচালনা, নিরাপত্তা প্যাচ, লোড ব্যালেন্সিং, ক্যাপাসিটি ম্যানেজমেন্ট, স্কেলিং, লগিং এবং মনিটরিং সবই ক্লাউড সেবা প্রদানকারীর কাছে ছেড়ে দেয়। \ No newline at end of file diff --git a/content/bn/service discovery.md b/content/bn/service discovery.md new file mode 100644 index 0000000000..8de75de1ec --- /dev/null +++ b/content/bn/service discovery.md @@ -0,0 +1,24 @@ +--- +title: সার্ভিস ডিসকভারি (Service Discovery) +status: Completed +category: ধারণা +tags: ["networking", "", ""] +--- + + +## এটা কি? + +সার্ভিস ডিসকভারি হল পৃথক দৃষ্টান্ত খোঁজার প্রক্রিয়া যা একটি পরিষেবা তৈরি করে। +একটি সার্ভিস ডিসকভারি সরঞ্জাম বিভিন্ন নোড বা শেষ পয়েন্টগুলির (endponint) হিসেব রাখে যা একটি পরিষেবা তৈরি করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ক্লাউড নেটিভ স্থাপত্যগুলি গতিশীল এবং তরল, যার অর্থ তারা ক্রমাগত পরিবর্তনশীল। +একটি কন্টেইনারাইজড ([containerized](/bn/containerization/)) অ্যাপ(app) সম্ভবত তার জীবদ্দশায় একাধিকবার শুরু এবং বন্ধ হয়ে যাবে। +প্রতিবার এটি ঘটলে, এটির একটি নতুন ঠিকানা থাকবে এবং যে কোনও অ্যাপ যেটি একে খুঁজে পেতে চায় তার নতুন অবস্থানের তথ্য সরবরাহ করার জন্য একটি সরঞ্জামের প্রয়োজন থাকবে ৷ + +## এটা কিভাবে সাহায্য করে + +সার্ভিস ডিসকভারি নেটওয়ার্কের মধ্যে অ্যাপগুলির হিসেব রাখে যাতে প্রয়োজনের সময় তারা একে অপরকে খুঁজে পেতে পারে। +এটি পৃথক পরিষেবাগুলি খুঁজে পেতে এবং সম্ভাব্যভাবে সনাক্ত করার জন্য একটি সাধারণ স্থান প্রদান করে৷ সার্ভিস ডিসকভারি ইঞ্জিন হল ডাটাবেস-এর মতো টুল যা কোন পরিষেবা উপস্থিত থাকা এবং কীভাবে সেগুলিকে সনাক্ত করতে হয় সে সম্পর্কে তথ্য সঞ্চয় করে। + diff --git a/content/bn/service-mesh.md b/content/bn/service-mesh.md new file mode 100644 index 0000000000..91809070cf --- /dev/null +++ b/content/bn/service-mesh.md @@ -0,0 +1,21 @@ +--- +title: সার্ভিস মেশ (Service Mesh) +status: Completed +category: প্রযুক্তি +--- + +## এটা কি +একটি [মাইক্রোপরিষেবা](/bn/microservices-architecture/) বিশ্বে, অ্যাপ্লিকেশনগুলি বেশ কয়েকটি ছোট [পরিষেবা](/bn/service/) এ বিভক্ত যা একটি নেটওয়ার্কের মাধ্যমে যোগাযোগ করে। +আপনার ওয়াইফাই নেটওয়ার্কের মতো, কম্পিউটার নেটওয়ার্কগুলি অভ্যন্তরীণভাবে অনির্ভরযোগ্য, হ্যাকযোগ্য এবং প্রায়শই ধীর। সার্ভিস মেশ এই নতুন চ্যালেঞ্জগুলির সমাধান করে +পরিষেবাগুলির মধ্যে ট্র্যাফিক (যেমন, যোগাযোগ) পরিচালনা করে এবং [নির্ভরযোগ্যতা](/bn/reliability/), [অবজারভেবিলিটি](/bn/observability/), এবং +সমস্ত পরিষেবাজুড়ে সমানভাবে সুরক্ষা বৈশিষ্ট্য যুক্ত করে । + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে +মাইক্রোসার্ভিস আর্কিটেকচারে স্থানান্তর হওয়ার পরে, প্রকৌশলীরা এখন শত শত, সম্ভবত হাজার হাজার স্বতন্ত্র পরিষেবানিয়ে কাজ করছেন, যাদের সকলের যোগাযোগের প্রয়োজন। +এর অর্থ হলো নেটওয়ার্কে প্রচুর ট্র্যাফিক সামনে এবং পিছনে যাচ্ছে। সর্বোপরি, পৃথক অ্যাপ্লিকেশনগুলোর যোগাযোগগুলি এনক্রিপ্ট করার প্রয়োজন হতে পারে নিয়ন্ত্রক প্রয়োজনীয়তাগুলি সমর্থন করার জন্য এবং +অপারেশন টিমগুলিকে সাধারণ মেট্রিক্স সরবরাহ করতে পারে বা সমস্যাগুলি নির্ণয়ে সহায়তা করার জন্য ট্র্যাফিকের বিশদ অন্তর্দৃষ্টি সরবরাহ করতে পারে। পৃথক অ্যাপ্লিকেশনগুলিতে নির্মিত হলে, +এই বৈশিষ্ট্যগুলির প্রতিটি দলগুলির মধ্যে ঘর্ষণ তৈরি করবে এবং নতুন বৈশিষ্ট্যগুলির বিকাশকে ধীর করবে। + +## এটা কিভাবে সাহায্য করে +সার্ভিস মেশ পরিষেবা কোডগুলি পরিবর্তনের প্রয়োজন ছাড়াই ক্লাস্টারের সমস্ত পরিষেবাগুলিতে সমানভাবে নির্ভরযোগ্যতা, পর্যবেক্ষণ ক্ষমতা এবং সুরক্ষা বৈশিষ্ট্য যুক্ত করে। +সার্ভিস মেশ পরিষেবা এর আগে, সেই কার্যকারিতাটি প্রতিটি একক পরিষেবাতে একক ভাবে এনকোড করতে হতো, যা বাগ এবং প্রযুক্তিগত ঋণের সম্ভাব্য উৎস হয়ে ওঠে। diff --git a/content/bn/service-proxy.md b/content/bn/service-proxy.md new file mode 100644 index 0000000000..b2edfdd7fa --- /dev/null +++ b/content/bn/service-proxy.md @@ -0,0 +1,22 @@ +--- +title: সার্ভিস প্রক্সি (Service Proxy) +status: Completed +category: প্রযুক্তি +--- + +## এটা কি? + +একটি সার্ভিস প্রক্সি একটি প্রদত্ত পরিষেবাতে ([service](/bn/service/)) বা সেখান থেকে ট্র্যাফিককে বাধা দেয়, এতে কিছু যুক্তি প্রয়োগ করে, তারপর সেই ট্র্যাফিকটিকে অন্য পরিষেবাতে অগ্রস্থ করে। এটি মূলত একটি "গো-বিটুইন (go-between)" হিসাবে কাজ করে যা নেটওয়ার্ক ট্র্যাফিক সম্পর্কে তথ্য সংগ্রহ করে এবং/অথবা এটিতে নিয়ম প্রয়োগ করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +পরিষেবা যোগাযোগে পরিষেবার ট্র্যাক রাখতে (উপনাম নেটওয়ার্ক ট্র্যাফিক) এবং সম্ভাব্য রূপান্তর বা পুনঃনির্দেশ করতে, আমাদের ডেটা সংগ্রহ করতে হবে। +ঐতিহ্যগতভাবে, ডেটা সংগ্রহ এবং নেটওয়ার্ক ট্রাফিক ব্যবস্থাপনা সক্ষম করে এমন কোড প্রতিটি অ্যাপ্লিকেশনের মধ্যে অনুবিদ্ধ(embedded)করা হয়েছিল। + +## এটা কিভাবে সাহায্য করে + +একটি সার্ভিস প্রক্সি আমাদের এই কার্যকারিতা "বহিরাগত" করার অনুমতি দেয়। এটিকে আর অ্যাপের মধ্যে থাকার দরকার নেই। পরিবর্তে, এটি এখন প্ল্যাটফর্ম স্তরে অনুবিদ্ধ করা হয়েছে (যেখানে আপনার অ্যাপগুলি চলে)। + +পরিষেবাগুলির মধ্যে দারোয়ান হিসাবে কাজ করা, প্রক্সিগুলি কী ধরনের যোগাযোগ ঘটছে তার অন্তর্দৃষ্টি প্রদান করে৷ তাদের অন্তর্দৃষ্টির উপর ভিত্তি করে, তারা নির্ধারণ করে যে কোথায় একটি নির্দিষ্ট অনুরোধ পাঠাতে হবে বা এমনকি সম্পূর্ণরূপে অস্বীকার করতে হবে। + +প্রক্সিগুলি সমালোচনামূলক ডেটা সংগ্রহ করে, রাউটিং পরিচালনা করে (পরিষেবাগুলির মধ্যে সমানভাবে ট্র্যাফিক ছড়িয়ে দেওয়া বা কিছু পরিষেবা ভেঙে গেলে পুনরায় রুট করা), সংযোগগুলি এনক্রিপ্ট করা এবং ক্যাশে সামগ্রী (সম্পদ খরচ হ্রাস)। diff --git a/content/bn/service.md b/content/bn/service.md new file mode 100644 index 0000000000..e883a5ee09 --- /dev/null +++ b/content/bn/service.md @@ -0,0 +1,12 @@ +--- +title: পরিষেবা (Service) +status: Completed +category: ধারণা +tags: ["application", "fundamental", ""] +--- + +দয়া করে মনে রাখবেন যে আইটি (IT)-তে, পরিষেবার একাধিক অর্থ রয়েছে। +এই সংজ্ঞায়, আমরা আরও ঐতিহ্যগত একটির উপর ফোকাস করব: মাইক্রোসার্ভিসের মতো পরিষেবা ৷ +এমনকি যদি পরিষেবাগুলি মাইক্রোসার্ভিসেস থেকে আলাদা হয় তাও এটি সংক্ষিপ্ত এবং বিভিন্ন লোকের ভিন্ন মতামত থাকতে পারে। +একটি উচ্চ-স্তরের সংজ্ঞার জন্য, আমরা তাদের একই হিসাবে বিবেচনা করব। +অনুগ্রহ করে মাইক্রোসার্ভিস ([মাইক্রোসার্ভিসেস আর্কিটেকচার](/bn/microservices-architecture/)) সংজ্ঞা পড়ুন । diff --git a/content/bn/shift-left.md b/content/bn/shift-left.md new file mode 100644 index 0000000000..160961b0c6 --- /dev/null +++ b/content/bn/shift-left.md @@ -0,0 +1,35 @@ +--- +title: শিফট লেফট (Shift Left) +status: Completed +category: ধারণা +tags: ["methodology", "", ""] +--- + +## এটা কি + +লেফট শিফটে লেফট একটি সফ্টওয়্যার ডেভেলপমেন্ট জীবনচক্রের প্রাথমিক পর্যায়গুলি বোঝায়, +সফটওয়্যার জীবনচক্রকে এমন একটি লাইন হিসাবে বিবেচনা করো যেখানে পর্যায়গুলি বাম থেকে ডানে সম্পাদিত হয়। +শিফট লেফট হ'ল সফ্টওয়্যার ডেভেলপমেন্ট জীবনচক্রের প্রথম দিকে পরীক্ষা, নিরাপত্তা বা অন্যান্য উন্নয়ন অনুশীলন বাস্তবায়নের অনুশীলন, শেষের দিকে না করে। + +যদিও প্রাথমিকভাবে পরীক্ষার প্রক্রিয়াটি উল্লেখ করার জন্য ব্যবহৃত হয়েছিল, +শিফট লেফট এখন সফ্টওয়্যার ডেভেলপমেন্ট এবং [DevOps](/bn/devops/) এর অন্যান্য দিক যেমন নিরাপত্তা এবং স্থাপনার ক্ষেত্রেও প্রয়োগ করা যেতে পারে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +নিরাপত্তা সমস্যা, বাগ এবং সফ্টওয়্যার ত্রুটিগুলি ঠিক করা আরও কঠিন এবং ব্যয়বহুল হতে পারে +যদি তারা উন্নয়ন চক্রের দেরিতে বা স্থাপনের পরে আবিষ্কৃত হয়, +বিশেষত যদি সফ্টওয়্যারটি ইতিমধ্যে উৎপাদনের জন্য স্থাপন করা হয়ে থাকে। + +## এটা কিভাবে সাহায্য করে + +সফ্টওয়্যার বিকাশের জন্য একটি শিফট লেফট মানসিকতা গ্রহণ করার মাধমে দলগুলি উন্নয়ন জীবনচক্র জুড়ে পরীক্ষা এবং সুরক্ষা বাস্তবায়ন করতে পারে। +এবং পরীক্ষা ও সুরক্ষা এর কারণে দায়িত্ব উন্নয়ন দল জুড়ে ভাগ করা হয়। সফ্টওয়্যার প্রকৌশলী থেকে শুরু করে গুণমান নিশ্চিতকরণ থেকে অপারেশন পর্যন্ত +প্রত্যেকে একটি অ্যাপ্লিকেশনের স্থিতিশীলতা এবং নিরাপত্তা নিশ্চিত করতে ভূমিকা পালন করে। + +এছাড়াও, লেফট শিফট ক্রমাগত উন্নতি সক্ষম করে এবং উন্নয়নের জন্য জলপ্রপাত পদ্ধতির পরিবর্তে একটি [এজাইল](/bn/agile-software-development/) অনুসরণ করে। +দলগুলি ছোট ছোট উন্নতি করতে পারে এবং আগেই সমস্যাগুলি সনাক্ত করতে পারে। +এই পদ্ধতিটি ডিজাইন এবং আর্কিটেকচার পর্বের প্রথম দিকেই প্রকৌশলীদের নিরাপত্তা এবং সুরক্ষিত উন্নয়ন অনুশীলনগুলি গ্রহণ করতে দেয় । +উন্নয়ন চক্র জুড়ে পরীক্ষা, একটি সফ্টওয়্যার প্রকাশের আগে পরীক্ষার জন্য প্রয়োজনীয় সময় হ্রাস করে। + +অনেক সফ্টওয়্যার সরঞ্জাম এবং এসএএএস(SaaS) সমাধানগুলি এই অনুশীলনগুলিকে লেফট দিকে সরিয়ে নিতে সহায়তা করে। +এছাড়াও, লেফট শিফট একটি দলের মধ্যে উন্নত প্রক্রিয়া এবং সাংস্কৃতিক পরিবর্তনের মাধ্যমেও প্রয়োগ করা যেতে পারে। diff --git a/content/bn/site-reliability-engineering.md b/content/bn/site-reliability-engineering.md new file mode 100644 index 0000000000..017be87811 --- /dev/null +++ b/content/bn/site-reliability-engineering.md @@ -0,0 +1,29 @@ +--- +title: সাইট নির্ভরযোগ্যতা প্রকৌশল (Site Reliability Engineering) +status: Completed +category: ধারণা +tags: ["methodology", "", ""] +--- + +## এটা কি + +সাইট রিলাইবিলিটি ইঞ্জিনিয়ারিং বা এসআরই এমন একটি শৃঙ্খলা যা অপারেশন এবং সফ্টওয়্যার ইঞ্জিনিয়ারিংকে একত্রিত করে। +পরবর্তীটি বিশেষত অবকাঠামো এবং অপারেশন সমস্যাগুলিতে প্রয়োগ করা হয়। +অর্থাৎ, পণ্য এর বৈশিষ্ট্য তৈরির পরিবর্তে, সাইট নির্ভরযোগ্যতা প্রকৌশলীরা অ্যাপ্লিকেশন চালানোর জন্য সিস্টেম তৈরি করে। +[ডেভঅপস](/bn/devops/) এর সাথে মিল রয়েছে, তবে ডেভঅপস যখন উৎপাদনে কোড পাওয়ার দিকে মনোনিবেশ করে, +এসআরই নিশ্চিত করে যে উৎপাদনে চলমান কোড যেন সঠিকভাবে কাজ করে। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করেে + +অ্যাপ্লিকেশনগুলি [নির্ভরযোগ্যভাবে](/bn/reliability/) চালানো নিশ্চিত করার জন্য একাধিক ক্ষমতা প্রয়োজন, +কর্মক্ষমতা পর্যবেক্ষণ, সতর্কতা, [ডিবাগিং](/bn/debugging/) থেকে সমস্যা সমাধান পর্যন্ত। +এগুলি ছাড়া, সিস্টেম অপারেটররা কেবল সমস্যার প্রতিক্রিয়া জানাতে পারে বনাম সেগুলি এড়ানোর দিকে সক্রিয়ভাবে কাজ করতে পারে +- ডাউনটাইম কেবল সময়ের ব্যাপার হয়ে যায়। + +## এটা কিভাবে সাহায্য করে + +একটি এসআরই পদ্ধতি সফ্টওয়্যার উন্নয়ন প্রক্রিয়ার খরচ, সময় এবং প্রচেষ্টা হ্রাস করে +অন্তর্নিহিত সিস্টেমকে ক্রমাগত উন্নত করে। +সিস্টেমটি ক্রমাগত অবকাঠামো এবং অ্যাপ্লিকেশন উপাদানগুলি পরিমাপ এবং পর্যবেক্ষণ করে। +যখন কিছু ভুল হয়, সিস্টেম সাইট নির্ভরযোগ্যতা প্রকৌশলীদের কখন, কোথায় এবং কীভাবে এটি ঠিক করতে হবে তা নির্দেশ করে। +এই পদ্ধতিটি অপারেশনাল কাজগুলি স্বয়ংক্রিয় করে অত্যন্ত [স্কেলেবল](/bn/scalability/) এবং নির্ভরযোগ্য সফ্টওয়্যার সিস্টেম তৈরি করতে সহায়তা করে। diff --git a/content/bn/software-as-a-service.md b/content/bn/software-as-a-service.md index c9c3ffd83a..a9c4241615 100644 --- a/content/bn/software-as-a-service.md +++ b/content/bn/software-as-a-service.md @@ -1,7 +1,8 @@ --- Title: সফ্টওয়্যার এজ এ সার্ভিস(Software as a Service)(SaaS) -Status: Completed +Status: Deprecated Category: প্রযুক্তি +tags: ["fundamental", "platform", ""] --- ## এটা কি @@ -10,7 +11,7 @@ Category: প্রযুক্তি ## এটা যেসব সমস্যাতে দৃষ্টিপাত করে -প্রথাগতভাবে, ব্যবসায়িক সফ্টওয়্যারগুলো পৃথক কম্পিউটারে ইনস্টল করা হয়, যার রক্ষণাবেক্ষণ এবং আপডেট করার জন্য একজন প্রশাসকের প্রয়োজন হয়। উদাহরণ স্বরূপ: একটি প্রতিষ্ঠান গ্রাহক চাহিদা ব্যবস্থাপনা (CRM) এর জন্য স্ব-শরীর(on-premise) সফ্টওয়্যার ব্যবহার করতে পারে। এই সফ্টওয়্যারটি অভ্যন্তরীণ আইটি বিভাগ নিয়োগ করে ক্রয়, ইনস্টল, সুরক্ষা, রক্ষণাবেক্ষণ এবং নিয়মিত আপগ্রেড করা প্রয়োজন, যা আইটি টিমের উপর একটি বোঝাস্বরূপ ৷ লাইসেন্স, ইন্সটলেশন এবং সম্ভাব্য অতিরিক্ত হার্ডওয়্যারের সাথে যুক্ত আপ ফ্রন্ট খরচ নিষিদ্ধ হতে পারে। চাহিদার প্রতি সাড়া দেওয়াও কঠিন হতে পারে এবং [স্কেল](/scalability/) বৃদ্ধি বা পরিবর্তনের প্রতিক্রিয়ায় দ্রুত প্রয়োজন অনুযায়ী উপরে ও নিচে যাতায়াত সম্ভব না হতে পারে। +প্রথাগতভাবে, ব্যবসায়িক সফ্টওয়্যারগুলো পৃথক কম্পিউটারে ইনস্টল করা হয়, যার রক্ষণাবেক্ষণ এবং আপডেট করার জন্য একজন প্রশাসকের প্রয়োজন হয়। উদাহরণ স্বরূপ: একটি প্রতিষ্ঠান গ্রাহক চাহিদা ব্যবস্থাপনা (CRM) এর জন্য স্ব-শরীর(on-premise) সফ্টওয়্যার ব্যবহার করতে পারে। এই সফ্টওয়্যারটি অভ্যন্তরীণ আইটি বিভাগ নিয়োগ করে ক্রয়, ইনস্টল, সুরক্ষা, রক্ষণাবেক্ষণ এবং নিয়মিত আপগ্রেড করা প্রয়োজন, যা আইটি টিমের উপর একটি বোঝাস্বরূপ ৷ লাইসেন্স, ইন্সটলেশন এবং সম্ভাব্য অতিরিক্ত হার্ডওয়্যারের সাথে যুক্ত আপ ফ্রন্ট খরচ নিষিদ্ধ হতে পারে। চাহিদার প্রতি সাড়া দেওয়াও কঠিন হতে পারে এবং [স্কেল(Scale)](/bn/scalability/) বৃদ্ধি বা পরিবর্তনের প্রতিক্রিয়ায় দ্রুত প্রয়োজন অনুযায়ী উপরে ও নিচে যাতায়াত সম্ভব না হতে পারে। ## এটা কিভাবে সাহায্য করে diff --git a/content/bn/stateful-apps.md b/content/bn/stateful-apps.md new file mode 100644 index 0000000000..d715d53a4f --- /dev/null +++ b/content/bn/stateful-apps.md @@ -0,0 +1,21 @@ +--- +title: স্টেটফুল অ্যাপস (Stateful Apps) +status: Completed +category: ধারণা +tags: ["fundamental", "application", " "] +--- + +## এটা কি + +যখন আমরা স্টেটফুল (এবং [স্টেটলেস](/bn/stateless-apps/)) অ্যাপগুলি সম্পর্কে বলি, +স্টেট বলতে মূলত এমন ডেটাকে বুঝাই যা কোন অ্যাপ সচল রাখার জন্য সংরক্ষণ করতে হয়। উদাহরণস্বরূপ যেকোনো ধরনের অনলাইন শপ যা আপনার কার্টকে সংরক্ষন করে রাখে একটি স্টেটফুল অ্যাপ। + + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +একটি অ্যাপ্লিকেশন ব্যবহারের জন্য সাধারনত একাধিক অনুরোধের প্রয়োজন। যেমন অনলাইন ব্যাংকিং করতে, প্রথমে আপনার পাসওয়ার্ড দিয়ে আপনার প্রমাণীকরণ(authentication) করতে হবে(অনুরোধ # 1), তারপরে আপনি আপনার বন্ধুকে অর্থ স্থানান্তর করতে পারেন(অনুরোধ # 2), এবং অবশেষে, আপনি স্থানান্তরের বিবরণ দেখতে চাইবেন(অনুরোধ # 3)। সঠিকভাবে প্রক্রিয়াটি কাজ করতে, প্রতিটি পদক্ষেপের পূর্ববর্তী পদক্ষেপগুলি এবং ব্যাংকের প্রত্যেকের অ্যাকাউন্টের স্টেট মনে রাখতে হবে। আজকাল আমাদের ব্যবহার করা অধিকাংশ অ্যাপ্লিকেশন কমপক্ষে আংশিকভাবে স্টেটফুল, কারণ এগুলি ব্যবহারকারীর অভিজ্ঞতা উন্নয়ন করার জন্য ব্যাবহারকারির পছন্দনীয় বিষয়গুলো এবং সেটিংস জমা করে রাখে। + + +## এটা কিভাবে সাহায্য করে + +স্টেটফুল অ্যাপ্লিকেশনের স্টেট সংরক্ষণ করার কয়েকটি উপায় রয়েছে। সবচেয়ে সহজ উপায়টি হল স্টেট মেমোরিতে রাখা এবং কোথাও সংরক্ষণ না করা। এই প্রক্রিয়ার প্রধান সমস্যা হল, অ্যাপ্লিকেশনটি পুনরায় চালু করলে সমস্ত স্টেট হারিয়ে যাবে। এটি প্রতিরোধ করতে, স্টেটটি স্থানীয়ভাবে(ডিস্কে) বা ডাটাবেস সিস্টেমে সংরক্ষণ করা হয়। diff --git a/content/bn/stateless-apps.md b/content/bn/stateless-apps.md new file mode 100644 index 0000000000..b0ebc0b3ae --- /dev/null +++ b/content/bn/stateless-apps.md @@ -0,0 +1,18 @@ +--- +title: স্টেটলেস অ্যাপস (Stateless Apps) +status: Feedback Appreciated +category: প্রযুক্তি +tags: ["fundamental", "application", ""] +--- + +## এটা কি + +একটি স্টেটলেস অ্যাপ্লিকেশান সার্ভারে কোনও ক্লায়েন্ট সেশন (স্টেট) ডেটা সংরক্ষণ করে না যেখানে অ্যাপ্লিকেশনটি থাকে৷ প্রতিটি সেশন সঞ্চালিত হয় যেন এটি প্রথমবার ছিল এবং প্রতিক্রিয়াগুলি পূর্ববর্তী সেশনের ডেটার উপর নির্ভর করে না এবং প্রতিটি স্বল্পমেয়াদী অনুরোধ প্রক্রিয়া করার জন্য মুদ্রণ পরিষেবা, CDN (কন্টেন্ট ডেলিভারি নেটওয়ার্ক) বা ওয়েব সার্ভারগুলি ব্যবহার করার কার্যকারিতা প্রদান করে৷ উদাহরণস্বরূপ, কেউ সার্চ ইঞ্জিনে একটি প্রশ্ন অনুসন্ধান করছে এবং এন্টার বাটনে টিপেছে। কোনো কারণে এই সার্চিং অপারেশন ব্যাহত বা বন্ধ হয়ে গেলে, আপনাকে পুনরায় সার্চ করতে হবে কারণ আপনার পূর্ববর্তী সেশনের ডেটা সংরক্ষণ করা হয় না। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +স্টেটলেস অ্যাপ্লিকেশনগুলো স্থিতিস্থাপকতার (resiliency) সমস্যা মোকাবেলা করে, কারণ একটি [ক্লাস্টার](/bn/cluster/) জুড়ে বিভিন্ন পড স্বাধীনভাবে কাজ করতে পারে, যদিও একই সময়ে একাধিক অনুরোধ তাদের কাছে আসে। যদি কোন সমস্যা হয়, আপনি সহজেই অ্যাপ্লিকেশনটি পুনরায় চালু করতে পারেন এবং এটি অল্প বা কোন ডাউনটাইম ছাড়াই তার প্রাথমিক অবস্থায় ফিরে আসবে। যেমন, স্টেটলেস অ্যাপ্লিকেশনের সুবিধার মধ্যে রয়েছে স্থিতিস্থাপকতা (resiliency), নমনীয়তা (elasticity) এবং উচ্চ প্রাপ্যতা (high availability)। তবে, আমাদের বর্তমানে ব্যবহার করা বেশিরভাগ অ্যাপ্লিকেশন অন্তত আংশিকভাবে [stateful](/bn/stateful-apps/), যেহেতু তারা ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে ব্যবহারকারীর পছন্দ এবং সেটিংসের মতো জিনিস সংরক্ষণ করে। + +## এটা কিভাবে সাহায্য করে + +মোটকথা, একটি স্টেটলেস অ্যাপ্লিকেশনে আপনার ক্লাস্টারের জন্য দায়ী একমাত্র জিনিস হল কোড এবং অন্যান্য স্ট্যাটিক সামগ্রী, যা এটিতে হোস্ট করা হচ্ছে। এটাই স্টেটলেস অ্যাপস, পডটি মুছে ফেলার পরে কোনও ডেটাবেস পরিবর্তন করা হয়নি, কোনও লেখা নেই এবং কোনও ফাইল অবশিষ্ট নেই৷ স্টেটলেস [কন্টেইনার](/bn/container/) স্থাপন করা সহজ, এবং আপনাকে স্থায়ী স্টোরেজ (persistent storage) ভলিউমগুলিতে কন্টেইনার ডেটা সংরক্ষণের বিষয়ে চিন্তা করতে হবে না। আপনাকে ডেটা ব্যাক আপ করার বিষয়েও চিন্তা করতে হবে না। \ No newline at end of file diff --git a/content/bn/tightly-coupled-architectures.md b/content/bn/tightly-coupled-architectures.md new file mode 100644 index 0000000000..40cfcb33ba --- /dev/null +++ b/content/bn/tightly-coupled-architectures.md @@ -0,0 +1,20 @@ +--- +title: শক্তভাবে সংযোজিত স্থাপত্য (Tightly Coupled Architectures) +status: Completed +category: সম্পত্তি +tags: ["fundamental", "architecture", "property"] +--- + +শক্তভাবে সংযোজিত স্থাপত্য হল সেই ধরনের একটি স্থাপত্য শৈলী যেখানে বেশ কয়েকটি অ্যাপ্লিকেশন উপাদান পরস্পর নির্ভরশীল +([শিথিল সংযোজিত স্থাপত্য](/bn/loosely-coupled-architecture/)) এর বিপরীত দৃষ্টান্ত। +এর মানে হল যে একটি উপাদানের পরিবর্তন সম্ভবত অন্যান্য উপাদানগুলিকে প্রভাবিত করবে। +এটি সাধারণতে শিথিল সংযোজিত স্থাপত্য শৈলীর চেয়ে বাস্তবায়ন করা সহজ, +তবে ক্যাসকেডিং ব্যর্থতার জন্য একটি সিস্টেমকে আরও ঝুঁকিপূর্ণ করে তুলতে পারে। +তাদের উপাদানগুলির সমন্বিত রোলআউটগুলিরও প্রয়োজন দেখা দেয় +যা ডেভেলপারের উৎপাদনশীলতা কমিয়েে আনতে পারে। + +শক্তভাবে সংযোজিত স্থাপত্য প্রয়োগ আর্কিটেকচারগুলি তৈরি একটি মোটামুটি ঐতিহ্যবাহী উপায়। +যদিও [মাইক্রোসার্ভিস](/bn/microservices-architecture/) বিকাশের সমস্ত সেরা অনুশীলনের সাথে অগত্যা সামঞ্জস্যপূর্ণ নয় তবে +তা নির্দিষ্ট পরিস্থিতিতে দরকারী হতে পারে. +তারা দ্রুত এবং বাস্তবায়ন করা সহজ এবং +অনেকটা [monolithic applications](/bn/monolithic-apps/) এর মতই তারা প্রাথমিক উন্নয়ন চক্রকে দ্রুততর করতে পারে। diff --git a/content/bn/transport-layer-security.md b/content/bn/transport-layer-security.md new file mode 100644 index 0000000000..e67afff8a3 --- /dev/null +++ b/content/bn/transport-layer-security.md @@ -0,0 +1,29 @@ +--- +title: ট্রান্সপোর্ট লেয়ার সিকিউরিটি (Transport Layer Security ) +status: Completed +category: সম্পত্তি +tags: ["security", "networking", ""] +--- + +## এটা কি + +ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) হল একটি প্রোটোকল যা একটি নেটওয়ার্কের মাধ্যমে যোগাযোগের বর্ধিত নিরাপত্তা প্রদানের জন্য ডিজাইন করা হয়েছে। +এটি ইন্টারনেটের মাধ্যমে পাঠানো ডেটার নিরাপদ ডেলিভারি নিশ্চিত করে, +সম্ভাব্য পর্যবেক্ষণ এবং/অথবা ডেটার পরিবর্তন এড়ানো। +এই প্রোটোকলটি মেসেজিং, ই-মেইল ইত্যাদি অ্যাপ্লিকেশনে ব্যাপকভাবে ব্যবহৃত হয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +TLS ছাড়া, সংবেদনশীল তথ্য যেমন ব্রাউজিং অভ্যাস, ই-মেইল চিঠিপত্র, অনলাইন চ্যাট এবং কনফারেন্সিং কল +ট্রান্সমিশনের সময় অন্যদের দ্বারা সহজেই সনাক্ত করা যায় এবং পরিবর্তন করা যায়। +TLS সমর্থন করার জন্য সার্ভার এবং ক্লায়েন্ট অ্যাপ্লিকেশন সক্রিয় করা নিশ্চিত করে +তাদের মধ্যে প্রেরিত ডেটা এনক্রিপ্ট করা হয় এবং তৃতীয় পক্ষের দ্বারা দেখা যায় না। + +## এটা কিভাবে সাহায্য করে + +TLS এনকোডিং কৌশলগুলির সংমিশ্রণ ব্যবহার করে যা একটি নেটওয়ার্কে ডেটা প্রেরণ করার সময় নিরাপত্তা প্রদান করে। +TLS একটি ক্লায়েন্ট অ্যাপ্লিকেশন এবং একটি সার্ভারের মধ্যে একটি এনক্রিপ্ট করা সংযোগের জন্য অনুমতি দেয়, যেমন একটি ওয়েব ব্রাউজার এবং একটি ব্যাংকিং সাইটে৷ +এটি ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে তারা যে সার্ভারে কল করছে তা ইতিবাচকভাবে সনাক্ত করতে দেয়, +যা একটি প্রতারণামূলক সাইটে কথা বলার ক্লায়েন্টের ঝুঁকি হ্রাস করে। +এটি নিশ্চিত করে যে তৃতীয় পক্ষগুলি TLS ব্যবহার করে অ্যাপ্লিকেশনগুলির মধ্যে প্রেরিত ডেটা দেখতে এবং নিরীক্ষণ করতে অক্ষম, +যা সংবেদনশীল এবং ব্যক্তিগত তথ্য যেমন ক্রেডিট কার্ড নম্বর, পাসওয়ার্ড, অবস্থান ইত্যাদি রক্ষা করে। diff --git a/content/bn/version-control.md b/content/bn/version-control.md new file mode 100644 index 0000000000..7c4e690f49 --- /dev/null +++ b/content/bn/version-control.md @@ -0,0 +1,30 @@ +--- +title: সংস্করণ নিয়ন্ত্রণ (Version control) +status: Deprecated +category: প্রযুক্তি +draft: true +tags: ["methodology", "", ""] +--- + +## এটা কি + +উত্স নিয়ন্ত্রণ (বা সংস্করণ নিয়ন্ত্রণ) হল একটি নথিতে পরিবর্তনগুলি ট্র্যাকিং এবং পরিচালনা করার অনুশীলন। +এটি এমন একটি সিস্টেম যা সময়ের সাথে সাথে একটি ফাইল বা ফাইলের সেটে পরিবর্তন রেকর্ড করে যাতে আপনি পরে নির্দিষ্ট সংস্করণগুলি স্মরণ করতে পারেন। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +সংস্করণ নিয়ন্ত্রণ ব্যবস্থা নিম্নলিখিত সমস্যাগুলি সমাধান করতে কাজ করে, +সময়ের সাথে সাথে পরিবর্তন হওয়ার সাথে সাথে একটি নথি বা কোডবেস ব্যাক আপ করা, +ওভারল্যাপিং পরিবর্তনের সময় একাধিক ব্যবহারকারীদের দ্বন্দ্ব সমাধান করার অনুমতি দেয়, এবং +সময়ের সাথে পরিবর্তনের লগ সংরক্ষণ করা। +অ্যাপ্লিকেশন কোড প্রায়ই জটিল এবং গুরুত্বপূর্ণ ব্যবসায়িক প্রক্রিয়াগুলির জন্য গুরুত্বপূর্ণ হতে পারে, +তাই কে কী পরিবর্তন করেছে, কখন পরিবর্তন করেছে এবং কেন পরিবর্তন করেছে তা ট্র্যাক করা গুরুত্বপূর্ণ। +এছাড়াও, অনেকগুলি, যদি বেশিরভাগ অ্যাপ্লিকেশন না হয়, একাধিক বিকাশকারী দ্বারা পরিবর্তিত হয়, +এবং বিভিন্ন ডেভেলপারদের দ্বারা প্রবর্তিত পরিবর্তনগুলির মধ্যে প্রায়ই দ্বন্দ্ব থাকে। + +## এটা কিভাবে সাহায্য করে + +সংস্করণ নিয়ন্ত্রণ বিকাশকারীদের দ্রুত সরাতে এবং দক্ষতা সংরক্ষণ করতে সহায়তা করে । +পরিবর্তনের রেকর্ড সংরক্ষণ করার সময় এবং দ্বন্দ্ব সমাধানের জন্য একটি সুবিধা প্রদান করে। +এটি তাদের একটি সংগ্রহস্থলে অ্যাপ্লিকেশন কোড সঞ্চয় করতে এবং সহযোগিতাকে সহজ করার অনুমতি দেয়। +আধুনিক অ্যাপ্লিকেশন ডেভেলপমেন্ট তাদের কোড সঞ্চয় করার জন্য গিটের মতো সংস্করণ নিয়ন্ত্রণ ব্যবস্থার উপর অনেক বেশি নির্ভর করে। diff --git a/content/bn/vertical-scaling.md b/content/bn/vertical-scaling.md new file mode 100644 index 0000000000..9e1ed6103b --- /dev/null +++ b/content/bn/vertical-scaling.md @@ -0,0 +1,34 @@ +--- +title: উল্লম্ব স্কেলিং (Vertical Scaling) +status: Completed +category: ধারণা +tags: ["infrastructure", "", ""] +--- + +## এটা কি + +উল্লম্ব স্কেলিং, যা "উপর এবং নিচে স্কেলিং" নামেও পরিচিত, একটি কৌশল যেখানে +কাজের চাপ বাড়ার সাথে সাথে পৃথক [নোড](/bn/nodes/) এ CPU এবং মেমরি যোগ করার মাধ্যমে একটি সিস্টেমের ক্ষমতা বৃদ্ধি করা হয়। +ধরা যাক, আপনার কাছে 4GB RAM এর একটি কম্পিউটার আছে এবং এর ক্ষমতা 16GB RAM-এ বাড়াতে চান, +এটিকে উল্লম্বভাবে স্কেল করার অর্থ হল একটি 16GB RAM সিস্টেমে স্যুইচ করা। +(অনুগ্রহ করে একটি ভিন্ন স্কেলিং পদ্ধতির জন্য [অনুভূমিক স্কেলিং](/bn/horizontal-scaling/) দেখুন।) + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +যেহেতু একটি অ্যাপ্লিকেশনের চাহিদা সেই অ্যাপ্লিকেশন উদাহরণের বর্তমান ক্ষমতার বাইরে বেড়ে যায়, +আমাদের সিস্টেমকে স্কেল করার (ক্ষমতা যোগ করার) একটি উপায় খুঁজে বের করতে হবে। +আমরা হয় বিদ্যমান নোডগুলিতে আরও গণনা সংস্থান যুক্ত করতে পারি (উল্লম্ব স্কেলিং) +বা সিস্টেমে আরও নোড ([অনুভূমিক স্কেলিং](/bn/horizontal-scaling/))। +[মাপযোগ্যতা](/bn/scalability/) প্রতিযোগিতা, দক্ষতা, খ্যাতি এবং গুণমানে অবদান রাখে। + +## এটা কিভাবে সাহায্য করে + +উল্লম্ব স্কেলিং আপনাকে অ্যাপ্লিকেশন কোড পরিবর্তন না করেই আপনার সার্ভারের আকার পরিবর্তন করতে দেয়। +এটি অনুভূমিক স্কেলিং এর বিপরীতে, যেখানে অ্যাপটিকে অবশ্যই স্কেল করার জন্য প্রতিলিপিযোগ্য হতে হবে, সম্ভাব্য কোড আপডেটের প্রয়োজন। +উল্লম্ব স্কেলিং একটি বিদ্যমান অ্যাপ্লিকেশনের ক্ষমতা বৃদ্ধি করে +কম্পিউট রিসোর্স যোগ করা, অ্যাপটিকে আরও অনুরোধ প্রক্রিয়া করার অনুমতি দেয় এবং একই সাথে আরও কাজ করতে পারে। + +## সম্পর্কিত পদ + +* [অনুভূমিক স্কেলিং](/bn/horizontal-scaling/) +* [অটোস্কেলিং](/bn/auto-scaling/) diff --git a/content/bn/virtual-machine.md b/content/bn/virtual-machine.md new file mode 100644 index 0000000000..7e51bcf201 --- /dev/null +++ b/content/bn/virtual-machine.md @@ -0,0 +1,18 @@ +--- +title: ভার্চুয়াল মেশিন (Virtual Machine) +status: Completed +category: প্রযুক্তিবিদ্যা +tags: ["fundamental", "infrastructure", ""] +--- + +## এটা কি + +ভার্চুয়াল মেশিন (Virtual Machine) হল একটি কম্পিউটার যার অপারেটিং সিস্টেম একটি নির্দিষ্ট হার্ডওয়্যারের সাথে আবদ্ধ নয়। একটি ফিজিক্যাল কম্পিউটারে, একাধিক ভার্চুয়াল কম্পিউটার বানাতে ভার্চুয়াল মেশিনগুলি ভার্চুয়ালাইজেশনের (Virtualization) উপর নির্ভরশীল। এই বিচ্ছেদটি সংস্থা এবং পরিকাঠামো প্রদানকারীদের অন্তর্নিহিত হার্ডওয়্যারকে প্রভাবিত না করে সহজেই ভার্চুয়াল মেশিন তৈরি এবং ধ্বংস করতে দেয়। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ভার্চুয়াল মেশিন ভার্চুয়ালাইজেশনের সুবিধা নেয়। যখন একটি [বেয়ার-মেটাল (bare-metal)](/bn/bare-metal-machine/) মেশিন শুধুমাত্র একটি নির্দিষ্ট অপারেটিং সিস্টেমের সাথে আবদ্ধ থাকে, তখন মেশিনের সম্পদগুলি (Hardware resources) কতটা ভালভাবে ব্যবহার করা যেতে পারে তা কিছুটা সীমিত। এছাড়াও, যখন একটি অপারেটিং সিস্টেম একটি একক ফিজিক্যাল মেশিনের সাথে আবদ্ধ থাকে, তখন তার উপস্থিতি সরাসরি সেই হার্ডওয়্যারের উপর নির্ভরশীল। রক্ষণাবেক্ষণ বা হার্ডওয়্যারের ব্যর্থতার কারণে যদি ফিজিক্যাল মেশিন অফলাইন হয়ে পরে, তাহলে অপারেটিং সিস্টেমও অফলাইন হয়ে যায়। + +## এটা কিভাবে সাহায্য করে + +অপারেটিং সিস্টেম এবং ফিজিক্যাল হার্ডওয়ারের মধ্যে সরাসরি সম্পর্ক বাদ দিলে, বেয়ার-মেটাল মেশিনের বেশ কয়েকটি সমস্যা সমাধান হয়: প্রভিশনিং টাইম (Provisioning time), হার্ডওয়্যার ইউটিলাইজেশন (Hardware utilization) এবং রেজিলেন্সি (Resiliency)। এটিকে সমর্থন করার জন্য নতুন হার্ডওয়্যার কেনা এবং ইনস্টল বা কনফিগার না করেও, একটি নতুন কম্পিউটারের প্রভিশনিং টাইম নাটকীয়ভাবে উন্নত হয়। একটি ফিজিক্যাল হার্ডওয়ারে একাধিক ভার্চুয়াল মেশিন স্থাপন করে উপস্থিত থাকা ফিজিক্যাল হার্ডওয়্যারের সম্পদগুলিকে আরও ভালভাবে ব্যবহার করা যায়। ভার্চুয়াল মেশিনগুলি একটি নির্দিষ্ট হার্ডওয়ারের সাথে আবদ্ধ না থাকায়, ফিজিক্যাল মেশিনের চেয়ে বেশি স্থিতিস্থাপক (Resilient) হয়। যখন একটি ফিজিক্যাল মেশিনের অফলাইন হতে হয়, তখন এতে চলমান ভার্চুয়াল মেশিনগুলিকে অন্য মেশিনে স্থানান্তরিত করা যেতে পারে যেখানে সামান্য বা কোন ডাউনটাইম থাকেনা। diff --git a/content/bn/virtualization.md b/content/bn/virtualization.md new file mode 100644 index 0000000000..523426e133 --- /dev/null +++ b/content/bn/virtualization.md @@ -0,0 +1,31 @@ +--- +title: ভার্চুয়ালাইজেশন (Virtualization) +status: completed +category: প্রযুক্তি +tags: ["fundamental", "infrastructure", "methodology"] +--- + +## এটা কি + +ভার্চুয়ালাইজেশন, ক্লাউড নেটিভ কম্পিউটিং প্রসঙ্গে, +একটি শারীরিক কম্পিউটার নেওয়ার প্রক্রিয়াকে বোঝায়, কখনও কখনও একটি সার্ভার বলা হয়, +এবং এটি একাধিক বিচ্ছিন্ন অপারেটিং সিস্টেম চালানোর অনুমতি দেয়। +সেই বিচ্ছিন্ন অপারেটিং সিস্টেম এবং তাদের ডেডিকেটেড কম্পিউট রিসোর্স (সিপিইউ, মেমরি এবং নেটওয়ার্ক) +ভার্চুয়াল মেশিন বা ভিএম হিসাবে উল্লেখ করা হয়। +যখন আমরা একটি [ভার্চুয়াল মেশিন](/bn/virtual-machine/) সম্পর্কে কথা বলি, তখন আমরা একটি সফ্টওয়্যার-সংজ্ঞায়িত কম্পিউটারের কথা বলছি। +এমন কিছু যা দেখতে এবং একটি বাস্তব কম্পিউটারের মতো কাজ করে কিন্তু অন্যান্য ভার্চুয়াল মেশিনের সাথে হার্ডওয়্যার ভাগ করছে৷ +[ক্লাউড কম্পিউটিং](/bn/cloud-computing/) প্রাথমিকভাবে ভার্চুয়ালাইজেশন প্রযুক্তি দ্বারা চালিত। +উদাহরণ হিসেবে, আপনি AWS থেকে একটি "কম্পিউটার" লিজ দিতে পারেন - সেই কম্পিউটারটি আসলে একটি VM। + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে + +ভার্চুয়ালাইজেশন শারীরিক হার্ডওয়্যার ব্যবহারের উন্নতি সহ বেশ কয়েকটি সমস্যার সমাধান করে +একই ফিজিক্যাল মেশিনে আরও অ্যাপ চালানোর অনুমতি দিয়ে +নিরাপত্তার জন্য একে অপরের থেকে বিচ্ছিন্ন থাকা অবস্থায়। + +## এটা কিভাবে সাহায্য করে + +ভার্চুয়াল মেশিনে চলমান অ্যাপগুলির কোন সচেতনতা নেই যে তারা একটি শারীরিক কম্পিউটার ভাগ করছে। +ভার্চুয়ালাইজেশন ডেটাসেন্টার ব্যবহারকারীদের মিনিটের মধ্যে একটি নতুন "কম্পিউটার" (ওরফে একটি ভিএম) স্পিন করতে দেয় +একটি ডেটাসেন্টারে একটি নতুন কম্পিউটার যোগ করার শারীরিক সীমাবদ্ধতার বিষয়ে চিন্তা না করে। +ভিএমগুলি ব্যবহারকারীদের একটি নতুন ভার্চুয়াল কম্পিউটার পেতে সময় বাড়াতে সক্ষম করে। diff --git a/content/bn/zero-trust-architecture.md b/content/bn/zero-trust-architecture.md new file mode 100644 index 0000000000..7599e4fc8d --- /dev/null +++ b/content/bn/zero-trust-architecture.md @@ -0,0 +1,17 @@ +--- +title: জিরো ট্রাস্ট আর্কিটেকচার (Zero Trust Architecture) +status: Completed +category: নিরাপত্তা +tags: ["security", "", ""] +--- + +## এটি কি +জিরো ট্রাস্ট আর্কিটেকচার আইটি সিস্টেমের ডিজাইন এবং বাস্তবায়নের জন্য একটি নির্ধারিত পন্থা যেখানে 'ট্রাস্ট'(বিশ্বাস) সম্পূর্ণরূপে উপেক্ষা করা হয়। এই পন্থার মূল নীতি হল "বিশ্বাস নয়,সর্বদা যাচাই করা",ডিভাইস বা সিস্টেম,সিস্টেমের অন্যান্য অংশের সাথে যোগাযোগ করার সময় সর্বদা নিজেকে প্রথমে যাচাই করে। বর্তমানে অনেক নেটওয়ার্কে,কর্পোরেট নেটওয়ার্কের মধ্যে থাকা সিস্টেম এবং ডিভাইসগুলি অবাধে একটি অন্যটির সাথে যোগাযোগ করতে পারে কারণ সিস্টেম এবং ডিভাইসগুলি কর্পোরেট নেটওয়ার্ক পরিধির বিশ্বস্ত সীমার মধ্যে আবদ্ধ থাকে। অন্যদিকে জিরো ট্রাস্ট আর্কিটেকচার বিপরীত পদ্ধতি অবলম্বন করে যেখানে নেটওয়ার্ক পরিধির মধ্যেই সিস্টেমের অংশগুলি কোন যোগাযোগ স্থাপনের জন্য প্রথমে যাচাইকরণ পর্যায় অতিক্রম করে। + + +## এটা যেসব সমস্যাতে দৃষ্টিপাত করে +চিরাচরিত বিশ্বাস ভিত্তিক পদ্ধতি অনুসারে যেখানে সিস্টেম এবং ডিভাইসগুলি কর্পোরেট নেটওয়ার্কের পরিধির মধ্যে থাকে,অনুমান করা হয় যে,যেহেতু বিশ্বাস আছে,সেহেতু কোন সমস্যা নেই। অবশ্য,জিরো ট্রাস্ট আর্কিটেকচার স্বীকার করে যে বিশ্বাস(ট্রাস্ট) একটি দুর্বলতা। এখন ঘটনাচক্রে,এক আক্রমণকারী যদি একটি বিশ্বস্ত ডিভাইসের অ্যাক্সেস পায় তাহলে আক্রমণকারী "বিশ্বস্ত" নেটওয়ার্ক পরিধির মধ্যে থাকায় সিস্টেমটি আক্রমণের জন্য ঝুঁকিপূর্ণ হয়ে পড়ে এবং আক্রমণকারী সমগ্র সিস্টেম জুড়ে পার্শ্বীয়ভাবে স্থান পরিবর্তনে (move laterally) সক্ষম হয়,এইসব নির্ভর করে ডিভাইসে থাকা বিশ্বাস-মাত্রা এবং ডিভাইসে দেওয়া অ্যাক্সেসের ওপর। একটি জিরো ট্রাস্ট আর্কিটেকচারে,বিশ্বাসকে উপেক্ষা করা হয়,তাই আক্রমণের পৃষ্ঠ হ্রাস পায় ফলে,একজন আক্রমণকারীকে সিস্টেমের আরো অভ্যন্তরে যাওয়ার আগে যাচাইকরণ করাতে বাধ্য করা হয়। + + +## এটি কিভাবে সাহায্য করে +জিরো ট্রাস্ট আর্কিটেকচার পন্থার প্রধান সুবিধা হল এটি আক্রমণ পৃষ্ঠকে হ্রাস করে,নিরাপত্তা বৃদ্ধি করে। কর্পোরেট সিস্টেম থেকে বিশ্বাস অপসারণ করার ফলে নিরাপত্তা গেটের সংখ্যা এবং শক্তি বৃদ্ধি পায় যা একজন আক্রমণকারীকে অতিক্রম করতে হয় সিস্টেমের অন্যান্য অংশগুলিতে অ্যাক্সেস পাওয়ার জন্য। From 209483d5eb35e47c0ab4c75190ec25524e9a1e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Tue, 27 Jun 2023 11:13:30 +0200 Subject: [PATCH 140/295] Merge main into dev-fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- .github/settings.yml | 122 +++++++++++++++++++++++++++++++++++++------ CODEOWNERS | 50 +++++++++++------- 2 files changed, 138 insertions(+), 34 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index ed65aa1384..13e03ffb4a 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -31,21 +31,24 @@ collaborators: permission: admin - username: jihoon-seo - permission: maintain + permission: admin - username: iamNoah1 - permission: maintain + permission: admin + - username: thetwopct + permission: push + # English approvers (approver for all files in repository) - + - username: nate-double-u + permission: admin # Localization approvers + # l10n ko approvers # Note: seokho-son is both Maintainer (maintain) and Korean approver (push) # Note: jihoon-seo is both Maintainer (maintain) and Korean approver (push) - - username: Eviekim - permission: push - username: yunkon-kim permission: push @@ -112,21 +115,24 @@ collaborators: permission: push # l10n bn approvers - - username: mitul3737 + - username: Arindam200 permission: push - - username: Mouly22 + - username: Imtiaz1234 permission: push - - username: ikramulkayes + - username: mitul3737 permission: push - - username: Imtiaz1234 + - username: sajibAdhi permission: push # l10n es approvers - username: raelga permission: push + + - username: ramrodo + permission: push - username: electrocucaracha permission: push @@ -137,7 +143,7 @@ collaborators: - username: 92nqb permission: push - # l10n zh approvers + # l10n zh-cn approvers - username: hanyuancheung permission: push @@ -170,6 +176,35 @@ collaborators: - username: waleed318 permission: push + # l10n zh-tw approvers + - username: pichuang + permission: push + + - username: ydFu + permission: push + + # l10n ja approvers + - username: inductor + permission: push + + - username: kaitoii11 + permission: push + + - username: naonishijima + permission: push + + # l10n tr approvers + - username: aliok + permission: push + + - username: halil-bugol + permission: push + + - username: developer-guy + permission: push + + - username: eminalemdar + permission: push branches: @@ -190,6 +225,7 @@ branches: - seokho-son - iamNoah1 - jihoon-seo + - nate-double-u teams: [] enforce_admins: null required_linear_history: null @@ -206,7 +242,6 @@ branches: # Ko approvers users: - seokho-son - - Eviekim - jihoon-seo - yunkon-kim teams: [] @@ -318,10 +353,10 @@ branches: apps: [] # bn approvers users: - - mitul3737 - - Mouly22 - - ikramulkayes + - Arindam200 - Imtiaz1234 + - mitul3737 + - sajibAdhi teams: [] enforce_admins: null required_linear_history: null @@ -338,6 +373,7 @@ branches: # es approvers users: - raelga + - ramrodo - electrocucaracha - krol3 - 92nqb @@ -345,7 +381,7 @@ branches: enforce_admins: null required_linear_history: null - # l10n branch for zh contents only + # l10n branch for zh-cn contents only - name: dev-zh protection: required_pull_request_reviews: @@ -354,7 +390,7 @@ branches: required_status_checks: null restrictions: apps: [] - # zh approvers + # zh-cn approvers users: - hanyuancheung - Jacob953 @@ -398,3 +434,57 @@ branches: teams: [] enforce_admins: null required_linear_history: null + + # l10n branch for zh-tw contents only + - name: dev-tw + protection: + required_pull_request_reviews: + required_approving_review_count: 2 + require_code_owner_reviews: true + required_status_checks: null + restrictions: + apps: [] + # zh-tw approvers + users: + - pichuang + - ydFu + teams: [] + enforce_admins: null + required_linear_history: null + + # l10n branch for ja contents only + - name: dev-ja + protection: + required_pull_request_reviews: + required_approving_review_count: 2 + require_code_owner_reviews: true + required_status_checks: null + restrictions: + apps: [] + # ja approvers + users: + - inductor + - kaitoii11 + - naonishijima + teams: [] + enforce_admins: null + required_linear_history: null + + # l10n branch for tr contents only + - name: dev-tr + protection: + required_pull_request_reviews: + required_approving_review_count: 2 + require_code_owner_reviews: true + required_status_checks: null + restrictions: + apps: [] + # tr approvers + users: + - aliok + - halil-bugol + - developer-guy + - eminalemdar + teams: [] + enforce_admins: null + required_linear_history: null diff --git a/CODEOWNERS b/CODEOWNERS index 34a0919a53..1ca1fe6c0a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -6,41 +6,55 @@ # These owners will be default owners for everything in this repository. # These owners consist of Maintainers and English approvers. -* @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo +* @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u + + +# Approvers for English content +/content/en/ @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u # These are the owners (approvers) for localization contents # in each `/content/language/` directory. -# Approvers for Korean contents -/content/ko/ @seokho-son @Eviekim @jihoon-seo @yunkon-kim -# Approvers for Portuguese contents -/content/pt-br/ @edsoncelio @brunoguidone @jessicalins @MrErlison +# Approvers for Arabic contents +/content/ar/ @TarekMSayed @same7ammar @AShabana @arezk84 -# Approvers for Hindi contents -/content/hi/ @Garima-Negi @sayantani11 @anubha-v-ardhan @jayesh-srivastava +# Approvers for Bengali contents +/content/bn/ @Arindam200 @Imtiaz1234 @mitul3737 @sajibAdhi # Approvers for German contents /content/de/ @iamNoah1 @DaveVentura @CathPag @bcubk +# Approvers for Spanish contents +/content/es/ @raelga @ramrodo @electrocucaracha @krol3 @92nqb + +# Approvers for French contents +/content/fr/ @huats @fydrah @Krast76 @sestegra + +# Approvers for Hindi contents +/content/hi/ @Garima-Negi @sayantani11 @anubha-v-ardhan @jayesh-srivastava + # Approvers for Italian contents /content/it/ @fsbaraglia @ugho16 @annalisag-spark @sistella -# Approvers for Arabic contents -/content/ar/ @TarekMSayed @same7ammar @AShabana @arezk84 - -# Approvers for Bengali contents -/content/bn/ @mitul3737 @Mouly22 @ikramulkayes @Imtiaz1234 +# Approvers for Japanese contents +/content/ja/ @inductor @naonishijima @kaitoii11 -# Approvers for Spanish contents -/content/es/ @raelga @electrocucaracha @krol3 @92nqb +# Approvers for Korean contents +/content/ko/ @seokho-son @jihoon-seo @yunkon-kim -# Approvers for Chinese contents -/content/zh-cn/ @hanyuancheung @Jacob953 @Rocksnake @Submarinee +# Approvers for Portuguese contents +/content/pt-br/ @edsoncelio @brunoguidone @jessicalins @MrErlison -# Approvers for French contents -/content/fr/ @huats @fydrah @Krast76 @sestegra +# Approvers for Turkish contents +/content/tr/ @aliok @halil-bugol @developer-guy @eminalemdar # Approvers for Urdu contents /content/ur/ @Saim-Safdar @waleed318 + +# Approvers for Simplified Chinese contents +/content/zh-cn/ @hanyuancheung @Jacob953 @Rocksnake @Submarinee + +# Approvers for Traditional Chinese contents +/content/zh-tw/ @pichuang @ydFu From 30a54c3a3562098850b6167f20f7c9ee5898c88b Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Tue, 27 Jun 2023 22:28:06 +0200 Subject: [PATCH 141/295] [FR] Nodes - update after review Signed-off-by: Guillaume Bernard --- content/fr/nodes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/nodes.md b/content/fr/nodes.md index 38e06896ff..6329cef34d 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -22,7 +22,7 @@ Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'u ## Quel en est l'utilité -Un nœud fournit une unité de calcul (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. +Un nœud vous fournit une unité de calcul distincte (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. Dans une plate-forme ou une application [cloud native](/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. Idéalement, les nœuds individuels sont indifférenciés, c'est-à-dire que tout nœud d'un type particulier est indiscernable de tout autre nœud du même type. \ No newline at end of file From 1b215edf125bcc709f32555a7f2ff5fc20928c08 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Tue, 27 Jun 2023 22:31:52 +0200 Subject: [PATCH 142/295] [FR] Microservice-architecture - update after review Signed-off-by: Guillaume Bernard --- content/fr/microservices-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index e473700984..cd24b28b5f 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -32,5 +32,5 @@ L'architecture en microservices est une réponse à ces défis. La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une application plus grande sans avoir d'impact involontairement négatif sur le reste de l'application. -Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcouts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. +Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcoûts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. De nombreuses [technologies cloud native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. From decd777c1856b003e44b4d87c14410a92819f21e Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Tue, 27 Jun 2023 22:44:22 +0200 Subject: [PATCH 143/295] [fr] bare metal machine - fixes after review Signed-off-by: Guillaume Bernard --- content/fr/bare-metal-machine.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/content/fr/bare-metal-machine.md b/content/fr/bare-metal-machine.md index b7b97f4cc4..7c592f033c 100644 --- a/content/fr/bare-metal-machine.md +++ b/content/fr/bare-metal-machine.md @@ -7,28 +7,27 @@ tags: ["infrastructure", "", ""] ## Ce que c'est -Une machine physique, ou machine bare metal, fait référence à un ordinateur physique, plus précisément un serveur, qui possède un et un seul système d'exploitation. +Une machine physique, ou machine bare metal, fait référence à un ordinateur physique, plus précisément à un serveur, qui possède un et un seul système d'exploitation. En informatique moderne, la plupart des serveurs sont des [machines virtuelles](/virtual-machine/), il est donc important de faire cette distinction. Un serveur physique est généralement un ordinateur assez gros qui intègre du matériel puissant. -Installer un système d'exploitation et exécuter des applications directement sur ce matériel physique, +L'installation d'un système d'exploitation et l'exécution d'applications directement sur ce matériel physique, sans [virtualisation](/virtualization/), est ce que l'on appelle une machine physique, ou machine bare metal. ## Problème auquel il répond -En informatique, installer un seul système d'exploitation sur un ordinateur physique est le modèle historique. -Toutes les ressources de l'ordinateur physique sont disponibles directement pour le système d'exploitation et sans couche de virtualisation présente, il n'y a pas de latence induite par la traduction des instructions du système d'exploitation vers le matériel. +Associer un système d'exploitation à un ordinateur physique est le modèle original de l'informatique. +Toutes les ressources de l'ordinateur physique sont disponibles directement pour le système d'exploitation et sans couche de virtualisation présente, aucune latence n'est induite par la traduction des instructions du système d'exploitation vers le matériel. ## Quel en est l'utilité En dédiant toutes les ressources de calcul d'un ordinateur à un seul système d'exploitation, -on fournit théoriquement les meilleures performances possibles au système d'exploitation. -Si on doit exécuter une charge de travail qui doit avoir un accès extrêmement rapide aux ressources matérielles, -une machine physique peut être la bonne solution. +vous fournissez théoriquement les meilleures performances possibles au système d'exploitation. +Si vous devez exécuter une charge de travail qui doit avoir un accès extrêmement rapide aux ressources matérielles, +une machine physique peut être la solution adéquate. Dans le contexte des [applications cloud natives](/cloud-native-apps/), -on envisage généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. -On peut utiliser pour cela la [mise à l'échelle horizontale](/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). -Mais certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/vertical-scaling/) (ajouter plus de puissance à une machine existante) +vous envisagez généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. +Vous pouvez utiliser pour cela la [mise à l'échelle horizontale](/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). +Mais, certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/vertical-scaling/) (ajouter plus de puissance à une machine existante) et/ou une réponse extrêmement rapide du matériel. Dans ce cas, une machine physique est plus adaptée. -Les machines physiques permettent également des réglages avancés au niveau du matériel physique et éventuellement des pilotes matériels pour nous aider à accomplir notre tâche. - +Les machines physiques permettent également des réglages avancés au niveau du matériel physique et éventuellement des pilotes matériels pour vous aider à accomplir votre tâche. From 85d5fcb2761b09a52a481c809411f2acb7993c26 Mon Sep 17 00:00:00 2001 From: Seokho Son Date: Wed, 28 Jun 2023 13:22:24 +0900 Subject: [PATCH 144/295] Update CODEOWNERS to add castrojo Signed-off-by: Seokho Son --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 1ca1fe6c0a..acde5d165b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -10,7 +10,7 @@ # Approvers for English content -/content/en/ @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u +/content/en/ @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo # These are the owners (approvers) for localization contents From 5d50bb3019b58889b54322771c9d1db870dcd721 Mon Sep 17 00:00:00 2001 From: Seokho Son Date: Wed, 28 Jun 2023 13:24:40 +0900 Subject: [PATCH 145/295] Update settings.yml to add castrojo Signed-off-by: Seokho Son --- .github/settings.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/settings.yml b/.github/settings.yml index 13e03ffb4a..8b5c2ef5d2 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -44,6 +44,9 @@ collaborators: - username: nate-double-u permission: admin + - username: castrojo + permission: push + # Localization approvers # l10n ko approvers @@ -226,6 +229,7 @@ branches: - iamNoah1 - jihoon-seo - nate-double-u + - castrojo teams: [] enforce_admins: null required_linear_history: null From e5b2a7bfd19bb6baa843f78009d698ed624de6e0 Mon Sep 17 00:00:00 2001 From: sistella <56387955+sistella@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:57:44 +0200 Subject: [PATCH 146/295] [it] Localization term autoscaling (#1809) * localization term autoscaling Signed-off-by: Simone Stella * Update content/it/auto-scaling.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: sistella <56387955+sistella@users.noreply.github.com> * Update content/it/auto-scaling.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: sistella <56387955+sistella@users.noreply.github.com> * Update content/it/auto-scaling.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: sistella <56387955+sistella@users.noreply.github.com> * Update content/it/auto-scaling.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: sistella <56387955+sistella@users.noreply.github.com> --------- Signed-off-by: Simone Stella Signed-off-by: sistella <56387955+sistella@users.noreply.github.com> Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/auto-scaling.md | 24 ++++++++++++++++++++++++ content/it/containers-as-a-service.md | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 content/it/auto-scaling.md diff --git a/content/it/auto-scaling.md b/content/it/auto-scaling.md new file mode 100644 index 0000000000..f5f965e22a --- /dev/null +++ b/content/it/auto-scaling.md @@ -0,0 +1,24 @@ +--- +title: Autoscaling +status: Completed +category: Proprietà +tags: ["infrastruttura", "", ""] +--- + +Per *autoscaling* si intende la capacità di un sistema di essere [scalabile](/it/scalability/) automaticamente, tipicamente in termini di risorse di computazione. +Con un sistema dotato di autoscaling, le risorse sono automaticamente aggiunte al bisogno, così che possano corrispondere alla portata delle richieste degli utenti in quel periodo. +Il processo di autoscaling è variabile, ed è configurabile per modificare le risorse di un sistema in base a più metriche, come la memoria o il tempo di computazione. +I [managed service](/it/managed-service/) sono classicamente associati a funzionalità di autoscaling, dal momento che offrono più opzioni e implementazioni della maggior parte dei sistemi on-premise. + +In passato le infrastrutture e le applicazioni erano pensate perché le loro architetture potessero soddisfare persino i picchi di utilizzo dei sistemi. Questo comportava l'impiego di molte risorse in maniera non elastica, cioè che non variavano accordandosi al numero di richieste degli utenti. +Questa mancanza di elasticità comportava maggiori costi di business e/o perdita di business in caso di disservizi dovuti a un sovraccarico di richieste. + +Sfruttando il cloud, la [virtualizzazione](/it/virtualization/), e la [containerizzazione](/it/containerization/) delle applicazioni e delle rispettive dipendenze, +le organizzazioni possono sviluppare applicazioni scalabili in relazione alla portata delle richieste degli utenti. +Possono inoltre monitorare l'utilizzo delle applicazioni e sfruttare la loro scalabilità, offrendo così un'esperienza ottimale all'utente. Si consideri ad esempio l'aumento dei fruitori che Netflix deve affrontare il venerdì sera. +Con *Autoscaling out* si intende l'aggiunta dinamica di nuove risorse, come ad esempio: l'aumento del numero di server che permettano più streaming video concorrenti, server che potranno poi essere terminati una volta che il flusso si sarà normalizzato. + +## Voci collegate + +* [Scalabilità orizzontale](/it/horizontal-scaling/) +* [Scalabilità verticale](/it/vertical-scaling/) diff --git a/content/it/containers-as-a-service.md b/content/it/containers-as-a-service.md index b2aa6eb537..bd72deba5e 100644 --- a/content/it/containers-as-a-service.md +++ b/content/it/containers-as-a-service.md @@ -17,5 +17,5 @@ Senza servizi CaaS, i team di sviluppo software devono distribuire, gestire e mo ## In che modo aiuta -Quando si distribuiscono applicazioni containerizzate su una piattaforma CaaS, gli utenti acquisiscono visibilità sulle performance del sistema attraverso aggregazioni di log e strumenti di monitoraggio. I servizi CaaS includono anche funzionalità incorporate per l'[auto scaling](/it/auto-scaling/) e la gestione dell'orchestrazione. Ciò permette ai team di costruire [sistemi distribuiti](/it/distributed-systems/) ad alta visibilità e alta disponibilità. Inoltre, consentendo rapide distribuzioni, i servizi CaaS aumentano la velocità dei team di sviluppo. Mentre i container assicurano un obiettivo di distribuzione uniforme, i servizi CaaS diminuiscono i costi operativi a livello ingegneristico riducendo le risorse [DevOps](/it/devops/) necessarie per gestire una distribuzione. +Quando si distribuiscono applicazioni containerizzate su una piattaforma CaaS, gli utenti acquisiscono visibilità sulle performance del sistema attraverso aggregazioni di log e strumenti di monitoraggio. I servizi CaaS includono anche funzionalità incorporate per l'[autoscaling](/it/auto-scaling/) e la gestione dell'orchestrazione. Ciò permette ai team di costruire [sistemi distribuiti](/it/distributed-systems/) ad alta visibilità e alta disponibilità. Inoltre, consentendo rapide distribuzioni, i servizi CaaS aumentano la velocità dei team di sviluppo. Mentre i container assicurano un obiettivo di distribuzione uniforme, i servizi CaaS diminuiscono i costi operativi a livello ingegneristico riducendo le risorse [DevOps](/it/devops/) necessarie per gestire una distribuzione. From 86767b30e86f529c482cb9f11ba01e49c01350b1 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Thu, 29 Jun 2023 15:29:29 +0200 Subject: [PATCH 147/295] [it] localizzazione termine event streaming (#1633) * Added event streaming italian localization Signed-off-by: Paolo * Apply suggestions from code review Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/event-streaming.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/event-streaming.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/it/event-streaming.md diff --git a/content/it/event-streaming.md b/content/it/event-streaming.md new file mode 100644 index 0000000000..87271a25b5 --- /dev/null +++ b/content/it/event-streaming.md @@ -0,0 +1,30 @@ +--- +title: Event Streaming +status: Completed +category: Concetto +--- + +## Cos'è + +L'_event streaming_ è un approccio nel quale un software invia i dati di un evento da un'applicazione a un'altra per comunicare costantemente cosa stanno facendo. +Si immagini un servizio che trasmetta ogni cosa che faccia a tutti gli altri servizi. +Ogni attività intrapresa da un servizio è chiamata evento, da cui _event streaming_. +Per esempio, NASDAQ ottiene aggiornamenti sui prezzi di azioni e materie prime ogni secondo. +Se si ha un'applicazione che monitora uno specifico insieme di azioni, ci si aspetta di ricevere quelle informazioni in tempo quasi reale. +Yahoo! Finance, per esempio, fornisce un'[API](/it/application-programming-interface/) che recupera i dati da NASDAQ e invia (o trasmette) quelle informazioni (o eventi) dalla loro applicazione a qualunque applicazione che si iscrive al servizio. +I dati inviati, insieme ai loro cambiamenti (il prezzo delle azioni) sono gli eventi, mentre il processo di consegnarli ad un'applicazione è l'_event streaming_. + +## Quali problematiche affronta + +Tradizionalmente, Yahoo! Finance avrebbe usato singole richieste TCP. +Questo sarebbe stato molto inefficiente, in quanto avrebbe richiesto la creazione di una connessione per ogni evento. +Man mano che i dati diventano più in tempo reale, rendere scalabile questo tipo di soluzione diventa inefficiente. +Aprire una connessione una sola volta e permettere agli eventi di fluire è una soluzione ideale per il funzionamento in tempo reale. +La quantità di dati generati sta crescendo in modo esponenziale e contestualmente il loro stato è in continuo cambiamento. Gli sviluppatori e gli utenti devono essere in grado di visualizzare tali dati in tempo pressoché reale. + +## In che modo aiuta + +L'_event streaming_ permette di comunicare i cambiamenti ai dati dalla sorgente al destinatario. +Invece di attendere che i servizi richiedano l'informazione, un servizio trasmette costantemente tutti i suoi eventi (o attività). +Non si preoccupa di ciò che accade alle informazioni stesse. +Si occupa soltanto di fare quello che deve e di trasmetterlo, rimanendo così completamente indipendente da qualunque altro servizio. From 8296addce546cc49a17269fcc4b2cf5b4df7c0ef Mon Sep 17 00:00:00 2001 From: Haseeb Ansari <47222685+haseeb-xd@users.noreply.github.com> Date: Sat, 1 Jul 2023 01:31:17 +0500 Subject: [PATCH 148/295] [EN] add Pod (#2001) Adding Pod to en. Signed-off-by: Haseeb Ansari <47222685+haseeb-xd@users.noreply.github.com> Signed-off-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Seokho Son Signed-off-by: Nate W. Co-authored-by: Noah Ispas Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Co-authored-by: Seokho Son Co-authored-by: Nate W. --- content/en/pod.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 content/en/pod.md diff --git a/content/en/pod.md b/content/en/pod.md new file mode 100644 index 0000000000..6bd9f4231d --- /dev/null +++ b/content/en/pod.md @@ -0,0 +1,33 @@ +--- +title: Pod +status: Completed +category: concept +tags: ["infrastructure", "fundamental", ""] +--- + +## What it is + +Within a [Kubernetes](/kubernetes/) environment, a pod acts as the most basic deployable unit. +It represents an essential building block for deploying and managing containerized applications. +Each pod contains a single application instance and can hold one or more [containers](/container/). +Kubernetes manages pods as part of a larger deployment and can scale pods [vertically](/vertical-scaling/) or [horizontally](/horizontal-scaling/) as needed. + +## Problem it addresses + +While containers generally act as independent units that run and control a particular workload, +there are cases when containers need to interact and be controlled in a tightly coupled manner. + +If each of these closely related containers were managed individually, it would lead to redundant management tasks. +For example, the operator would have to repeatedly determine the placement of related containers to ensure they remain together. +And although the lifecycles of these related containers need to be synchronized, they can only be managed individually. + + +## How it helps + +Pods bundle closely tied containers into a single unit, significantly simplifying container operations. +For instance, auxiliary containers are often used alongside the main container to add additional functionalities or to set up global configurations. +Examples include containers that inject and apply basic settings to the main container, +_sidecar_ (containers) that handle network traffic routing for the main container (see [service mesh](/service-mesh/)), +or containers collecting logs in conjunction with each container. + +Memory and CPU allocation can be defined either on a pod level, allowing the containers inside to share resources in a flexible way, or per container. From 7dc99dcfbd9d6edea4b2241aec1592459c4d3194 Mon Sep 17 00:00:00 2001 From: marianogg9 Date: Sun, 2 Jul 2023 01:55:46 +0200 Subject: [PATCH 149/295] [ES] added content/es/service-proxy (#1992) * added content/es/service-proxy * reworded enrutamiento && added encriptan to wordlist * reworded encripted part to avoid adding new terms * added PR suggestions * adding PR suggerences * added PR suggestions * added Proxy to wordlist * added PR suggestions Signed-off-by: marianogg9 --- content/es/.wordlist.txt | 1 + content/es/service-proxy.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 content/es/service-proxy.md diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index e8a6dd481d..22e7f38794 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -228,6 +228,7 @@ profesionistas properties property propose +Proxy proyecto PRs pull diff --git a/content/es/service-proxy.md b/content/es/service-proxy.md new file mode 100644 index 0000000000..fe15d0498d --- /dev/null +++ b/content/es/service-proxy.md @@ -0,0 +1,30 @@ +--- +title: Servicio de Proxy +status: Completed +category: Tecnología +tags: ["networking", "", ""] +--- + +## ¿Qué es? + +Un servicio de Proxy intercepta tráfico desde o hacia un [servicio](/es/service/) determinado, +aplicando algún tipo de lógica predefinida y luego envía ese tráfico hacia otro servicio. +En esencia actúa como un agente intermedio que recolecta información referente al tráfico de red y/o aplica reglas al mismo. + +## Problema que aborda + +Para mantener un seguimiento de la comunicación entre servicios (también llamado tráfico de red) y +potencialmente transformar o redirigir ese tráfico, se necesita recolectar información. +Tradicionalmente, el código que permite la recolección de datos y el manejo del tráfico de red estaba incluido dentro de cada aplicación. + +## ¿Cómo ayuda? + +Un servicio de Proxy nos permite separar esta funcionalidad. +Las aplicaciones ya no tienen que incluir este código. +En cambio, ahora será parte de la capa de plataforma (donde la aplicación se ejecuta) + +Actuando como protectores de entrada entre servicios, los intermediarios proveen un panorama del tipo de comunicación que sucede. +Basados en dicho panorama, ellos determinan dónde enviar una petición particular o delegarla por completo. + +Los servicios de Proxy recolectan información crítica, manejan el enrutamiento (distribuyendo el tráfico equitativamente entre servicios o redirigiendo el mismo si algún servicio se rompiera), +se encargan del cifrado de conexiones y acumulan contenido (reduciendo el consumo de recursos). \ No newline at end of file From 121c6b62a993e472bcb3c6c938d33598e4c7d448 Mon Sep 17 00:00:00 2001 From: Rosa Wu Date: Wed, 28 Jun 2023 01:02:25 +0800 Subject: [PATCH 150/295] [zh-tw] Localize 'Cloud Computing' Signed-off-by: Rosa Wu Update cloud-computing.md --- content/zh-tw/cloud-computing.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 content/zh-tw/cloud-computing.md diff --git a/content/zh-tw/cloud-computing.md b/content/zh-tw/cloud-computing.md new file mode 100644 index 0000000000..92f932b2e8 --- /dev/null +++ b/content/zh-tw/cloud-computing.md @@ -0,0 +1,18 @@ +--- +title: 雲端運算 +status: Completed +category: 概念 +tags: ["方法論", "基礎設施", ""] +--- + +## 什麼是雲端運算 {#what-it-is} + +雲端運算是一種通過網際網路提供計算資源(如CPU、網路和磁碟功能)的服務,使用戶可以遠端存取位於實體位置的運算資源。一般會根據雲端基礎設施是用於專門為組織而設或是共享用於開放式服務,將其區分為私有雲和公有雲。 + +## 解決的問題 {#problem-it-addresses} + +普遍來說,當組織需要擴展其運算資源時,會面臨兩個主要挑戰:一方面是購買、支援和設計新的設施來托管物理伺服器和網路,另一方面則是擴充和維護現有設施。透過雲端運算,組織能夠透過外包部分的運算需求以解決這些考驗。 + +## 如何幫助 {#how-it-helps} + +雲端供應商讓組織可以按需租用計算資源並根據使用情況付費,從而帶來兩大優勢。第一是組織可以專注於產品或服務,無需等待、計劃和投入資源於新的物理基礎設施。其次,組織可以根據實際需求隨時[擴充](/zh-tw/scalability/)其運算資源。透過雲端運算,組織可以彈性選擇所需的基礎設施,以適應不斷變化的需求。 From 5c947177cab3b2611709e77caf388d72ccc2e364 Mon Sep 17 00:00:00 2001 From: Guillaume BERNARD Date: Wed, 5 Jul 2023 14:38:33 +0200 Subject: [PATCH 151/295] [EN] update Virtualization (#2189) * [en] Virtualization - remove redundant sentence Signed-off-by: Guillaume Bernard * [en] Virtualization - remove redundant sentence Signed-off-by: Guillaume Bernard --------- Signed-off-by: Guillaume Bernard --- content/en/virtualization.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/virtualization.md b/content/en/virtualization.md index abf7ba25d8..8a3c694d55 100644 --- a/content/en/virtualization.md +++ b/content/en/virtualization.md @@ -28,4 +28,3 @@ whilst still being isolated from each other for security. Apps running on virtual machines have no awareness that they are sharing a physical computer. Virtualization also allows the users of the datacenter to spin up a new "computer" (aka a VM) in minutes without worrying about the physical constraints of adding a new computer to a datacenter. -VMs also enable users to speed up the time to get a new virtual computer. From 25d0ae8e80fb66304fd223c0b25de74ee8561b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 6 Jul 2023 17:57:13 +0200 Subject: [PATCH 152/295] [fr] remove 's' on loosely-coupled-architecture.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- ...y-coupled-architectures.md => loosely-coupled-architecture.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/fr/{loosely-coupled-architectures.md => loosely-coupled-architecture.md} (100%) diff --git a/content/fr/loosely-coupled-architectures.md b/content/fr/loosely-coupled-architecture.md similarity index 100% rename from content/fr/loosely-coupled-architectures.md rename to content/fr/loosely-coupled-architecture.md From b1e1fcf3eaf2cef4beaff6c06a96ebda280fdd0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 6 Jul 2023 20:08:18 +0200 Subject: [PATCH 153/295] [fr] Localize search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/search.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 content/fr/search.md diff --git a/content/fr/search.md b/content/fr/search.md new file mode 100644 index 0000000000..ad61a29722 --- /dev/null +++ b/content/fr/search.md @@ -0,0 +1,4 @@ +--- +title: Résultats de recherche +layout: search +--- \ No newline at end of file From b0aa2f3219766a53284fbc6d66f2877e93b1260f Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Thu, 6 Jul 2023 12:12:43 -0400 Subject: [PATCH 154/295] Reput the french translation for container Signed-off-by: Christophe Sauthier --- content/fr/container.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/fr/container.md diff --git a/content/fr/container.md b/content/fr/container.md new file mode 100644 index 0000000000..10bfdbc270 --- /dev/null +++ b/content/fr/container.md @@ -0,0 +1,32 @@ +--- +title: Conteneurs +status: Completed +category: technology +tags: ["application", "fundamental", ""] +--- + +## Ce que c'est + +Un conteneur est un processus qui fonctionne avec des contraintes de ressources et de capacités gérées par le système d'exploitation d'un ordinateur. +Les fichiers accessibles au processus du conteneur sont regroupés dans une image de conteneur. +Les conteneurs sont exécutés les uns à côté des autres sur la même machine, +mais habituellement le système d'exploitation empêche les processus de conteneurs différents d'interagir les uns avec les autres. + +## Problème auquel il répond + +Avant que les conteneurs ne soient disponibles, des machines dédiées étaient nécessaires pour faire fonctionner des applications. +Chaque machine nécessitait son propre système d'exploitation, qui utilisait du CPU, de la mémoire et de l'espace disque, +tout cela pour faire fonctionner une simple application. +De plus, la maintenance, la mise à jour et le lancement d'un système d'exploitation sont des sources de travail en plus. + +## Quel en est l'utilité + +Les conteneurs partagent le même système d'exploitation et ses ressources machine, +et se répartissent la surcharge des ressources dues au système d'exploitation, permettant un usage efficace de la machine physique. +Cette possibilité est uniquement offerte, car les conteneurs sont habituellement limités dans leurs interactions mutuelles. +Ceci permet de faire fonctionner beaucoup plus d'applications sur la même machine physique. + +Il y a cependant des limitations. +Étant donné que les conteneurs partagent le même système d'exploitation, les processus peuvent être considérés moins sécurisés que leurs alternatives. +Les conteneurs nécessitent également des limites sur les ressources partagées. +Pour garantir les ressources, les administrateurs doivent contraindre et limiter l'utilisation de la mémoire et du CPU afin de ne pas impacter les performances des autres applications. From df7b59943d2948c5a6ac5d87eb61327f6596338a Mon Sep 17 00:00:00 2001 From: kaiyee0 Date: Fri, 30 Jun 2023 17:12:22 +0800 Subject: [PATCH 155/295] Add content/zh-tw/zero-trust-architecture.md Signed-off-by: kaiyee0 --- content/zh-tw/zero-trust-architecture.md | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/zh-tw/zero-trust-architecture.md diff --git a/content/zh-tw/zero-trust-architecture.md b/content/zh-tw/zero-trust-architecture.md new file mode 100644 index 0000000000..726fbae4cd --- /dev/null +++ b/content/zh-tw/zero-trust-architecture.md @@ -0,0 +1,25 @@ +--- +title: 零信任架構 +status: Completed +category: 概念 +tags: ["安全性", "", ""] +--- + +## 是什麼 {#what-it-is} + +零信任架構是一種完全移除信任的 IT 系統設計與實作方法。 +其核心的原則是「永不信任,始終驗證」,系統中的裝置或系統本身在與其他元件溝通前,都必須先驗證自己的身份。 +在許多企業網路中,由於系統與裝置都在企業網路的邊界內,因此他們大多時候可以自由溝通。 +然而,零信任架構卻採取了相反的做法:即使在網路邊界內,系統中的元件在進行任何溝通前,都必須先通過驗證。 + +## 解決的問題 {#problem-it-addresses} + +在傳統基於信任的方法中,之所以認為存在於企業網路邊界內的系統與裝置是安全的,是因為他們都在受信任的網路邊界內。 +但是零信任架構認為,這種信任模式實際上存在著弱點。 +如果攻擊者取得了對信任裝置的存取權限,因為攻擊者已經在受信任的網路邊界內,他就可以在系統中自由移動,並且獲得系統賦予該裝置的信任與權限,進而使系統容易遭受攻擊。 +不過在零信任的架構下,因為信任被移除了,攻擊者在進入系統的下一個環節前,都必須先通過驗證,所以進而減少了攻擊面。 + +## 如何幫助 {#how-it-helps} + +採用零信任架構的主要好處就是減少了攻擊面,讓系統變得更安全。 +從企業系統中移除信任,就可以讓攻擊者必須通過更多更強的安全閘門,才能獲得對系統其他區域的存取權限。 \ No newline at end of file From 6fae8b0b0798767004aca82b9d04ec2debc40ea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Mon, 10 Jul 2023 14:48:41 +0200 Subject: [PATCH 156/295] [fr] localize idempotence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/idempotence.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 content/fr/idempotence.md diff --git a/content/fr/idempotence.md b/content/fr/idempotence.md new file mode 100644 index 0000000000..cc20e3deda --- /dev/null +++ b/content/fr/idempotence.md @@ -0,0 +1,10 @@ +--- +title: Idempotence +status: Completed +category: Property +tags: ["property", "", ""] +--- + +En mathématiques ou en informatique, l'idempotence décrit une opération qui aboutit toujours au même résultat, +peu importe combien de fois vous l'exécutez. +Si les paramètres sont identiques, une opération idempotente n'affectera pas l'application qu'elle appelle. From e8b77c7ea77a5554a34ab8a6450c07a0f6bc03a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Este-Gracias?= Date: Tue, 11 Jul 2023 03:23:20 +0200 Subject: [PATCH 157/295] [fr] Fix merge conflicts on config.toml (#2180) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- config.toml | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/config.toml b/config.toml index ddf13462a2..9c28f920b9 100644 --- a/config.toml +++ b/config.toml @@ -70,7 +70,7 @@ weight = 1 [languages.hi] title = "क्लाउड नेटिव शब्दावली" description = "CNCF क्लाउड नेटिव शब्दावली परियोजना का उद्देश्य क्लाउड नेटिव एप्लिकेशन के बारे में बात करते समय प्रयोग किए जाने वाले सामान्य शब्दों के संदर्भ के रूप में उपयोग किया जाना है।" -languageName ="हिन्दी(Hindi)" +languageName ="हिन्दी (Hindi)" contentDir = "content/hi" weight = 2 @@ -91,28 +91,28 @@ weight = 4 [languages.ko] title = "클라우드 네이티브(Cloud Native) 용어집" description = "CNCF 클라우드 네이티브 용어집 프로젝트는 클라우드 네이티브 애플리케이션을 주제로 대화를 나눌 때 참조할 수 있는 공통의 용어 제공을 목표로 한다." -languageName ="한국어(Korean)" +languageName ="한국어 (Korean)" contentDir = "content/ko" weight = 5 [languages.es] title = "Cloud Native Glosario" description = "El proyecto de CNCF Cloud Native Glosario pretende ser usado como una referencia para los terminos comunes usados cuando se habla acerca de las aplicaciones nativas para la nube." -languageName ="Español(Spanish)" +languageName ="Español (Spanish)" contentDir = "content/es" weight = 6 [languages.zh-cn] title = "Cloud Native(云原生) Glossary" description = "CNCF 云原生 Glossary 项目旨在用作讨论云原生应用程序时常用术语的参考" -languageName ="中文(Chinese)" +languageName ="简体中文 (Simplified Chinese)" contentDir = "content/zh-cn" weight = 7 [languages.bn] title = "ক্লাউড নেটিভ শব্দকোষ" description = "CNCF ক্লাউড নেটিভ শব্দকোষ প্রকল্পটি ক্লাউড নেটিভ অ্যাপ্লিকেশন সম্পর্কে কথা বলার সময় ব্যবহৃত সাধারণ পদগুলির জন্য একটি রেফারেন্স হিসাবে ব্যবহার করার উদ্দেশ্যে।" -languageName = "বাংলা(Bengali)" +languageName = "বাংলা (Bengali)" contentDir = "content/bn" weight = 8 @@ -123,12 +123,19 @@ languageName ="Deutsch" contentDir = "content/de" weight = 9 +[languages.ur] +title = "کلاؤڈ کی مقامی لغت" +description = "CNCF کلاؤڈ کی مقامی لغت کا مقصد کلاؤڈ مقامی ایپلی کیشنز کے بارے میں بات کرتے وقت استعمال ہونے والی عام اصطلاحات کے حوالے کے طور پر استعمال کرنا ہے۔" +languageName ="اردو (Urdu)" +contentDir = "content/ur" +weight = 10 + [languages.fr] title = "Glossaire Cloud Native" description = "Le projet de Glossaire CNCF Cloud Natif a pour objectif de référencer les termes courants utilisés dans les différentes applications cloud native." -languageName ="Français(French)" +languageName ="Français (French)" contentDir = "content/fr" -weight = 10 +weight = 11 [markup] @@ -158,13 +165,13 @@ images = ["images/cncf-glossary-social.jpg"] # This menu appears only if you have at least one [params.versions] set. version_menu = "Releases" -# Flag used in the "version-banner" partial to decide whether to display a +# Flag used in the "version-banner" partial to decide whether to display a # banner on every page indicating that this is an archived version of the docs. # Set this flag to "true" if you want to display the banner. archived_version = false # The version number for the version of the docs represented in this doc set. -# Used in the "version-banner" partial to display a version number for the +# Used in the "version-banner" partial to display a version number for the # current doc set. version = "0.0" @@ -220,7 +227,7 @@ yes = 'Thank you! Please l no = 'Thanks for your feedback. Please tell us how we can improve.' # Adds a reading time to the top of each doc. -# If you want this feature, but occasionally need to remove the Reading time from a single page, +# If you want this feature, but occasionally need to remove the Reading time from a single page, # add "hide_readingtime: true" to the page's front matter [params.ui.readingtime] enable = false From a6a7853b11823b8e079e6c762f5650cdd8d987a5 Mon Sep 17 00:00:00 2001 From: Jossemar Cordero Date: Tue, 11 Jul 2023 10:36:56 -0600 Subject: [PATCH 158/295] [ES] Localize Tightly Coupled Architectures (#2194) * [ES] Localize Tightly Coupled Architectures Signed-off-by: Jonnatan Jossemar Cordero --- content/es/tightly-coupled-architectures.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 content/es/tightly-coupled-architectures.md diff --git a/content/es/tightly-coupled-architectures.md b/content/es/tightly-coupled-architectures.md new file mode 100644 index 0000000000..45be3e472b --- /dev/null +++ b/content/es/tightly-coupled-architectures.md @@ -0,0 +1,20 @@ +--- +title: Arquitecturas fuertemente acopladas +status: Completed +category: Propiedad +tags: ["fundamental", "architecture", "property"] +--- + +La arquitectura fuertemente acoplada es un tipo de arquitectura donde los componentes individuales de la aplicación son interdependientes +(es el paradigma opuesto a [arquitectura débilmente acoplada](/es/loosely-coupled-architecture/)). +Esto quiere decir que un cambio en uno de los componentes probablemente impactará a los demás. +En general este tipo de arquitectura es más sencilla de implementar que las arquitecturas débilmente acopladas, +pero puede llevar a un sistema a ser más vulnerable a fallos en cascada. +También tiende a requerir coordinación entre despliegues de componentes +lo cual puede afectar negativamente la productividad del desarrollador. + +Las arquitecturas fuertemente acopladas son una manera tradicional de construir aplicaciones. +Mientras que no necesariamente siguen todas buenas prácticas de desarrollo de [microservicios](/es/microservices-architecture/) +pueden ser útiles en circunstancias específicas. +Tienden a ser más rápidas y sencillas de implementar, +al igual que las [aplicaciones monolíticas](/es/monolithic-apps/) pueden acelerar el ciclo de desarrollo inicial. \ No newline at end of file From 50d2bb98b655c7310565707a09b2893a52ed4bdb Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Tue, 11 Jul 2023 22:16:02 +0200 Subject: [PATCH 159/295] [FR] update Virtualization following issue 2143 Signed-off-by: Guillaume Bernard --- content/fr/virtualization.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index 88ae198fc1..6dd5fb7348 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -27,4 +27,3 @@ tout en restant isolés les uns des autres pour des raisons de sécurité. Les applications exécutées sur des machines virtuelles ne savent pas qu'elles partagent un ordinateur physique. La virtualisation permet également de démarrer un nouvel "ordinateur" (une machine virtuelle) en quelques minutes sans se soucier des contraintes physiques liées à l'ajout d'un nouvel ordinateur dans un centre de données. -Les VMs permettent également aux utilisateurs de réduire le temps nécessaire pour obtenir un nouvel ordinateur virtuel. From eb3f6e7a413de32fb98063b0f8a7e9f31b2ae6e7 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Tue, 11 Jul 2023 22:28:19 +0200 Subject: [PATCH 160/295] [FR] Remove links to 'Deprecated' / 'Feedback Appreciated' terms Signed-off-by: Guillaume Bernard --- content/fr/containerization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/containerization.md b/content/fr/containerization.md index 8cc66e94be..0f1e8572b7 100644 --- a/content/fr/containerization.md +++ b/content/fr/containerization.md @@ -7,7 +7,7 @@ tags: ["application", "", ""] ## Ce que c'est -La contenérisation est l'action de regrouper une application et ses dépendances dans une [image de conteneur](/container-image/). +La contenérisation est l'action de regrouper une application et ses dépendances dans une image de conteneur. Le processus de construction du conteneur nécessite de respecter le standard de l'[Open Container Initiative](https://opencontainers.org) (OCI). Du moment que le résultat est une image qui respecte ce standard, l'outil de contenérisation qui sera utilisé n'a pas d'importance. From ebe05ae9c4943a489dc3fcd875d5b9bfbf8808ea Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 13 Jul 2023 11:07:31 +0900 Subject: [PATCH 161/295] Update config.toml to resolve warnings Signed-off-by: Jihoon Seo --- config.toml | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/config.toml b/config.toml index 930413627c..489572dc3c 100644 --- a/config.toml +++ b/config.toml @@ -54,10 +54,11 @@ id = "UA-140890431-2" [languages] [languages.en] title = "Cloud Native Glossary" -description = "The CNCF Cloud Native Glossary Project is intended to be used as a reference for common terms used when talking about cloud native applications." languageName ="English" # Weight used for sorting. weight = 1 +[languages.en.params] +description = "The CNCF Cloud Native Glossary Project is intended to be used as a reference for common terms used when talking about cloud native applications." #[languages.no] #title = "CNCF Glossary" @@ -69,66 +70,75 @@ weight = 1 [languages.hi] title = "क्लाउड नेटिव शब्दावली" -description = "CNCF क्लाउड नेटिव शब्दावली परियोजना का उद्देश्य क्लाउड नेटिव एप्लिकेशन के बारे में बात करते समय प्रयोग किए जाने वाले सामान्य शब्दों के संदर्भ के रूप में उपयोग किया जाना है।" languageName ="हिन्दी (Hindi)" contentDir = "content/hi" weight = 2 +[languages.hi.params] +description = "CNCF क्लाउड नेटिव शब्दावली परियोजना का उद्देश्य क्लाउड नेटिव एप्लिकेशन के बारे में बात करते समय प्रयोग किए जाने वाले सामान्य शब्दों के संदर्भ के रूप में उपयोग किया जाना है।" [languages.pt-br] title = "Glossário Cloud Native" -description = "O Projeto CNCF Glossário Cloud Native se destina a ser usado como uma referência para termos comuns usados ao falar sobre aplicações nativas de nuvem." languageName = "Português" contentDir = "content/pt-br" weight = 3 +[languages.pt-br.params] +description = "O Projeto CNCF Glossário Cloud Native se destina a ser usado como uma referência para termos comuns usados ao falar sobre aplicações nativas de nuvem." [languages.it] title = "Glossario Cloud Native" -description = "Il progetto del Glossario CNCF Cloud Native è pensato per essere un riferimento per i termini comuni, usati nell'ambito delle applicazioni cloud native." languageName = "Italiano" contentDir = "content/it" weight = 4 +[languages.it.params] +description = "Il progetto del Glossario CNCF Cloud Native è pensato per essere un riferimento per i termini comuni, usati nell'ambito delle applicazioni cloud native." [languages.ko] title = "클라우드 네이티브(Cloud Native) 용어집" -description = "CNCF 클라우드 네이티브 용어집 프로젝트는 클라우드 네이티브 애플리케이션을 주제로 대화를 나눌 때 참조할 수 있는 공통의 용어 제공을 목표로 한다." languageName ="한국어 (Korean)" contentDir = "content/ko" weight = 5 +[languages.ko.params] +description = "CNCF 클라우드 네이티브 용어집 프로젝트는 클라우드 네이티브 애플리케이션을 주제로 대화를 나눌 때 참조할 수 있는 공통의 용어 제공을 목표로 한다." [languages.es] title = "Cloud Native Glosario" -description = "El proyecto de CNCF Cloud Native Glosario pretende ser usado como una referencia para los terminos comunes usados cuando se habla acerca de las aplicaciones nativas para la nube." languageName ="Español (Spanish)" contentDir = "content/es" weight = 6 +[languages.es.params] +description = "El proyecto de CNCF Cloud Native Glosario pretende ser usado como una referencia para los terminos comunes usados cuando se habla acerca de las aplicaciones nativas para la nube." [languages.zh-cn] title = "Cloud Native(云原生) Glossary" -description = "CNCF 云原生 Glossary 项目旨在用作讨论云原生应用程序时常用术语的参考" languageName ="简体中文 (Simplified Chinese)" contentDir = "content/zh-cn" weight = 7 +[languages.zh-cn.params] +description = "CNCF 云原生 Glossary 项目旨在用作讨论云原生应用程序时常用术语的参考" [languages.bn] title = "ক্লাউড নেটিভ শব্দকোষ" -description = "CNCF ক্লাউড নেটিভ শব্দকোষ প্রকল্পটি ক্লাউড নেটিভ অ্যাপ্লিকেশন সম্পর্কে কথা বলার সময় ব্যবহৃত সাধারণ পদগুলির জন্য একটি রেফারেন্স হিসাবে ব্যবহার করার উদ্দেশ্যে।" languageName = "বাংলা (Bengali)" contentDir = "content/bn" weight = 8 +[languages.bn.params] +description = "CNCF ক্লাউড নেটিভ শব্দকোষ প্রকল্পটি ক্লাউড নেটিভ অ্যাপ্লিকেশন সম্পর্কে কথা বলার সময় ব্যবহৃত সাধারণ পদগুলির জন্য একটি রেফারেন্স হিসাবে ব্যবহার করার উদ্দেশ্যে।" [languages.de] title = "Cloud Native Glossar" -description = "Das CNCF Cloud Native Glossar soll als Referenz für gängige Begriffe dienen, die im Zusammenhang mit Cloud Native Anwendungen verwendet werden." languageName ="Deutsch" contentDir = "content/de" weight = 9 +[languages.de.params] +description = "Das CNCF Cloud Native Glossar soll als Referenz für gängige Begriffe dienen, die im Zusammenhang mit Cloud Native Anwendungen verwendet werden." [languages.ur] title = "کلاؤڈ کی مقامی لغت" -description = "CNCF کلاؤڈ کی مقامی لغت کا مقصد کلاؤڈ مقامی ایپلی کیشنز کے بارے میں بات کرتے وقت استعمال ہونے والی عام اصطلاحات کے حوالے کے طور پر استعمال کرنا ہے۔" languageName ="اردو (Urdu)" contentDir = "content/ur" weight = 10 +[languages.ur.params] +description = "CNCF کلاؤڈ کی مقامی لغت کا مقصد کلاؤڈ مقامی ایپلی کیشنز کے بارے میں بات کرتے وقت استعمال ہونے والی عام اصطلاحات کے حوالے کے طور پر استعمال کرنا ہے۔" [markup] From 6cfe9402164dfa17fe39d474fe5d7fcefb286d5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 13 Jul 2023 18:11:45 +0200 Subject: [PATCH 162/295] [fr] localyze immutable-infrastructure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/immutable-infrastructure.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 content/fr/immutable-infrastructure.md diff --git a/content/fr/immutable-infrastructure.md b/content/fr/immutable-infrastructure.md new file mode 100644 index 0000000000..a6afa1fad8 --- /dev/null +++ b/content/fr/immutable-infrastructure.md @@ -0,0 +1,16 @@ +--- +title: Infrastructure immuable +status: Completed +category: property +tags: ["infrastructure", "property", ""] +--- + +L'infrastructure immuable fait référence à l'infrastructure informatique ([machines virtuelles](/virtual-machine/), [conteneurs](/container/), équipements réseau) qui ne peut pas être modifiée une fois déployée. +Cela peut être imposé à l'aide d'un processus automatisé qui écrase les modifications non autorisées, ou à l'aide d'un système qui n'autorise aucune modification avant tout. +Les conteneurs sont un bon exemple d'infrastructure immuable, car des modifications persistantes aux conteneurs ne peuvent être apportées qu'en créant une nouvelle version du conteneur ou en recréant le conteneur existant à partir de son image. + +En empêchant ou en identifiant les modifications non autorisées, les infrastructures immuables facilitent l'identification et la réduction des risques de sécurité. +L'exploitation d'un tel système devient beaucoup plus simple, car les administrateurs peuvent faire des hypothèses à son sujet. +Après tout, ils savent que personne n'a commis d'erreurs ou effectué des modifications qu'ils ont oublié de communiquer. +L'infrastructure immuable va de pair avec l'[infrastructure en tant que code](/infrastructure-as-code/), où toute l'automatisation nécessaire à la création de l'infrastructure est stockée dans un système de contrôle des versions (par exemple, Git). +Cette combinaison d'immuabilité et de contrôle des versions signifie qu'il existe un journal d'audit durable de chaque modification autorisée apportée à un système. From 4370c2b7f169b9edcefc3987142de11254ada758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Thu, 13 Jul 2023 18:24:52 +0200 Subject: [PATCH 163/295] FIx containerisation in French MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/containerization.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/containerization.md b/content/fr/containerization.md index 0f1e8572b7..a052c17bc9 100644 --- a/content/fr/containerization.md +++ b/content/fr/containerization.md @@ -1,5 +1,5 @@ --- -title: Contenérisation +title: Conteneurisation status: Completed category: Technology tags: ["application", "", ""] @@ -7,9 +7,9 @@ tags: ["application", "", ""] ## Ce que c'est -La contenérisation est l'action de regrouper une application et ses dépendances dans une image de conteneur. +La conteneurisation est l'action de regrouper une application et ses dépendances dans une image de conteneur. Le processus de construction du conteneur nécessite de respecter le standard de l'[Open Container Initiative](https://opencontainers.org) (OCI). -Du moment que le résultat est une image qui respecte ce standard, l'outil de contenérisation qui sera utilisé n'a pas d'importance. +Du moment que le résultat est une image qui respecte ce standard, l'outil de conteneurisation qui sera utilisé n'a pas d'importance. ## Problème auquel il répond @@ -21,7 +21,7 @@ De plus, les VMs peuvent souffrir d'une dérive de configuration ce qui enfreint ## Quel en est l'utilité Les images de conteneurs sont légères (par opposition aux VM traditionnelles) et -le processus de contenérisation nécessite un fichier qui liste les dépendances. +le processus de conteneurisation nécessite un fichier qui liste les dépendances. Ce fichier peut être versionné et la construction automatisée, permettant à une organisation de se concentrer sur d'autres priorités pendant que le processus automatisé va se charger de la construction. From 3a80700a234094d7b0a3db2abb5aa9d4b9f0f2ca Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Thu, 13 Jul 2023 23:26:13 +0200 Subject: [PATCH 164/295] =?UTF-8?q?[fr]=20conten=C3=A9risation=20->=20cont?= =?UTF-8?q?eneurisation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guillaume Bernard --- content/fr/containerization.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/containerization.md b/content/fr/containerization.md index 0f1e8572b7..1f8ed028e8 100644 --- a/content/fr/containerization.md +++ b/content/fr/containerization.md @@ -1,5 +1,5 @@ --- -title: Contenérisation +title: Conteneurisation status: Completed category: Technology tags: ["application", "", ""] @@ -7,9 +7,9 @@ tags: ["application", "", ""] ## Ce que c'est -La contenérisation est l'action de regrouper une application et ses dépendances dans une image de conteneur. +La conteneurisation est l'action de regrouper une application et ses dépendances dans une image de conteneur. Le processus de construction du conteneur nécessite de respecter le standard de l'[Open Container Initiative](https://opencontainers.org) (OCI). -Du moment que le résultat est une image qui respecte ce standard, l'outil de contenérisation qui sera utilisé n'a pas d'importance. +Du moment que le résultat est une image qui respecte ce standard, l'outil de conteneurisation qui sera utilisé n'a pas d'importance. ## Problème auquel il répond @@ -21,7 +21,7 @@ De plus, les VMs peuvent souffrir d'une dérive de configuration ce qui enfreint ## Quel en est l'utilité Les images de conteneurs sont légères (par opposition aux VM traditionnelles) et -le processus de contenérisation nécessite un fichier qui liste les dépendances. +le processus de conteneurisation nécessite un fichier qui liste les dépendances. Ce fichier peut être versionné et la construction automatisée, permettant à une organisation de se concentrer sur d'autres priorités pendant que le processus automatisé va se charger de la construction. From 7258b11915ac5259cb0509a147f86561e99d2c1c Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 16 Jul 2023 11:25:09 +0200 Subject: [PATCH 165/295] Fixes from review from Huats and Guillaume Bernard Signed-off-by: Ludovic Logiou --- content/fr/cluster.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/fr/cluster.md b/content/fr/cluster.md index d0272dc915..50038f4382 100644 --- a/content/fr/cluster.md +++ b/content/fr/cluster.md @@ -9,22 +9,22 @@ tags: ["infrastructure", "fundamental", ""] Un cluster est un groupe d'ordinateurs ou d'applications qui fonctionnent ensemble dans un but commun. Dans le contexte du cloud native computing, le terme est souvent appliqué à [Kubernetes](/kubernetes/). -Un cluster Kubernetes est un ensemble de services (ou de charge de travail) qui s'exécute dans leurs propres conteneurs, souvent sur des machines différentes. +Un cluster Kubernetes est un ensemble de services (ou de charges de travail) qui s'exécutent dans leurs propres conteneurs, souvent sur des machines différentes. L'ensemble de tous ces services [conteneurisés](/containerization/), connectés au travers du réseau, représente un cluster. ## Problème auquel il répond Un logiciel qui s'exécute sur un seul ordinateur représente un point de défaillance unique -- si cet ordinateur tombe en panne, ou si accidentellement quelqu'un débranche le cable d'alimentation, -alors quelque système critique pourrait être mis hors-ligne. -C'est pourquoi généralement les logiciels modernes sont souvent construits sous forme d'[applications distribuée](/distributed-apps/), regroupés ensemble comme un cluster. +— si cet ordinateur tombe en panne, ou si accidentellement quelqu'un débranche le cable d'alimentation, +alors un système critique pourrait être mis hors-ligne. +C'est pourquoi généralement les logiciels modernes sont souvent construits sous forme d'[applications distribuées](/distributed-apps/), regroupées ensemble comme un cluster. ## Quel en est l'utilité -Les applications réparties en cluster s'exécutent sur plusieurs machines, élimine le point de défaillance unique. +Les applications réparties en cluster s'exécutent sur plusieurs machines, éliminant le point de défaillance unique. Cependant, fabriquer des systèmes distribués est vraiment difficile. Dans les fait, c'est une discipline informatique à part entière. -Le besoin en systèmes globaux et les années d'essais et d'erreur ont mené au développement d'un nouveau genre de pile technique: -[cloud native technologies](/cloud-native-tech/). +Le besoin en systèmes globaux et les années d'essais et d'erreurs ont mené au développement d'un nouveau genre de pile technique: +[technologies cloud natives](/cloud-native-tech/). Ces nouvelles technologies sont les blocs de construction qui facilitent l'exploitation et la création de systèmes distribués. From 84b524ab06dc7bbdaf142f6a5649d4acd02fea6f Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Sun, 16 Jul 2023 11:27:51 +0200 Subject: [PATCH 166/295] Add fixes from sestegra and Guillaume Bernard Signed-off-by: Ludovic Logiou --- content/fr/kubernetes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index 32e56de45c..a7a6f84748 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -10,7 +10,7 @@ tags: ["infrastructure", "fundamental", ""] Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneurs open source. Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gère des applications à travers un [système distribué](/distributed-systems/). -Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications containerisées. +Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications conteneurisées. Kubernetes permet l'automatisation et l'extensibilité, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessous) et reproductible. Kubernetes est extensible via ses [API](/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. @@ -25,12 +25,12 @@ L'automatisation de l'infrastructure et la gestion de configuration déclarative Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/) Kubernetes aide à l'automatisation, mais a l'avantage de fonctionner avec des conteneurs. Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/virtual-machine/) ou physiques. -De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (p. ex., YAML) - à quoi l'infrastructure devrait ressembler. +De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (p. ex., YAML) — à quoi l'infrastructure devrait ressembler. Kubernetes s'occupe ensuite du "comment". Il en résulte que Kubernetes est extrêmement compatible avec l'infrastructure en tant que code. Kubernetes s'[auto-répare](/self-healing/) également. L'état actuel du cluster correspond toujours à l'état désiré par l'opérateur. Si Kubernetes détecte une déviation par rapport à ce qui est décrit dans les fichiers manifestes, un contrôleur Kubernetes va s'en occuper et le corriger. -Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle corresponde à l'état souhaité. +Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle correspond à l'état souhaité. From 92715ea5ab42ef0e301c53d8b2a6164a0aa28acf Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:32:48 +0900 Subject: [PATCH 167/295] [bn] Fix error in 'Bare Metal Machine' Signed-off-by: Jihoon Seo --- content/bn/bare-metal-machine.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/bn/bare-metal-machine.md b/content/bn/bare-metal-machine.md index cb2078edc9..8237c1666b 100644 --- a/content/bn/bare-metal-machine.md +++ b/content/bn/bare-metal-machine.md @@ -1,6 +1,6 @@ --- title: বেয়ার মেটাল মেশিন (Bare Metal Machine) -status: সম্পন্ন +status: Completed category: প্রযুক্তি tags: ["infrastructure", "", ""] --- @@ -10,7 +10,7 @@ tags: ["infrastructure", "", ""] বেয়ার মেটাল(bare metal) বলতে একটি ভৌত ​​কম্পিউটারকে বোঝায়, আরও নির্দিষ্টভাবে একটি সার্ভার, যার একটি এবং শুধুমাত্র একটি অপারেটিং সিস্টেম রয়েছে। আধুনিক কম্পিউটিংয়ে পার্থক্যটি গুরুত্বপূর্ণ কারণ বেশিরভাগ সার্ভারগুলোই [ভার্চুয়াল মেশিন](/bn/virtual-machine/)। একটি ভৌত ​​সার্ভার(physical server) সাধারণত শক্তিশালী হার্ডওয়্যার অন্তর্নির্মিত একটি মোটামুটি বড় কম্পিউটার। -[ভার্চুয়ালাইজেশন](bn/virtualization/) ছাড়া একটি অপারেটিং সিস্টেম ইনস্টল করা এবং সরাসরি শারীরিক হার্ডওয়্যারে অ্যাপ্লিকেশনটি চালানো কে, +[ভার্চুয়ালাইজেশন](/bn/virtualization/) ছাড়া একটি অপারেটিং সিস্টেম ইনস্টল করা এবং সরাসরি শারীরিক হার্ডওয়্যারে অ্যাপ্লিকেশনটি চালানো কে, "বেয়ার মেটাল"("bare metal") এ চলমান হিসাবে উল্লেখ করা হয়। ## এটা যেসব সমস্যাতে দৃষ্টিপাত করে From 853d684e4fe0316c11eb59c3adc85abd5bd8d055 Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:46:01 +0900 Subject: [PATCH 168/295] Remove links to 'container-image' Signed-off-by: Jihoon Seo --- content/bn/containerization.md | 2 +- content/en/containerization.md | 2 +- content/es/containerization.md | 2 +- content/hi/containerization.md | 2 +- content/it/containerization.md | 2 +- content/ko/containerization.md | 2 +- content/pt-br/containerization.md | 2 +- content/ur/containerization.md | 2 +- content/zh-cn/containerization.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/bn/containerization.md b/content/bn/containerization.md index 47ae0ff657..12ddb7e70e 100644 --- a/content/bn/containerization.md +++ b/content/bn/containerization.md @@ -7,7 +7,7 @@ tags: ["application", "", ""] ## এটা কি -কন্টেইনারাইজেশন হল একটি প্রক্রিয়া যা একটি অ্যাপ্লিকেশন এবং এর সংশ্লিষ্ট জিনিসসমূহকে একটি [কন্টেইনার ইমেজ (Container Image)](/bn/container-image/) এ বান্ডিল করার প্রক্রিয়া। কন্টেইনার নির্মাণ প্রক্রিয়ার জন্য [ওপেন কন্টেইনার ইনিশিয়েটিভ](https://opencontainers.org) (OCI) মান মেনে চলা প্রয়োজন। যতক্ষণ না একটি কন্টেইনার ইমেজ এই স্ট্যান্ডার্ড মেনে চলে, যে কোন কন্টেইনারাইজেশন টুল ই ব্যবহার করা হয় তা চিন্তার বিষয় নয়। +কন্টেইনারাইজেশন হল একটি প্রক্রিয়া যা একটি অ্যাপ্লিকেশন এবং এর সংশ্লিষ্ট জিনিসসমূহকে একটি কন্টেইনার ইমেজ (Container Image) এ বান্ডিল করার প্রক্রিয়া। কন্টেইনার নির্মাণ প্রক্রিয়ার জন্য [ওপেন কন্টেইনার ইনিশিয়েটিভ](https://opencontainers.org) (OCI) মান মেনে চলা প্রয়োজন। যতক্ষণ না একটি কন্টেইনার ইমেজ এই স্ট্যান্ডার্ড মেনে চলে, যে কোন কন্টেইনারাইজেশন টুল ই ব্যবহার করা হয় তা চিন্তার বিষয় নয়। ## এটা যেসব সমস্যাতে দৃষ্টিপাত করে diff --git a/content/en/containerization.md b/content/en/containerization.md index d5ab8c060d..92d2e4b4fb 100644 --- a/content/en/containerization.md +++ b/content/en/containerization.md @@ -7,7 +7,7 @@ tags: ["application", "", ""] ## What it is -Containerization is the process of bundling an application and its dependencies into a [container image](/container-image/). +Containerization is the process of bundling an application and its dependencies into a container image. The container build process requires adherence to the [Open Container Initiative](https://opencontainers.org) (OCI) standard. As long as the output is a container image that adheres to this standard, which containerization tool is used doesn't matter. diff --git a/content/es/containerization.md b/content/es/containerization.md index fd083de294..cd1863989d 100644 --- a/content/es/containerization.md +++ b/content/es/containerization.md @@ -7,7 +7,7 @@ tags: ["application", "", ""] ## ¿Qué es? -La contenerización es el proceso que consiste en empaquetar una aplicación y sus dependencias en una [imagen de contenedor](/es/container-image/). +La contenerización es el proceso que consiste en empaquetar una aplicación y sus dependencias en una imagen de contenedor. La construcción del contenedor requiere del seguimiento del estándar [Open Container Initiative](https://opencontainers.org) (OCI). Mientras la salida de este proceso sea un contenedor de imagen que se adhiera a dicho estándar, la herramienta de contenerización usada no es relevante. diff --git a/content/hi/containerization.md b/content/hi/containerization.md index 81b395864a..91b13002f4 100644 --- a/content/hi/containerization.md +++ b/content/hi/containerization.md @@ -6,7 +6,7 @@ category: प्रौद्योगिकी ## यह क्या है -कंटेनरीकरण एक एप्लीकेशन और उसकी निर्भरता को एक [कंटेनर इमेज](/hi/container-image/) में बांधने की प्रक्रिया है। कंटेनर निर्माण प्रक्रिया के लिए [ओपन कंटेनर इनिशिएटिव](https://opencontainers.org) (OCI) मानक का पालन करना आवश्यक है। जब तक आउटपुट एक कंटेनर इमेज है जो इस मानक का पालन करती है, तब तक कोई फर्क नहीं पड़ता कि किस कंटेनरीकरण उपकरण का उपयोग किया जाता है। +कंटेनरीकरण एक एप्लीकेशन और उसकी निर्भरता को एक कंटेनर इमेज में बांधने की प्रक्रिया है। कंटेनर निर्माण प्रक्रिया के लिए [ओपन कंटेनर इनिशिएटिव](https://opencontainers.org) (OCI) मानक का पालन करना आवश्यक है। जब तक आउटपुट एक कंटेनर इमेज है जो इस मानक का पालन करती है, तब तक कोई फर्क नहीं पड़ता कि किस कंटेनरीकरण उपकरण का उपयोग किया जाता है। ## समस्या diff --git a/content/it/containerization.md b/content/it/containerization.md index 4a19038b8e..ae6b1b4487 100644 --- a/content/it/containerization.md +++ b/content/it/containerization.md @@ -7,7 +7,7 @@ tags: ["applicazione", "", ""] ## Cos'è -La containerizzazione è il processo di accorpamento di un'applicazione e le sue dipendenze in un'[immagine container](/it/container-image/). Il processo di costruzione di un container richiede l'aderenza agli standard dell'[Open Container Initiative](https://opencontainers.org). Purché il risultato finale sia un'immagine container che aderisce a questi standard, lo strumento utilizzato per la containerizzazione non ha importanza. +La containerizzazione è il processo di accorpamento di un'applicazione e le sue dipendenze in un'immagine container. Il processo di costruzione di un container richiede l'aderenza agli standard dell'[Open Container Initiative](https://opencontainers.org). Purché il risultato finale sia un'immagine container che aderisce a questi standard, lo strumento utilizzato per la containerizzazione non ha importanza. ## Quali problematiche affronta diff --git a/content/ko/containerization.md b/content/ko/containerization.md index 83aed7f86e..0cc4740dcd 100644 --- a/content/ko/containerization.md +++ b/content/ko/containerization.md @@ -8,7 +8,7 @@ tags: ["애플리케이션", "", ""] ## 개념 컨테이너화(containerization)는 애플리케이션과 그 의존 요소들을 -[컨테이너 이미지](/container-image/) 형태로 포장하는 것(bundling)을 의미한다. +컨테이너 이미지 형태로 포장하는 것(bundling)을 의미한다. 컨테이너 빌드 프로세스는 [OCI(Open Container Initiative)](https://opencontainers.org) 표준을 준수해야 한다. 컨테이너화의 결과물이 이 표준을 준수하는 컨테이너 이미지이기만 한다면, 어떠한 컨테이너화 도구라도 사용할 수 있다. diff --git a/content/pt-br/containerization.md b/content/pt-br/containerization.md index c0374d8123..3f67bf45bf 100644 --- a/content/pt-br/containerization.md +++ b/content/pt-br/containerization.md @@ -7,7 +7,7 @@ tags: ["aplicação", "", ""] ## O que é -A conteinerização é o processo de agrupar uma aplicação e suas dependências em uma [imagem de contêiner](/pt-br/container-image/). O processo de criação do contêiner requer adesão ao padrão [Open Container Initiative](https://opencontainers.org) (OCI). Desde que a saída seja uma imagem de contêiner que atenda a esse padrão, a ferramenta de conteinerização usada não importa. +A conteinerização é o processo de agrupar uma aplicação e suas dependências em uma imagem de contêiner. O processo de criação do contêiner requer adesão ao padrão [Open Container Initiative](https://opencontainers.org) (OCI). Desde que a saída seja uma imagem de contêiner que atenda a esse padrão, a ferramenta de conteinerização usada não importa. ## Problema relacionado diff --git a/content/ur/containerization.md b/content/ur/containerization.md index 2d375374b3..71fc82c1e2 100644 --- a/content/ur/containerization.md +++ b/content/ur/containerization.md @@ -7,7 +7,7 @@ tags: ["ایپلیکیشن", "", ""] ## یہ کیا ہے -کنٹینرائزیشن کسی ایپلیکیشن اور اس کے مابین تعلقات کو ایک [کنٹینر تصویر](/container-image/). +کنٹینرائزیشن کسی ایپلیکیشن اور اس کے مابین تعلقات کو ایک کنٹینر تصویر. میں بند کرنے کا عمل ہے۔ کنٹینر بنانے کا عمل، [ اوپن کنٹینر انیشیئٹو](https://opencontainers.org) (OCI) کی معیار کے پابند ہونے کی ضرورت رکھتا ہے۔ جب تک نتائج ایک ایسی کنٹینر تصویر ہو جو اس معیار کے پابند ہو،تو کسی مخصوص کنٹینرائزیشن ٹول کو استعمال کرنا اہم نہیں ہوتا۔ ## یہ کيا مسئلہ حل کرتا ہے diff --git a/content/zh-cn/containerization.md b/content/zh-cn/containerization.md index b3a5660b07..d33d08820f 100644 --- a/content/zh-cn/containerization.md +++ b/content/zh-cn/containerization.md @@ -7,7 +7,7 @@ tags: ["应用程序", "", ""] ## 是什么 -容器化是将一个应用程序及其依赖关系捆绑到 [容器镜像](/zh-cn/container-image/) 中的过程。 +容器化是将一个应用程序及其依赖关系捆绑到 容器镜像中的过程。 容器构建过程需要遵守 [开放容器倡议](https://opencontainers.org)(OCI) 标准。 只要输出的是一个符合这个标准的容器镜像,使用哪种容器化工具并不重要。 From 90cb58ea0b54d38e1c35dd7c7766438f1f13be95 Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:47:26 +0900 Subject: [PATCH 169/295] Remove links to 'load-balancer' Signed-off-by: Jihoon Seo --- content/de/blue-green-deployment.md | 2 +- content/en/blue-green-deployment.md | 2 +- content/es/blue-green-deployment.md | 2 +- content/hi/infrastructure-as-code.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/de/blue-green-deployment.md b/content/de/blue-green-deployment.md index 0530d43040..e54dc55f98 100644 --- a/content/de/blue-green-deployment.md +++ b/content/de/blue-green-deployment.md @@ -33,5 +33,5 @@ Die eine Umgebung (blue) stellt die produktive Anwendung dar (die Version, die v während eine zweite Umgebung (green) bereitgestellt wird. Diese zweite Umgebung enthält eine neue Version der Anwendung. Sobald die Tests in der neuen Umgebung abgeschlossen sind, -wird der Datenverkehr auf diese Umgebung umgelenkt (oft mit Hilfe eines [Load Balancer](/load-balancer/)). +wird der Datenverkehr auf diese Umgebung umgelenkt (oft mit Hilfe eines Load Balancer). Im Anschluss kann die ältere Umgebung (blue) aus dem Betrieb genommen werden. diff --git a/content/en/blue-green-deployment.md b/content/en/blue-green-deployment.md index 6aea7c7b57..24274bf89f 100644 --- a/content/en/blue-green-deployment.md +++ b/content/en/blue-green-deployment.md @@ -11,7 +11,7 @@ Blue-green deployment is a strategy for updating running computer systems with m The operator maintains two environments, dubbed “blue” and “green”. One serves production traffic (the version all users are currently using), whilst the other is updated. Once testing has concluded on the non-active (green) environment, -production traffic is switched over (often via the use of a [load balancer](/load-balancer/)). +production traffic is switched over (often via the use of a load balancer). Note that blue-green deployment usually means switching the entire environments, comprising many [services](/service/), all at once. Confusingly, sometimes the term is used with regard to individual services within a system. To avoid this ambiguity, the term “zero-downtime deployment” is preferred when referring to individual components. diff --git a/content/es/blue-green-deployment.md b/content/es/blue-green-deployment.md index a24ee157b8..1f74ff98b1 100644 --- a/content/es/blue-green-deployment.md +++ b/content/es/blue-green-deployment.md @@ -11,7 +11,7 @@ El despliegue Blue green es una estrategia para actualizar los sistemas informá El operador mantiene dos entornos, llamados "blue" y "green". Uno sirve el tráfico de producción (la versión que todos los usuarios usan actualmente), mientras que el otro está actualizado. Una vez que las pruebas han concluido en el entorno inactivo (green), -el tráfico de producción se cambia (a menudo mediante el uso de un [balanceador de cargas](/es/load-balancer/). +el tráfico de producción se cambia (a menudo mediante el uso de un balanceador de cargas. Ten en cuenta que el despliegue blue-green usualmente significa cambiar los entornos por completo, comprendiendo muchos [servicios](/es/service/), todos a la vez. Confusamente, algunas veces el término se utiliza para referirse a servicios dentro de un sistema. Para evitar esta ambigüedad, se prefiere el término "despliegue con tiempo de inactividad cero" cuando se refiere a componentes individuales. diff --git a/content/hi/infrastructure-as-code.md b/content/hi/infrastructure-as-code.md index a27f1082d8..3f95df5fe5 100644 --- a/content/hi/infrastructure-as-code.md +++ b/content/hi/infrastructure-as-code.md @@ -15,4 +15,4 @@ tags: ["इन्फ्रास्ट्रक्चर", "infrastructure", ""] ## समाधान -डेटा सेंटर संसाधनों जैसे सर्वर, [लोड बैलेंसर्स](/load-balancer/) और सबनेट को कोड के रूप में प्रस्तुत करके, यह इंफ्रास्ट्रक्चर टीम को सभी कॉन्फ़िगरेशन के लिए सत्य का एक ही स्रोत रखने की अनुमति देता है और उन्हें [CI](/hi/continuous-integration/)/[CD](/hi/continuous-delivery/) पाइपलाइन में अपने डेटा सेंटर का प्रबंधन करने की भी अनुमति देता है, संस्करण नियंत्रण और परिनियोजन रणनीतियों को लागू करना। +डेटा सेंटर संसाधनों जैसे सर्वर, लोड बैलेंसर्स और सबनेट को कोड के रूप में प्रस्तुत करके, यह इंफ्रास्ट्रक्चर टीम को सभी कॉन्फ़िगरेशन के लिए सत्य का एक ही स्रोत रखने की अनुमति देता है और उन्हें [CI](/hi/continuous-integration/)/[CD](/hi/continuous-delivery/) पाइपलाइन में अपने डेटा सेंटर का प्रबंधन करने की भी अनुमति देता है, संस्करण नियंत्रण और परिनियोजन रणनीतियों को लागू करना। From 64989b5553bc50aeaa68c0e2d97023799c244eec Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:48:11 +0900 Subject: [PATCH 170/295] Remove links to 'stateless-apps' Signed-off-by: Jihoon Seo --- content/bn/stateful-apps.md | 2 +- content/en/stateful-apps.md | 2 +- content/it/stateful-apps.md | 2 +- content/pt-br/stateful-apps.md | 2 +- content/zh-cn/stateful-apps.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/bn/stateful-apps.md b/content/bn/stateful-apps.md index d715d53a4f..86447f8b59 100644 --- a/content/bn/stateful-apps.md +++ b/content/bn/stateful-apps.md @@ -7,7 +7,7 @@ tags: ["fundamental", "application", " "] ## এটা কি -যখন আমরা স্টেটফুল (এবং [স্টেটলেস](/bn/stateless-apps/)) অ্যাপগুলি সম্পর্কে বলি, +যখন আমরা স্টেটফুল (এবং স্টেটলেস) অ্যাপগুলি সম্পর্কে বলি, স্টেট বলতে মূলত এমন ডেটাকে বুঝাই যা কোন অ্যাপ সচল রাখার জন্য সংরক্ষণ করতে হয়। উদাহরণস্বরূপ যেকোনো ধরনের অনলাইন শপ যা আপনার কার্টকে সংরক্ষন করে রাখে একটি স্টেটফুল অ্যাপ। diff --git a/content/en/stateful-apps.md b/content/en/stateful-apps.md index 770308b536..737a857c11 100644 --- a/content/en/stateful-apps.md +++ b/content/en/stateful-apps.md @@ -7,7 +7,7 @@ tags: ["fundamental", "application", ""] ## What it is -When we speak of stateful (and [stateless](/stateless-apps/)) apps, +When we speak of stateful (and stateless) apps, state refers to any data the app needs to store to function as designed. Any kind of online shop that remembers your cart is a stateful app for example. diff --git a/content/it/stateful-apps.md b/content/it/stateful-apps.md index fe3883adb4..e25fd02827 100644 --- a/content/it/stateful-apps.md +++ b/content/it/stateful-apps.md @@ -7,7 +7,7 @@ tags: ["fondamentali", "basi"] ## Cos'è -Quando parliamo di applicazioni _stateful_ (letteralmente "a pieno stato") e [stateless](/it/stateless-apps/) (letteralmente "senza stato"), +Quando parliamo di applicazioni _stateful_ (letteralmente "a pieno stato") e stateless (letteralmente "senza stato"), il concetto di stato si riferisce a tutti i dati da salvare affinché l'applicazione funzioni come previsto. Qualsiasi tipo di esperienza di acquisto online che ti ricorda a che punto sta il tuo carrello è, ad esempio, un'applicazione _stateful_. diff --git a/content/pt-br/stateful-apps.md b/content/pt-br/stateful-apps.md index 6cb4d435c5..ffb9caeb46 100644 --- a/content/pt-br/stateful-apps.md +++ b/content/pt-br/stateful-apps.md @@ -7,7 +7,7 @@ tags: ["fundamentos", "", ""] ## O que é -Quando falamos das aplicações stateful e [stateless](/pt-br/stateless-apps/), nos referimos a todos os dados que a aplicação precisa armazenar para funcionar como projetada. Qualquer tipo de loja online que lembre do seu carrinho é uma aplicação stateful, por exemplo. +Quando falamos das aplicações stateful e stateless, nos referimos a todos os dados que a aplicação precisa armazenar para funcionar como projetada. Qualquer tipo de loja online que lembre do seu carrinho é uma aplicação stateful, por exemplo. ## Problema relacionado diff --git a/content/zh-cn/stateful-apps.md b/content/zh-cn/stateful-apps.md index ee04c5d73e..43824a3d6d 100644 --- a/content/zh-cn/stateful-apps.md +++ b/content/zh-cn/stateful-apps.md @@ -7,7 +7,7 @@ tags: ["基本原理", "", ""] ## 是什么 -当我们说到有状态(和[无状态](/zh-cn/stateless-apps/))应用时, +当我们说到有状态(和无状态)应用时, 状态是指应用需要存储以便其按设计运行的任何数据。 例如,任何能记住您购物车的在线商店都是有状态应用。 From eac0284e5a5b6750776758f24f92d4ed068211d8 Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:50:25 +0900 Subject: [PATCH 171/295] Remove links to 'database-as-a-service' Signed-off-by: Jihoon Seo --- content/it/managed-services.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/it/managed-services.md b/content/it/managed-services.md index ae018c38b7..9784484516 100644 --- a/content/it/managed-services.md +++ b/content/it/managed-services.md @@ -1,12 +1,12 @@ --- title: Managed services -status: Completed +status: Deprecated category: Tecnologia --- ## Cos'è -Con _managed service_ si intende un'offerta di servizio da parte di un fornitore che comprende un software assieme alla sua gestione ordinaria e manutenzione. Ne sono esempi i servizi di [Database as a Service](/it/database-as-a-service/) come RDS di Amazon, o i servizi esterni di monitoring come Datadog. +Con _managed service_ si intende un'offerta di servizio da parte di un fornitore che comprende un software assieme alla sua gestione ordinaria e manutenzione. Ne sono esempi i servizi di Database as a Service come RDS di Amazon, o i servizi esterni di monitoring come Datadog. ## Quali problematiche affronta From d7ce52bf0db23d76a89386dcb544daf726b221c6 Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:51:40 +0900 Subject: [PATCH 172/295] Remove links to 'debugging' Signed-off-by: Jihoon Seo --- content/bn/site-reliability-engineering.md | 2 +- content/en/site-reliability-engineering.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/bn/site-reliability-engineering.md b/content/bn/site-reliability-engineering.md index 017be87811..0d4dff1708 100644 --- a/content/bn/site-reliability-engineering.md +++ b/content/bn/site-reliability-engineering.md @@ -16,7 +16,7 @@ tags: ["methodology", "", ""] ## এটা যেসব সমস্যাতে দৃষ্টিপাত করেে অ্যাপ্লিকেশনগুলি [নির্ভরযোগ্যভাবে](/bn/reliability/) চালানো নিশ্চিত করার জন্য একাধিক ক্ষমতা প্রয়োজন, -কর্মক্ষমতা পর্যবেক্ষণ, সতর্কতা, [ডিবাগিং](/bn/debugging/) থেকে সমস্যা সমাধান পর্যন্ত। +কর্মক্ষমতা পর্যবেক্ষণ, সতর্কতা, ডিবাগিং থেকে সমস্যা সমাধান পর্যন্ত। এগুলি ছাড়া, সিস্টেম অপারেটররা কেবল সমস্যার প্রতিক্রিয়া জানাতে পারে বনাম সেগুলি এড়ানোর দিকে সক্রিয়ভাবে কাজ করতে পারে - ডাউনটাইম কেবল সময়ের ব্যাপার হয়ে যায়। diff --git a/content/en/site-reliability-engineering.md b/content/en/site-reliability-engineering.md index e70d1a2324..4385e28484 100644 --- a/content/en/site-reliability-engineering.md +++ b/content/en/site-reliability-engineering.md @@ -16,7 +16,7 @@ SRE ensures that code running in production works properly. ## Problem it addresses Ensuring applications run [reliably](/reliability/) requires multiple capabilities, -from performance monitoring, alerting, [debugging](/debugging/) to troubleshooting. +from performance monitoring, alerting, debugging to troubleshooting. Without these, system operators can only react to problems vs. proactively working towards avoiding them — downtime only becomes a matter of time. From 1d461662ae35c8d1d3b13eb87f42e8be2835143c Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:53:20 +0900 Subject: [PATCH 173/295] Remove links to 'software-as-a-service' Signed-off-by: Jihoon Seo --- content/bn/multitenancy.md | 2 +- content/en/multitenancy.md | 2 +- content/es/multitenancy.md | 2 +- content/it/multitenancy.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/bn/multitenancy.md b/content/bn/multitenancy.md index 53504403ed..a4dfbd152c 100644 --- a/content/bn/multitenancy.md +++ b/content/bn/multitenancy.md @@ -28,4 +28,4 @@ tags: ["architecture", "property", ""] ## সম্পর্কিত পদ -বহু মালিকানা (multitenancy) [SaaS](/bn/software-as-a-service/) এর সমার্থক নয়, যদিও SaaS-এর বহু মালিকানা (multitenancy) হওয়া খুবই সাধারণ এবং এমনকি বহু মালিকানার (multitenancy) বৈশিষ্ট্য গুলি এর মূল সুবিধাগুলির মধ্যে একটি। +বহু মালিকানা (multitenancy) SaaS এর সমার্থক নয়, যদিও SaaS-এর বহু মালিকানা (multitenancy) হওয়া খুবই সাধারণ এবং এমনকি বহু মালিকানার (multitenancy) বৈশিষ্ট্য গুলি এর মূল সুবিধাগুলির মধ্যে একটি। diff --git a/content/en/multitenancy.md b/content/en/multitenancy.md index 1b903ff5ad..21b38e94f4 100644 --- a/content/en/multitenancy.md +++ b/content/en/multitenancy.md @@ -35,5 +35,5 @@ on to the tenants, significantly reducing the software cost for users (again, th ## Related terms -Multitenancy is not synonymous with [SaaS](/software-as-a-service/), +Multitenancy is not synonymous with SaaS, although it is very common for SaaS to be multitenant and even to feature multitenancy as one of its core benefits. diff --git a/content/es/multitenancy.md b/content/es/multitenancy.md index d08d6c5447..7b9b9ccd81 100644 --- a/content/es/multitenancy.md +++ b/content/es/multitenancy.md @@ -35,6 +35,6 @@ a los inquilinos, lo que reduce significativamente el costo para los usuarios (d ## Términos relacionados -La multitenancy no es sinónimo de [SaaS](/software-as-a-service/), +La multitenancy no es sinónimo de SaaS, aunque es muy común que el SaaS tenga multitenancy e incluso que la funcionalidad de multitenancy sea una de sus principales ventajas. diff --git a/content/it/multitenancy.md b/content/it/multitenancy.md index 9d8d0150ac..b8a81a0649 100644 --- a/content/it/multitenancy.md +++ b/content/it/multitenancy.md @@ -22,4 +22,4 @@ Con un software multitenant, i tenant condividono le risorse di un'installazione ## Termini correlati -Multitenancy non è un sinonimo di [SaaS](/it/software-as-a-service/), nonostante sia molto comune per un SaaS essere multitenant e anche di offrire la multitenancy come uno dei suoi principali vantaggi. +Multitenancy non è un sinonimo di SaaS, nonostante sia molto comune per un SaaS essere multitenant e anche di offrire la multitenancy come uno dei suoi principali vantaggi. From 86ef3d1e26ad9bba283d44c6547ba90c22372749 Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Thu, 6 Jul 2023 14:54:14 +0900 Subject: [PATCH 174/295] Remove links to 'version-control' Signed-off-by: Jihoon Seo --- content/it/containerization.md | 2 +- content/it/immutable-infrastructure.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/it/containerization.md b/content/it/containerization.md index ae6b1b4487..199af2f549 100644 --- a/content/it/containerization.md +++ b/content/it/containerization.md @@ -15,4 +15,4 @@ Prima che i container si diffondessero, le organizzazioni si affidavano alle [ma ## In che modo aiuta -Le immagini container sono leggere (a differenza delle macchine virtuali tradizionali) e il processo di containerizzazione richiede un file con un elenco di dipendenze. Questo file può prevedere un [controllo di versione](/it/version-control/) e il processo di creazione può essere automatizzato, permettendo all'organizzazione di concentrarsi su altre priorità, mentre i processi automatizzati si occupano della creazione. L'immagine container è memorizzata con un identificatore univoco legato al suo esatto contenuto e alla sua configurazione. Poiché i container vengono pianificati e riprogrammati, vengono sempre ripristinati allo stato iniziale, eliminando così la deriva della configurazione. +Le immagini container sono leggere (a differenza delle macchine virtuali tradizionali) e il processo di containerizzazione richiede un file con un elenco di dipendenze. Questo file può prevedere un controllo di versione e il processo di creazione può essere automatizzato, permettendo all'organizzazione di concentrarsi su altre priorità, mentre i processi automatizzati si occupano della creazione. L'immagine container è memorizzata con un identificatore univoco legato al suo esatto contenuto e alla sua configurazione. Poiché i container vengono pianificati e riprogrammati, vengono sempre ripristinati allo stato iniziale, eliminando così la deriva della configurazione. diff --git a/content/it/immutable-infrastructure.md b/content/it/immutable-infrastructure.md index a947b2e813..7790d1b87e 100644 --- a/content/it/immutable-infrastructure.md +++ b/content/it/immutable-infrastructure.md @@ -20,6 +20,6 @@ Il funzionamento di un sistema di questo tipo diventa molto più semplice perché gli amministratori possono fare delle ipotesi su di esso. Dopotutto, sanno che nessuno può aver commesso errori o apportato cambiamenti che si è dimenticato di comunicare. L'infrastruttura immutabile va di pari passo con l'[infrastructure as code](/it/infrastructure-as-code/), -nella quale tutte le automazioni necessarie per la creazione dell'infrastruttura sono conservate in un [controllo di versione](/it/version-control/) (ad esempio, Git). +nella quale tutte le automazioni necessarie per la creazione dell'infrastruttura sono conservate in un controllo di versione (ad esempio, Git). Questa combinazione di immutabilità e controllo di versione significa che c'è un persistente registro dei log di ogni modifica autorizzata al sistema. From bb7b880df3dc49509a8b050874d2cfa145741330 Mon Sep 17 00:00:00 2001 From: Flavien Hardy Date: Wed, 3 May 2023 00:32:04 -0400 Subject: [PATCH 175/295] [fr] Add DevOps term translation Signed-off-by: Flavien Hardy --- content/fr/devops.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/fr/devops.md diff --git a/content/fr/devops.md b/content/fr/devops.md new file mode 100644 index 0000000000..547f283e4f --- /dev/null +++ b/content/fr/devops.md @@ -0,0 +1,34 @@ +--- +title: DevOps +status: Completed +category: concept +tags: ["methodology", "", ""] +--- + + +## Ce que c'est + +Le DevOps est une méthodologie dans laquelle une équipe gère le processus complet du développement d'une application jusqu'aux opérations en production, d'où le terme DevOps. +Ceci va au delà de l'implémentation de technologies et demande un changement complet dans la culture et les processus. +Le DevOps fait appel à un groupe d'ingénieurs travaillant sur des petits composants (en opposition à un fonctionnalité complète), permettant ainsi de réduire les actions de passations – une source d'erreurs commune. + +## Problème auquel il répond + +Traditionnellement, dans les organisations complexes possédant des [applications monolithiques](/monolithic-apps/) [fortement couplées](/tightly-coupled-architectures/), +le travail était généralement fragmenté entre en plusieurs équipes. +Ce fonctionnement menait à de nombreuses passations entre les équipes et allongeait les délais de livraison. +À chaque nouveau composant ou nouvelle mise à jour, le résultat était mis en file d'attente pour la prochaine équipe. +Étant donné que chaque individu ne travaillait que sur de petites parties du projet, cette approche menait à un manque de +responsabilité. +Le rôle de chacun était ainsi de fournir le travail à l'équipe suivante, et non pas de délivrer la fonctionnalité à l'utilisateur +— un manque clair d'alignement des priorités. + +Une fois le code livré en production, ce dernier passé entre les mains de tellement de différents développeurs, et ayant attendu dans tellement de files d'attente, il en devenait alors compliqué de tracer l'origine d'un problème en cas de dysfonctionnement du code. +Le DevOps vient chambouler cette approche. + +## Quel en est l'utilité + +Avoir une seule équipe en charge du cycle de vie d'une application permet de +minimiser les passations, réduisant ainsi les risques lors des déploiements en production, améliorant +la qualité du code car les équipes sont également responsable de sa mise en production et augmentant +la satisfaction des employés de part le gain d'autonomie et de responsabilité. \ No newline at end of file From 094c2587c0a985fc728c6260bd84819c14c2e51d Mon Sep 17 00:00:00 2001 From: Flavien Hardy Date: Sun, 16 Jul 2023 23:18:47 -0400 Subject: [PATCH 176/295] Update devops for Krast comments Signed-off-by: Flavien Hardy --- content/fr/devops.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/devops.md b/content/fr/devops.md index 547f283e4f..f36ff3c32d 100644 --- a/content/fr/devops.md +++ b/content/fr/devops.md @@ -10,12 +10,12 @@ tags: ["methodology", "", ""] Le DevOps est une méthodologie dans laquelle une équipe gère le processus complet du développement d'une application jusqu'aux opérations en production, d'où le terme DevOps. Ceci va au delà de l'implémentation de technologies et demande un changement complet dans la culture et les processus. -Le DevOps fait appel à un groupe d'ingénieurs travaillant sur des petits composants (en opposition à un fonctionnalité complète), permettant ainsi de réduire les actions de passations – une source d'erreurs commune. +Le DevOps fait appel à un groupe d'ingénieurs travaillant sur des petits composants (en opposition à une fonctionnalité complète), permettant ainsi de réduire les actions de passations – une source d'erreurs commune. ## Problème auquel il répond Traditionnellement, dans les organisations complexes possédant des [applications monolithiques](/monolithic-apps/) [fortement couplées](/tightly-coupled-architectures/), -le travail était généralement fragmenté entre en plusieurs équipes. +le travail était généralement fragmenté entre plusieurs équipes. Ce fonctionnement menait à de nombreuses passations entre les équipes et allongeait les délais de livraison. À chaque nouveau composant ou nouvelle mise à jour, le résultat était mis en file d'attente pour la prochaine équipe. Étant donné que chaque individu ne travaillait que sur de petites parties du projet, cette approche menait à un manque de @@ -23,7 +23,7 @@ responsabilité. Le rôle de chacun était ainsi de fournir le travail à l'équipe suivante, et non pas de délivrer la fonctionnalité à l'utilisateur — un manque clair d'alignement des priorités. -Une fois le code livré en production, ce dernier passé entre les mains de tellement de différents développeurs, et ayant attendu dans tellement de files d'attente, il en devenait alors compliqué de tracer l'origine d'un problème en cas de dysfonctionnement du code. +Une fois le code livré en production, ce dernier passé entre les mains de tellement de différents développeurs, ayant attendu dans tellement de files d'attente, il en devenait alors compliqué de tracer l'origine d'un problème en cas de dysfonctionnement du code. Le DevOps vient chambouler cette approche. ## Quel en est l'utilité @@ -31,4 +31,4 @@ Le DevOps vient chambouler cette approche. Avoir une seule équipe en charge du cycle de vie d'une application permet de minimiser les passations, réduisant ainsi les risques lors des déploiements en production, améliorant la qualité du code car les équipes sont également responsable de sa mise en production et augmentant -la satisfaction des employés de part le gain d'autonomie et de responsabilité. \ No newline at end of file +la satisfaction des employés grâce au gain d'autonomie et de responsabilité. \ No newline at end of file From 0fcc260e88f073f1ec8969a8cab902089726296e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Mon, 17 Jul 2023 10:53:11 +0200 Subject: [PATCH 177/295] Fixes after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/immutable-infrastructure.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/immutable-infrastructure.md b/content/fr/immutable-infrastructure.md index a6afa1fad8..ce396c7acd 100644 --- a/content/fr/immutable-infrastructure.md +++ b/content/fr/immutable-infrastructure.md @@ -6,8 +6,8 @@ tags: ["infrastructure", "property", ""] --- L'infrastructure immuable fait référence à l'infrastructure informatique ([machines virtuelles](/virtual-machine/), [conteneurs](/container/), équipements réseau) qui ne peut pas être modifiée une fois déployée. -Cela peut être imposé à l'aide d'un processus automatisé qui écrase les modifications non autorisées, ou à l'aide d'un système qui n'autorise aucune modification avant tout. -Les conteneurs sont un bon exemple d'infrastructure immuable, car des modifications persistantes aux conteneurs ne peuvent être apportées qu'en créant une nouvelle version du conteneur ou en recréant le conteneur existant à partir de son image. +Cela peut être imposé à l'aide d'un processus automatisé qui écrase les modifications non autorisées, ou à l'aide d'un système qui, dés le départ, n'autorise aucune modification. +Les conteneurs sont un bon exemple d'infrastructure immuable, car des modifications persistantes ne peuvent être apportées aux conteneurs qu'en créant une nouvelle version du conteneur ou en recréant le conteneur existant à partir de son image. En empêchant ou en identifiant les modifications non autorisées, les infrastructures immuables facilitent l'identification et la réduction des risques de sécurité. L'exploitation d'un tel système devient beaucoup plus simple, car les administrateurs peuvent faire des hypothèses à son sujet. From d0c49f999ebab8efd573e77d621334fe5a0fa0d6 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Mon, 17 Jul 2023 11:37:33 +0200 Subject: [PATCH 178/295] Fix sestegra feedbacks Signed-off-by: Ludovic Logiou --- content/fr/kubernetes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index a7a6f84748..a94613bacf 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -10,7 +10,7 @@ tags: ["infrastructure", "fundamental", ""] Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneurs open source. Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gère des applications à travers un [système distribué](/distributed-systems/). -Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications conteneurisées. +Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications conteneurisées. Kubernetes permet l'automatisation et l'extensibilité, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessous) et reproductible. Kubernetes est extensible via ses [API](/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. @@ -22,10 +22,10 @@ L'automatisation de l'infrastructure et la gestion de configuration déclarative ## Quel en est l'utilité -Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/) Kubernetes aide à l'automatisation, mais a l'avantage de fonctionner avec des conteneurs. +Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/), Kubernetes aide à l'automatisation, mais a l'avantage de fonctionner avec des conteneurs. Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/virtual-machine/) ou physiques. -De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent - souvent via un manifeste (p. ex., YAML) — à quoi l'infrastructure devrait ressembler. +De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent — souvent via un manifeste (p. ex., YAML) — à quoi l'infrastructure devrait ressembler. Kubernetes s'occupe ensuite du "comment". Il en résulte que Kubernetes est extrêmement compatible avec l'infrastructure en tant que code. From 8a3957d0c31ecf65d86ddc0597261dc105fa91c1 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Mon, 17 Jul 2023 11:40:56 +0200 Subject: [PATCH 179/295] Add missing ^ Signed-off-by: Ludovic Logiou --- content/fr/cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/cluster.md b/content/fr/cluster.md index 50038f4382..8cfd35a2eb 100644 --- a/content/fr/cluster.md +++ b/content/fr/cluster.md @@ -15,7 +15,7 @@ L'ensemble de tous ces services [conteneurisés](/containerization/), connectés ## Problème auquel il répond Un logiciel qui s'exécute sur un seul ordinateur représente un point de défaillance unique -— si cet ordinateur tombe en panne, ou si accidentellement quelqu'un débranche le cable d'alimentation, +— si cet ordinateur tombe en panne, ou si accidentellement quelqu'un débranche le câble d'alimentation, alors un système critique pourrait être mis hors-ligne. C'est pourquoi généralement les logiciels modernes sont souvent construits sous forme d'[applications distribuées](/distributed-apps/), regroupées ensemble comme un cluster. From 45fda591ae96810dc0a6ce01fac385a8f0d1df84 Mon Sep 17 00:00:00 2001 From: Christophe Sauthier Date: Mon, 17 Jul 2023 10:04:26 -0400 Subject: [PATCH 180/295] Fix Ludo et Guillaume comments Signed-off-by: Christophe Sauthier --- content/fr/container.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/fr/container.md b/content/fr/container.md index 10bfdbc270..971636c17a 100644 --- a/content/fr/container.md +++ b/content/fr/container.md @@ -10,7 +10,7 @@ tags: ["application", "fundamental", ""] Un conteneur est un processus qui fonctionne avec des contraintes de ressources et de capacités gérées par le système d'exploitation d'un ordinateur. Les fichiers accessibles au processus du conteneur sont regroupés dans une image de conteneur. Les conteneurs sont exécutés les uns à côté des autres sur la même machine, -mais habituellement le système d'exploitation empêche les processus de conteneurs différents d'interagir les uns avec les autres. +mais généralement le système d'exploitation empêche les processus de conteneurs différents d'interagir les uns avec les autres. ## Problème auquel il répond @@ -22,7 +22,7 @@ De plus, la maintenance, la mise à jour et le lancement d'un système d'exploit ## Quel en est l'utilité Les conteneurs partagent le même système d'exploitation et ses ressources machine, -et se répartissent la surcharge des ressources dues au système d'exploitation, permettant un usage efficace de la machine physique. +et se partagent donc la charge additionnelle des ressources dues au système d'exploitation, ce qui permet un usage efficace de la machine physique. Cette possibilité est uniquement offerte, car les conteneurs sont habituellement limités dans leurs interactions mutuelles. Ceci permet de faire fonctionner beaucoup plus d'applications sur la même machine physique. From bf5665803fd745b7a1e2fb9cb362c1bc8a29e7bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:24:27 +0000 Subject: [PATCH 181/295] Bump rojopolis/spellcheck-github-actions from 0.33.0 to 0.33.1 Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.33.0 to 0.33.1. - [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases) - [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md) - [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/0.33.0...0.33.1) --- updated-dependencies: - dependency-name: rojopolis/spellcheck-github-actions dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/es-spellcheck.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/es-spellcheck.yml b/.github/workflows/es-spellcheck.yml index 4c79c2cc4a..d9ed4be5c9 100644 --- a/.github/workflows/es-spellcheck.yml +++ b/.github/workflows/es-spellcheck.yml @@ -29,6 +29,6 @@ jobs: set -o errexit diff content/es/.wordlist.txt <(LC_ALL= sort -f content/es/.wordlist.txt) - name: GitHub Spellcheck Action - uses: rojopolis/spellcheck-github-actions@0.33.0 + uses: rojopolis/spellcheck-github-actions@0.33.1 with: config_path: content/es/.spellcheck.yml diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 79a07ba888..b648add9a3 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -25,4 +25,4 @@ jobs: - uses: actions/checkout@v3 - name: GitHub Spellcheck Action - uses: rojopolis/spellcheck-github-actions@0.33.0 + uses: rojopolis/spellcheck-github-actions@0.33.1 From d6a8d358ce11f7705cdb69535f7eb4d55e2bc336 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Mon, 17 Jul 2023 17:43:44 +0200 Subject: [PATCH 182/295] [en] update idempotence Signed-off-by: Guillaume Bernard --- content/en/idempotence.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/idempotence.md b/content/en/idempotence.md index 1c2e4043e3..358d4b3326 100644 --- a/content/en/idempotence.md +++ b/content/en/idempotence.md @@ -7,4 +7,4 @@ tags: ["property", "", ""] In maths or computer science, idempotence describes an operation that always leads to the same outcome, no matter how many times you execute it. -If the parameters are the same, an idempotent operation won't affect the application it calls. +If the parameters are the same, executing an idempotent operation several times will have no additional effect. From e4b574c682b3093961851683f64cc06da1780971 Mon Sep 17 00:00:00 2001 From: Ludovic Logiou Date: Tue, 18 Jul 2023 07:52:52 +0200 Subject: [PATCH 183/295] Switch Cloud Native context Signed-off-by: Ludovic Logiou --- content/fr/cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/cluster.md b/content/fr/cluster.md index 8cfd35a2eb..a03fc70eeb 100644 --- a/content/fr/cluster.md +++ b/content/fr/cluster.md @@ -8,7 +8,7 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est Un cluster est un groupe d'ordinateurs ou d'applications qui fonctionnent ensemble dans un but commun. -Dans le contexte du cloud native computing, le terme est souvent appliqué à [Kubernetes](/kubernetes/). +Dans un contexte Cloud Native, le terme est souvent appliqué à [Kubernetes](/kubernetes/). Un cluster Kubernetes est un ensemble de services (ou de charges de travail) qui s'exécutent dans leurs propres conteneurs, souvent sur des machines différentes. L'ensemble de tous ces services [conteneurisés](/containerization/), connectés au travers du réseau, représente un cluster. From 17c9db670e7a20e2db8ada1f14d0df45b9c0a7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Tue, 18 Jul 2023 12:07:53 +0200 Subject: [PATCH 184/295] [dev-fr] Add missing sestegra for merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- .github/settings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/settings.yml b/.github/settings.yml index 8b5c2ef5d2..2c6e042df8 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -418,6 +418,7 @@ branches: - huats - fydrah - Krast76 + - sestegra teams: [] enforce_admins: null required_linear_history: null From b346bf4a475c13a8a9dc0e5138162b81563b4fa3 Mon Sep 17 00:00:00 2001 From: Nate W Date: Tue, 18 Jul 2023 12:39:28 -0700 Subject: [PATCH 185/295] Updating how server is launched locally (#2222) updating how server is launched locally adding dev dependencies to support adding netlify.toml and specifying node and hugo versions Signed-off-by: Nate W --- .gitignore | 3 + README.md | 2 +- netlify.toml | 3 + package-lock.json | 31880 ++++++++++++++++++++++++++++++++++++++++++-- package.json | 5 +- 5 files changed, 31061 insertions(+), 832 deletions(-) create mode 100644 netlify.toml diff --git a/.gitignore b/.gitignore index 499b89d879..410a3b8e40 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ resources/ node_modules/ .hugo_build.lock .DS_Store + +# Local Netlify folder +.netlify diff --git a/README.md b/README.md index 34216b5c0e..a4a5991ff6 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,6 @@ git submodule update --init --recursive npm install ``` -You can then run the site using `hugo server`. +You can then run the site using `npm run serve` (select "[Hugo]"). [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?repo=cncf/glossary) diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000000..3216ff75d6 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,3 @@ +[build.environment] +NODE_VERSION = "18.16.1" +HUGO_VERSION = "0.115.2" diff --git a/package-lock.json b/package-lock.json index 21ff5db54c..861bc9ba03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,108 @@ }, "devDependencies": { "autoprefixer": "^9.8.6", + "hugo-extended": "^0.115.2", + "netlify-cli": "^15.9.0", "postcss-cli": "^7.1.2" } }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -51,6 +150,42 @@ "node": ">= 8" } }, + "node_modules/@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -137,6 +272,26 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -146,6 +301,16 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -187,6 +352,100 @@ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -239,6 +498,37 @@ "url": "https://opencollective.com/browserslist" } }, + "node_modules/careful-downloader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/careful-downloader/-/careful-downloader-3.0.0.tgz", + "integrity": "sha512-5KMIPa0Yoj+2tY6OK9ewdwcPebp+4XS0dMYvvF9/8fkFEfvnEpWmHWYs9JNcZ7RZUvY/v6oPzLpmmTzSIbroSA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "decompress": "^4.2.1", + "fs-extra": "^11.1.1", + "got": "^12.6.0", + "is-path-inside": "^4.0.0", + "tempy": "^3.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/careful-downloader/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -305,6 +595,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, "node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -320,76 +622,261 @@ "node": ">=4" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "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==", "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dependency-graph": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", - "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", + "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==", "dev": true, "engines": { - "node": ">= 0.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/electron-to-chromium": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.1.tgz", - "integrity": "sha512-9ldvb6QMHiDpUNF1iSwBTiTT0qXEN+xIO5WlCJrC5gt0z74ofOiqR698vaJqYWnri0XZiF0YmnrFmGq/EmpGAA==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "dev": true, + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "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==", "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dev": true, + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dependency-graph": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", + "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.1.tgz", + "integrity": "sha512-9ldvb6QMHiDpUNF1iSwBTiTT0qXEN+xIO5WlCJrC5gt0z74ofOiqR698vaJqYWnri0XZiF0YmnrFmGq/EmpGAA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.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==", @@ -427,6 +914,24 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -452,6 +957,21 @@ "node": ">=8" } }, + "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==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -481,6 +1001,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -502,6 +1028,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -534,12 +1073,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "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/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -549,6 +1137,104 @@ "node": ">=8" } }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true + }, + "node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/hugo-extended": { + "version": "0.115.2", + "resolved": "https://registry.npmjs.org/hugo-extended/-/hugo-extended-0.115.2.tgz", + "integrity": "sha512-PCLH9TwexpYTVsrAI8AFV0PJLC4vHsncxTRcwvTYl7atLSWEIySBvO7z5ivx2vAvwzrgnCOVgLllIgJISsYnpg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "careful-downloader": "^3.0.0", + "log-symbols": "^5.1.0", + "read-pkg-up": "^9.1.0" + }, + "bin": { + "hugo": "lib/cli.js", + "hugo-extended": "lib/cli.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/hugo-extended/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/hugo-extended/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", @@ -595,6 +1281,12 @@ "node": ">=4" } }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -613,6 +1305,18 @@ "node": ">=8" } }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -652,6 +1356,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -661,25 +1371,82 @@ "node": ">=0.12.0" } }, - "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==", + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "engines": { + "node": ">=12" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "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==", + "dev": true + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -692,6 +1459,21 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "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==", + "dev": true + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -784,11 +1566,56 @@ "node": ">=4" } }, + "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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/lunr-languages": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -811,286 +1638,496 @@ "node": ">=8.6" } }, - "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "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==", - "dev": true, - "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": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "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==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/netlify-cli": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-15.9.0.tgz", + "integrity": "sha512-AqeT+3vb8dWErhVBtso7VjxGdszwaWH9AGnwn8tvyknjxN+qNtlXGb5PxcfI1COaL2BlSphMMGjt/jl7C1NBkQ==", "dev": true, + "hasInstallScript": true, + "hasShrinkwrap": true, "dependencies": { - "p-try": "^2.0.0" + "@bugsnag/js": "7.20.2", + "@fastify/static": "6.10.2", + "@netlify/build": "29.16.1", + "@netlify/build-info": "7.4.1", + "@netlify/config": "20.6.0", + "@netlify/edge-bundler": "8.16.4", + "@netlify/framework-info": "9.8.10", + "@netlify/local-functions-proxy": "1.1.1", + "@netlify/serverless-functions-api": "1.5.1", + "@netlify/zip-it-and-ship-it": "9.13.0", + "@octokit/rest": "19.0.13", + "@skn0tt/lambda-local": "2.0.3", + "ansi-escapes": "6.2.0", + "ansi-styles": "6.2.1", + "ansi-to-html": "0.7.2", + "ascii-table": "0.0.9", + "backoff": "2.5.0", + "better-opn": "3.0.2", + "boxen": "7.1.1", + "chalk": "5.2.0", + "chokidar": "3.5.3", + "ci-info": "3.8.0", + "clean-deep": "3.4.0", + "commander": "10.0.1", + "comment-json": "4.2.3", + "concordance": "5.0.4", + "configstore": "6.0.0", + "content-type": "1.0.5", + "cookie": "0.5.0", + "copy-template-dir": "1.4.0", + "cron-parser": "4.8.1", + "debug": "4.3.4", + "decache": "4.6.2", + "dot-prop": "7.2.0", + "dotenv": "16.0.3", + "env-paths": "3.0.0", + "envinfo": "7.8.1", + "etag": "1.8.1", + "execa": "5.1.1", + "express": "4.18.2", + "express-logging": "1.1.1", + "extract-zip": "2.0.1", + "fastest-levenshtein": "1.0.16", + "fastify": "4.17.0", + "find-up": "6.3.0", + "flush-write-stream": "2.0.0", + "folder-walker": "3.2.0", + "from2-array": "0.0.4", + "fuzzy": "0.1.3", + "get-port": "5.1.1", + "gh-release-fetch": "4.0.3", + "git-repo-info": "2.1.1", + "gitconfiglocal": "2.1.0", + "hasbin": "1.2.3", + "hasha": "5.2.2", + "http-proxy": "1.18.1", + "http-proxy-middleware": "2.0.6", + "https-proxy-agent": "5.0.1", + "inquirer": "6.5.2", + "inquirer-autocomplete-prompt": "1.4.0", + "is-docker": "3.0.0", + "is-stream": "3.0.0", + "is-wsl": "2.2.0", + "isexe": "2.0.0", + "jsonwebtoken": "9.0.1", + "jwt-decode": "3.1.2", + "listr": "0.14.3", + "locate-path": "7.2.0", + "lodash": "4.17.21", + "log-symbols": "5.1.0", + "log-update": "5.0.1", + "minimist": "1.2.8", + "multiparty": "4.2.3", + "netlify": "13.1.10", + "netlify-headers-parser": "7.1.2", + "netlify-redirect-parser": "14.1.3", + "netlify-redirector": "0.4.0", + "node-fetch": "2.6.12", + "node-version-alias": "3.4.1", + "ora": "6.3.1", + "p-filter": "3.0.0", + "p-map": "5.5.0", + "p-wait-for": "5.0.2", + "parallel-transform": "1.2.0", + "parse-github-url": "1.0.2", + "parse-gitignore": "2.0.0", + "path-key": "4.0.0", + "prettyjson": "1.2.5", + "pump": "3.0.0", + "raw-body": "2.5.2", + "read-pkg-up": "9.1.0", + "semver": "7.5.4", + "source-map-support": "0.5.21", + "strip-ansi-control-characters": "2.0.0", + "tabtab": "3.0.2", + "tempy": "3.0.0", + "terminal-link": "3.0.0", + "through2-filter": "3.0.0", + "through2-map": "3.0.0", + "to-readable-stream": "3.0.0", + "toml": "3.0.0", + "ulid": "2.3.0", + "unixify": "1.0.0", + "update-notifier": "6.0.2", + "uuid": "9.0.0", + "wait-port": "1.0.4", + "winston": "3.8.2", + "write-file-atomic": "5.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "netlify": "bin/run.mjs", + "ntl": "bin/run.mjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.18.0 || >=16.0.0" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/netlify-cli/node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@babel/highlight": "^7.22.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/netlify-cli/node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/netlify-cli/node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/netlify-cli/node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "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==", + "node_modules/netlify-cli/node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/netlify-cli/node_modules/@babel/highlight/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==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=0.8.0" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/netlify-cli/node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/netlify-cli/node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=4" } }, - "node_modules/postcss-cli": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-7.1.2.tgz", - "integrity": "sha512-3mlEmN1v2NVuosMWZM2tP8bgZn7rO5PYxRRrXtdSyL5KipcgBDjJ9ct8/LKxImMCJJi3x5nYhCGFJOkGyEqXBQ==", + "node_modules/netlify-cli/node_modules/@babel/parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "chokidar": "^3.3.0", - "dependency-graph": "^0.9.0", - "fs-extra": "^9.0.0", - "get-stdin": "^8.0.0", - "globby": "^11.0.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "postcss-reporter": "^6.0.0", - "pretty-hrtime": "^1.0.3", - "read-cache": "^1.0.0", - "yargs": "^15.0.2" - }, "bin": { - "postcss": "bin/postcss" + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "node_modules/netlify-cli/node_modules/@bugsnag/browser": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.20.2.tgz", + "integrity": "sha512-4J4s53ZpYr3hHA+QjxUjOI6U+A8+XuUVH45UshE87Jp2Y4mV8ML2DovejqJS8J8yjdbnh2z1Wtg/v3WUNt4ayQ==", "dev": true, "dependencies": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "@bugsnag/core": "^7.19.0" } }, - "node_modules/postcss-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", - "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "node_modules/netlify-cli/node_modules/@bugsnag/core": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.19.0.tgz", + "integrity": "sha512-2KGwdaLD9PhR7Wk7xPi3jGuGsKTatc/28U4TOZIDU3CgC2QhGjubwiXSECel5gwxhZ3jACKcMKSV2ovHhv1NrA==", "dev": true, "dependencies": { - "chalk": "^2.4.1", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "postcss": "^7.0.7" - }, - "engines": { - "node": ">=6" + "@bugsnag/cuid": "^3.0.0", + "@bugsnag/safe-json-stringify": "^6.0.0", + "error-stack-parser": "^2.0.3", + "iserror": "0.0.2", + "stack-generator": "^2.0.3" } }, - "node_modules/postcss-reporter/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/netlify-cli/node_modules/@bugsnag/cuid": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.2.tgz", + "integrity": "sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@bugsnag/js": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-7.20.2.tgz", + "integrity": "sha512-Q08k0h0h6NFwFGkFmib39Uln2WpvJdqT1EGF1JlyYiGW03Y+VopVb9r37pZrRrN9IY08mxaIEO8la5xeaWAs6A==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" - }, + "@bugsnag/browser": "^7.20.2", + "@bugsnag/node": "^7.19.0" + } + }, + "node_modules/netlify-cli/node_modules/@bugsnag/node": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.19.0.tgz", + "integrity": "sha512-c4snyxx5d/fsMogmgehFBGc//daH6+4XCplia4zrEQYltjaQ+l8ud0dPx623DgJl/2j1+2zlRc7y7IHSd7Gm5w==", + "dev": true, + "dependencies": { + "@bugsnag/core": "^7.19.0", + "byline": "^5.0.0", + "error-stack-parser": "^2.0.2", + "iserror": "^0.0.2", + "pump": "^3.0.0", + "stack-generator": "^2.0.3" + } + }, + "node_modules/netlify-cli/node_modules/@bugsnag/safe-json-stringify": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz", + "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=0.1.90" } }, - "node_modules/postcss-reporter/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/netlify-cli/node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/postcss-reporter/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/netlify-cli/node_modules/@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, - "node_modules/postcss-reporter/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "node_modules/netlify-cli/node_modules/@dependents/detective-less": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-4.0.0.tgz", + "integrity": "sha512-0udn+HKjGUzTX4Z+0vXdEJVsO28gxy5QxWjeChK4ZH+bwdvIXLuztiGZk8wLyAG1+LNZ5haVHKr5j1XfJnAkyQ==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.0" + }, + "engines": { + "node": ">=14" + } }, - "node_modules/postcss-reporter/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/netlify-cli/node_modules/@fastify/accept-negotiator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", + "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=14" } }, - "node_modules/postcss-reporter/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/netlify-cli/node_modules/@fastify/ajv-compiler": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@fastify/ajv-compiler/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "node_modules/netlify-cli/node_modules/@fastify/ajv-compiler/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==", "dev": true }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "node_modules/netlify-cli/node_modules/@fastify/deepmerge": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", + "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@fastify/error": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.2.0.tgz", + "integrity": "sha512-KAfcLa+CnknwVi5fWogrLXgidLic+GXnLjijXdpl8pvkvbXU5BGa37iZO9FGvsh9ZL4y+oFi5cbHBm5UOG+dmQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@fastify/fast-json-stringify-compiler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "dev": true, + "dependencies": { + "fast-json-stringify": "^5.7.0" + } + }, + "node_modules/netlify-cli/node_modules/@fastify/send": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.0.1.tgz", + "integrity": "sha512-8jdouu0o5d0FMq1+zCKeKXc1tmOQ5tTGYdQP3MpyF9+WWrZT1KCBdh6hvoEYxOm3oJG/akdE9BpehLiJgYRvGw==", + "dev": true, + "dependencies": { + "@lukeed/ms": "^2.0.1", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "2.0.0", + "mime": "^3.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@fastify/send/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==", "dev": true, "engines": { "node": ">= 0.8" } }, - "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==", + "node_modules/netlify-cli/node_modules/@fastify/send/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==", + "dev": true, + "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/netlify-cli/node_modules/@fastify/send/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@fastify/static": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.10.2.tgz", + "integrity": "sha512-UoaMvIHSBLCZBYOVZwFRYqX2ufUhd7FFMYGDeSf0Z+D8jhYtwljjmuQGuanUP8kS4y/ZEV1a8mfLha3zNwsnnQ==", + "dev": true, + "dependencies": { + "@fastify/accept-negotiator": "^1.0.0", + "@fastify/send": "^2.0.0", + "content-disposition": "^0.5.3", + "fastify-plugin": "^4.0.0", + "glob": "^8.0.1", + "p-limit": "^3.1.0", + "readable-stream": "^4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@fastify/static/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@fastify/static/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -1105,67 +2142,63 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, + ], "dependencies": { - "pify": "^2.3.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/netlify-cli/node_modules/@fastify/static/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "node_modules/netlify-cli/node_modules/@fastify/static/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/netlify-cli/node_modules/@fastify/static/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/netlify-cli/node_modules/@fastify/static/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==", "dev": true, "funding": [ { @@ -1180,764 +2213,29561 @@ "type": "consulting", "url": "https://feross.org/support" } - ], + ] + }, + "node_modules/netlify-cli/node_modules/@fastify/static/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==", + "dev": true, "dependencies": { - "queue-microtask": "^1.2.2" + "safe-buffer": "~5.2.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "node_modules/netlify-cli/node_modules/@grpc/grpc-js": { + "version": "1.8.17", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.17.tgz", + "integrity": "sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw==", + "dev": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/netlify-cli/node_modules/@grpc/proto-loader": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", "dev": true, + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==", + "node_modules/netlify-cli/node_modules/@honeycombio/opentelemetry-node": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@honeycombio/opentelemetry-node/-/opentelemetry-node-0.4.0.tgz", + "integrity": "sha512-6PFX8FGW7uA7vQ3mxNIoN36rH9Zx5kXh4kKP9zu28nynyWyy9JE3l8PNJYd9FS2L/d88ZUpQAiQ1pROaANd5MA==", "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.7.3", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/exporter-metrics-otlp-grpc": "^0.36.1", + "@opentelemetry/exporter-metrics-otlp-proto": "^0.36.1", + "@opentelemetry/exporter-trace-otlp-grpc": "^0.36.1", + "@opentelemetry/exporter-trace-otlp-proto": "^0.36.1", + "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/sdk-metrics": "^1.10.1", + "@opentelemetry/sdk-node": "^0.36.1", + "@opentelemetry/sdk-trace-base": "^1.10.1", + "axios": "^1.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "node_modules/netlify-cli/node_modules/@humanwhocodes/momoa": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", + "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", + "dev": true, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/netlify-cli/node_modules/@import-maps/resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@import-maps/resolve/-/resolve-1.0.1.tgz", + "integrity": "sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==", "dev": true }, - "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==", + "node_modules/netlify-cli/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "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==", + "node_modules/netlify-cli/node_modules/@jest/types/node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@types/yargs-parser": "*" } }, - "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==", + "node_modules/netlify-cli/node_modules/@jest/types/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==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/netlify-cli/node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/netlify-cli/node_modules/@jest/types/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==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=7.0.0" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "node_modules/netlify-cli/node_modules/@jest/types/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==", "dev": true }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/netlify-cli/node_modules/@jest/types/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==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "node_modules/netlify-cli/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/netlify-cli/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/netlify-cli/node_modules/@lukeed/ms": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.1.tgz", + "integrity": "sha512-Xs/4RZltsAL7pkvaNStUQt7netTkyxrS0K+RILcVr3TRMS/ToOg4I6uNfhB9SlGsnWBym4U+EaXq0f0cEMNkHA==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/netlify-cli/node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" }, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@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==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "@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==", + "node_modules/netlify-cli/node_modules/@netlify/binary-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@netlify/binary-info/-/binary-info-1.0.0.tgz", + "integrity": "sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==", "dev": true }, - "@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==", + "node_modules/netlify-cli/node_modules/@netlify/build": { + "version": "29.16.1", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.16.1.tgz", + "integrity": "sha512-1D3l0NiCVEFF5aU2prVMP8MQr2Bu+UuyYe69Z7k/7GjFIx4Q1sLgewTf4p+al3LhSLT5fs52cbIec9pT9HSjyQ==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "dependencies": { + "@bugsnag/js": "^7.0.0", + "@honeycombio/opentelemetry-node": "^0.4.0", + "@netlify/cache-utils": "^5.1.5", + "@netlify/config": "^20.6.0", + "@netlify/edge-bundler": "8.16.4", + "@netlify/framework-info": "^9.8.10", + "@netlify/functions-utils": "^5.2.18", + "@netlify/git-utils": "^5.1.1", + "@netlify/plugins-list": "^6.68.0", + "@netlify/run-utils": "^5.1.1", + "@netlify/zip-it-and-ship-it": "9.13.0", + "@opentelemetry/api": "^1.4.1", + "@sindresorhus/slugify": "^2.0.0", + "ansi-escapes": "^6.0.0", + "chalk": "^5.0.0", + "clean-stack": "^4.0.0", + "execa": "^6.0.0", + "fdir": "^6.0.1", + "figures": "^5.0.0", + "filter-obj": "^5.0.0", + "got": "^12.0.0", + "hot-shots": "10.0.0", + "indent-string": "^5.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "keep-func-props": "^4.0.0", + "locate-path": "^7.0.0", + "log-process-errors": "^8.0.0", + "map-obj": "^5.0.0", + "memoize-one": "^6.0.0", + "os-name": "^5.0.0", + "p-event": "^5.0.0", + "p-every": "^2.0.0", + "p-filter": "^3.0.0", + "p-locate": "^6.0.0", + "p-reduce": "^3.0.0", + "path-exists": "^5.0.0", + "path-type": "^5.0.0", + "pkg-dir": "^7.0.0", + "pretty-ms": "^8.0.0", + "ps-list": "^8.0.0", + "read-pkg-up": "^9.0.0", + "readdirp": "^3.4.0", + "resolve": "^2.0.0-next.1", + "rfdc": "^1.3.0", + "safe-json-stringify": "^1.2.0", + "semver": "^7.3.8", + "string-width": "^5.0.0", + "strip-ansi": "^7.0.0", + "supports-color": "^9.0.0", + "terminal-link": "^3.0.0", + "ts-node": "^10.9.1", + "typescript": "^5.0.0", + "uuid": "^9.0.0", + "yargs": "^17.6.0" + }, + "bin": { + "netlify-build": "bin.js" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/netlify-cli/node_modules/@netlify/build-info": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@netlify/build-info/-/build-info-7.4.1.tgz", + "integrity": "sha512-JucExQCHJCk8smscd+fzU2z0MM7vyw4XJJWREq9Im5i8nPy56mjG0oeODk7DB7pQK6X9wyUViwVRPF8ftwuq9Q==", "dev": true, - "requires": { - "color-convert": "^2.0.1" + "dependencies": { + "@bugsnag/js": "^7.20.0", + "@netlify/framework-info": "^9.8.10", + "dot-prop": "^7.2.0", + "find-up": "^6.3.0", + "minimatch": "^9.0.0", + "read-pkg": "^7.1.0", + "semver": "^7.3.8", + "toml": "^3.0.0", + "yaml": "^2.1.3", + "yargs": "^17.6.0" + }, + "bin": { + "build-info": "bin.js" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/netlify-cli/node_modules/@netlify/build-info/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/netlify-cli/node_modules/@netlify/build-info/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "requires": { - "sprintf-js": "~1.0.2" + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "node_modules/netlify-cli/node_modules/@netlify/build-info/node_modules/read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build-info/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==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/netlify-cli/node_modules/@netlify/build-info/node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, - "requires": { - "fill-range": "^7.0.1" + "engines": { + "node": ">= 14" } }, - "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "engines": { + "node": ">=14.16" }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true, - "requires": { - "callsites": "^2.0.0" + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" } }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true, - "requires": { - "caller-callsite": "^2.0.0" + "engines": { + "node": ">=14.16" } }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } }, - "caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dev": true, - "requires": { - "color-name": "~1.1.4" + "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" } }, - "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==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "engines": { + "node": ">=12.20.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "dependency-graph": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", - "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", "dev": true, - "requires": { - "path-type": "^4.0.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "electron-to-chromium": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.1.tgz", - "integrity": "sha512-9ldvb6QMHiDpUNF1iSwBTiTT0qXEN+xIO5WlCJrC5gt0z74ofOiqR698vaJqYWnri0XZiF0YmnrFmGq/EmpGAA==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "emoji-regex": { + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/normalize-url": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "engines": { + "node": ">=12.20" } }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true, - "requires": { - "reusify": "^1.0.4" + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true, - "requires": { - "to-regex-range": "^5.0.1" + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/parse-ms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", + "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/netlify-cli/node_modules/@netlify/build/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==", "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, - "optional": true + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/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==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "get-stdin": { + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/pretty-ms": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", + "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==", "dev": true, - "requires": { - "is-glob": "^4.0.1" + "dependencies": { + "parse-ms": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/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==", + "dev": true, + "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" + } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/build/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "node_modules/netlify-cli/node_modules/@netlify/cache-utils": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@netlify/cache-utils/-/cache-utils-5.1.5.tgz", + "integrity": "sha512-lMNdFmy2Yu3oVquSPooRDLxJ8QOsIX6X6vzA2pKz/9V2LQFJiqBukggXM+Rnqzk1regPpdJ0jK3dPGvOKaRQgg==", "dev": true, - "requires": { - "import-from": "^2.1.0" + "dependencies": { + "cpy": "^9.0.0", + "get-stream": "^6.0.0", + "globby": "^13.0.0", + "junk": "^4.0.0", + "locate-path": "^7.0.0", + "move-file": "^3.0.0", + "path-exists": "^5.0.0", + "readdirp": "^3.4.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" } }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "node_modules/netlify-cli/node_modules/@netlify/cache-utils/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "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" } }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "node_modules/netlify-cli/node_modules/@netlify/cache-utils/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==", "dev": true, - "requires": { - "resolve-from": "^3.0.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/cache-utils/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "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==", + "node_modules/netlify-cli/node_modules/@netlify/config": { + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.6.0.tgz", + "integrity": "sha512-YPWvkq7hYgYLVsbEPbGq7aZQh59D2h5NeIwgRZxabsheIMriyxpDZVVajK1+z1U0Z2DsJxn+XSOJSNSSKUIk4w==", "dev": true, - "requires": { - "binary-extensions": "^2.0.0" + "dependencies": { + "chalk": "^5.0.0", + "cron-parser": "^4.1.0", + "deepmerge": "^4.2.2", + "dot-prop": "^7.0.0", + "execa": "^6.0.0", + "fast-safe-stringify": "^2.0.7", + "figures": "^5.0.0", + "filter-obj": "^5.0.0", + "find-up": "^6.0.0", + "indent-string": "^5.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "map-obj": "^5.0.0", + "netlify": "^13.1.10", + "netlify-headers-parser": "^7.1.2", + "netlify-redirect-parser": "^14.1.3", + "node-fetch": "^3.3.1", + "omit.js": "^2.0.2", + "p-locate": "^6.0.0", + "path-type": "^5.0.0", + "toml": "^3.0.0", + "tomlify-j0.4": "^3.0.0", + "validate-npm-package-name": "^4.0.0", + "yargs": "^17.6.0" + }, + "bin": { + "netlify-config": "bin.js" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/config/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } }, - "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==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", "dev": true, - "requires": { - "is-extglob": "^2.1.1" + "engines": { + "node": ">=12.20.0" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "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==", + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "locate-path": { + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/config/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==", + "dev": true, + "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/netlify-cli/node_modules/@netlify/config/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==", + "dev": true, + "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/netlify-cli/node_modules/@netlify/config/node_modules/path-type": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, - "requires": { - "p-locate": "^4.1.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/netlify-cli/node_modules/@netlify/config/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, - "requires": { - "chalk": "^2.0.1" + "engines": { + "node": ">=12.20" }, - "dependencies": { - "ansi-styles": { + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler": { + "version": "8.16.4", + "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-8.16.4.tgz", + "integrity": "sha512-5sYymRzZLzdSp1AtCcuEdjeQ/QcJ6LORERU5Nr48MY5Y9GKEHC7uIeQFwLT/YMgnDRd4FqPv+g8RBSu3HP9Czg==", + "dev": true, + "dependencies": { + "@import-maps/resolve": "^1.0.1", + "ajv": "^8.11.2", + "ajv-errors": "^3.0.0", + "better-ajv-errors": "^1.2.0", + "common-path-prefix": "^3.0.0", + "env-paths": "^3.0.0", + "execa": "^6.0.0", + "find-up": "^6.3.0", + "get-port": "^6.1.2", + "glob-to-regexp": "^0.4.1", + "is-path-inside": "^4.0.0", + "jsonc-parser": "^3.2.0", + "node-fetch": "^3.1.1", + "node-stream-zip": "^1.15.0", + "p-retry": "^5.1.1", + "p-wait-for": "^4.1.0", + "path-key": "^4.0.0", + "regexp-tree": "^0.1.24", + "semver": "^7.3.8", + "tmp-promise": "^3.0.3", + "uuid": "^9.0.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/ajv-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", + "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", + "dev": true, + "peerDependencies": { + "ajv": "^8.0.1" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/get-port": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz", + "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/p-wait-for": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz", + "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==", + "dev": true, + "dependencies": { + "p-timeout": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/edge-bundler/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild/-/esbuild-0.14.39.tgz", + "integrity": "sha512-C3xpwdT2xw6SnSb+hLQoxjtikAKiz6BjQjzlIaysHDpGbmIcmUHZ/X+dyLtCqAvf15WNK5GSBZYOlpgcOE0WZA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@netlify/esbuild-android-64": "0.14.39", + "@netlify/esbuild-android-arm64": "0.14.39", + "@netlify/esbuild-darwin-64": "0.14.39", + "@netlify/esbuild-darwin-arm64": "0.14.39", + "@netlify/esbuild-freebsd-64": "0.14.39", + "@netlify/esbuild-freebsd-arm64": "0.14.39", + "@netlify/esbuild-linux-32": "0.14.39", + "@netlify/esbuild-linux-64": "0.14.39", + "@netlify/esbuild-linux-arm": "0.14.39", + "@netlify/esbuild-linux-arm64": "0.14.39", + "@netlify/esbuild-linux-mips64le": "0.14.39", + "@netlify/esbuild-linux-ppc64le": "0.14.39", + "@netlify/esbuild-linux-riscv64": "0.14.39", + "@netlify/esbuild-linux-s390x": "0.14.39", + "@netlify/esbuild-netbsd-64": "0.14.39", + "@netlify/esbuild-openbsd-64": "0.14.39", + "@netlify/esbuild-sunos-64": "0.14.39", + "@netlify/esbuild-windows-32": "0.14.39", + "@netlify/esbuild-windows-64": "0.14.39", + "@netlify/esbuild-windows-arm64": "0.14.39" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-android-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz", + "integrity": "sha512-azq+lsvjRsKLap8ubIwSJXGyknUACqYu5h98Fvyoh40Qk4QXIVKl16JIJ4s+B7jy2k9qblEc5c4nxdDA3aGbVA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-android-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz", + "integrity": "sha512-WhIP7ePq4qMC1sxoaeB9SsJqSW6uzW7XDj/IuWl1l9r94nwxywU1sYdVLaF2mZr15njviazYjVr8x1d+ipwL3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-darwin-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz", + "integrity": "sha512-eF4GvLYiDxtcyjFT55+h+8c8A2HltjeMezCqkt3AQSgOdu1nhlvwbBhIdg2dyM6gKEaEm5hBtTbicEDSwsLodA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-darwin-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz", + "integrity": "sha512-b7rtnX/VtYwNbUCxs3eulrCWJ+u2YvqDcXiIV1ka+od+N0fTx+4RrVkVp1lha9L0wEJYK9J7UWZOMLMyd1ynRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-freebsd-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz", + "integrity": "sha512-XtusxDJt2hUKUdggbTFolMx0kJL2zEa4STI7YwpB+ukEWoW5rODZjiLZbqqYLcjDH8k4YwHaMxs103L8eButEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-freebsd-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz", + "integrity": "sha512-A9XZKai+k6kfndCtN6Dh2usT28V0+OGxzFdZsANONPQiEUTrGZCgwcHWiVlVn7SeAwPR1tKZreTnvrfj8cj7hA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-32": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz", + "integrity": "sha512-ZQnqk/82YRvINY+aF+LlGfRZ19c5mH0jaxsO046GpIOPx6PcXHG8JJ2lg+vLJVe4zFPohxzabcYpwFuT4cg/GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz", + "integrity": "sha512-IQtswVw7GAKNX/3yV390wSfSXvMWy0d5cw8csAffwBk9gupftY2lzepK4Cn6uD/aqLt3Iku33FbHop/2nPGfQA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-arm": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz", + "integrity": "sha512-QdOzQniOed0Bz1cTC9TMMwvtAqKayYv66H4edJlbvElC81yJZF/c9XhmYWJ6P5g4nkChZubQ5RcQwTLmrFGexg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz", + "integrity": "sha512-4Jie4QV6pWWuGN7TAshNMGbdTA9+VbRkv3rPIxhgK5gBfmsAV1yRKsumE4Y77J0AZNRiOriyoec4zc1qkmI3zg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-mips64le": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz", + "integrity": "sha512-Htozxr95tw4tSd86YNbCLs1eoYQzNu/cHpzFIkuJoztZueUhl8XpRvBdob7n3kEjW1gitLWAIn8XUwSt+aJ1Tg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-ppc64le": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz", + "integrity": "sha512-tFy0ufWIdjeuk1rPHee00TZlhr9OSF00Ufb4ROFyt2ArKuMSkWRJuDgx6MtZcAnCIN4cybo/xWl3MKTM+scnww==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-riscv64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz", + "integrity": "sha512-ZzfKvwIxL7wQnYbVFpyNW0wotnLoKageUEM57RbjekesJoNQnqUR6Usm+LDZoB8iRsI58VX1IxnstP0cX8vOHw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-linux-s390x": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz", + "integrity": "sha512-yjC0mFwnuMRoh0WcF0h71MF71ytZBFEQQTRdgiGT0+gbC4UApBqnTkJdLx32RscBKi9skbMChiJ748hDJou6FA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-netbsd-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz", + "integrity": "sha512-mIq4znOoz3YfTVdv3sIWfR4Zx5JgMnT4srlhC5KYVHibhxvyDdin5txldYXmR4Zv4dZd6DSuWFsn441aUegHeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-openbsd-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz", + "integrity": "sha512-+t6QdzJCngH19hV7ClpFAeFDI2ko/HNcFbiNwaXTMVLB3hWi1sJtn+fzZck5HfzN4qsajAVqZq4nwX69SSt25A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-sunos-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz", + "integrity": "sha512-HLfXG6i2p3wyyyWHeeP4ShGDJ1zRMnf9YLJLe2ezv2KqvcKw/Un/m/FBuDW1p13oSUO7ShISMzgc1dw1GGBEOQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-windows-32": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz", + "integrity": "sha512-ZpSQcKbVSCU3ln7mHpsL/5dWsUqCNdTnC5YAArnaOwdrlIunrsbo5j4MOZRRcGExb2uvTc/rb+D3mlGb8j1rkA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-windows-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz", + "integrity": "sha512-I3gCdO8+6IDhT4Y1ZmV4o2Gg0oELv7N4kCcE4kqclz10fWHNjf19HQNHyBJe0AWnFV5ZfT154VVD31dqgwpgFw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/esbuild-windows-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz", + "integrity": "sha512-WX52W8U1lsfWcz6NWoSpDs57lgiiMHN23seq8G2bvxzGS/tvYD3dxVLLW5UPoKSnFDyVQT7b6Zkt6AkBten1yQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/framework-info": { + "version": "9.8.10", + "resolved": "https://registry.npmjs.org/@netlify/framework-info/-/framework-info-9.8.10.tgz", + "integrity": "sha512-VT8ejAaB/XU2xRpdpQinHUO1YL3+BMx6LJ49wJk2u9Yq/VI1/gYCi5VqbqTHBQXJUlOi84YuiRlrDBsLpPr8eg==", + "dev": true, + "dependencies": { + "ajv": "^8.12.0", + "filter-obj": "^5.0.0", + "find-up": "^6.3.0", + "is-plain-obj": "^4.0.0", + "locate-path": "^7.0.0", + "p-filter": "^3.0.0", + "p-locate": "^6.0.0", + "process": "^0.11.10", + "read-pkg-up": "^9.0.0", + "semver": "^7.3.8" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/framework-info/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/framework-info/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@netlify/framework-info/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==", + "dev": true, + "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/netlify-cli/node_modules/@netlify/framework-info/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==", + "dev": true, + "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/netlify-cli/node_modules/@netlify/framework-info/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/functions-utils": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.2.18.tgz", + "integrity": "sha512-da/DvWJw/yE9VBPuBkqPH0E/G3lsnxugqZqkwmA4DnPkdN/qythIBPYznw4un1tVmA5ekZRP3var8bZDZ0DPNQ==", + "dev": true, + "dependencies": { + "@netlify/zip-it-and-ship-it": "9.13.0", + "cpy": "^9.0.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/functions-utils/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@netlify/git-utils/-/git-utils-5.1.1.tgz", + "integrity": "sha512-oyHieuTZH3rKTmg7EKpGEGa28IFxta2oXuVwpPJI/FJAtBje3UE+yko0eDjNufgm3AyGa8G77trUxgBhInAYuw==", + "dev": true, + "dependencies": { + "execa": "^6.0.0", + "map-obj": "^5.0.0", + "micromatch": "^4.0.2", + "moize": "^6.1.3", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/git-utils/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy/-/local-functions-proxy-1.1.1.tgz", + "integrity": "sha512-eXSsayLT6PMvjzFQpjC9nkg2Otc3lZ5GoYele9M6f8PmsvWpaXRhwjNQ0NYhQQ2UZbLMIiO2dH8dbRsT3bMkFw==", + "dev": true, + "optionalDependencies": { + "@netlify/local-functions-proxy-darwin-arm64": "1.1.1", + "@netlify/local-functions-proxy-darwin-x64": "1.1.1", + "@netlify/local-functions-proxy-freebsd-arm64": "1.1.1", + "@netlify/local-functions-proxy-freebsd-x64": "1.1.1", + "@netlify/local-functions-proxy-linux-arm": "1.1.1", + "@netlify/local-functions-proxy-linux-arm64": "1.1.1", + "@netlify/local-functions-proxy-linux-ia32": "1.1.1", + "@netlify/local-functions-proxy-linux-ppc64": "1.1.1", + "@netlify/local-functions-proxy-linux-x64": "1.1.1", + "@netlify/local-functions-proxy-openbsd-x64": "1.1.1", + "@netlify/local-functions-proxy-win32-ia32": "1.1.1", + "@netlify/local-functions-proxy-win32-x64": "1.1.1" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-darwin-arm64/-/local-functions-proxy-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-lphJ9qqZ3glnKWEqlemU1LMqXxtJ/tKf7VzakqqyjigwLscXSZSb6fupSjQfd4tR1xqxA76ylws/2HDhc/gs+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-darwin-x64/-/local-functions-proxy-darwin-x64-1.1.1.tgz", + "integrity": "sha512-4CRB0H+dXZzoEklq5Jpmg+chizXlVwCko94d8+UHWCgy/bA3M/rU/BJ8OLZisnJaAktHoeLABKtcLOhtRHpxZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-freebsd-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-freebsd-arm64/-/local-functions-proxy-freebsd-arm64-1.1.1.tgz", + "integrity": "sha512-u13lWTVMJDF0A6jX7V4N3HYGTIHLe5d1Z2wT43fSIHwXkTs6UXi72cGSraisajG+5JFIwHfPr7asw5vxFC0P9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-freebsd-x64/-/local-functions-proxy-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-g5xw4xATK5YDzvXtzJ8S1qSkWBiyF8VVRehXPMOAMzpGjCX86twYhWp8rbAk7yA1zBWmmWrWNA2Odq/MgpKJJg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-linux-arm": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-arm/-/local-functions-proxy-linux-arm-1.1.1.tgz", + "integrity": "sha512-YsTpL+AbHwQrfHWXmKnwUrJBjoUON363nr6jUG1ueYnpbbv6wTUA7gI5snMi/gkGpqFusBthAA7C30e6bixfiA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-linux-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-arm64/-/local-functions-proxy-linux-arm64-1.1.1.tgz", + "integrity": "sha512-dPGu1H5n8na7mBKxiXQ+FNmthDAiA57wqgpm5JMAHtcdcmRvcXwJkwWVGvwfj8ShhYJHQaSaS9oPgO+mpKkgmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-linux-ia32": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-ia32/-/local-functions-proxy-linux-ia32-1.1.1.tgz", + "integrity": "sha512-Ra0FlXDrmPRaq+rYH3/ttkXSrwk1D5Zx/Na7UPfJZxMY7Qo5iY4bgi/FuzjzWzlp0uuKZOhYOYzYzsIIyrSvmw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-linux-ppc64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-ppc64/-/local-functions-proxy-linux-ppc64-1.1.1.tgz", + "integrity": "sha512-oXf1satwqwUUxz7LHS1BxbRqc4FFEKIDFTls04eXiLReFR3sqv9H/QuYNTCCDMuRcCOd92qKyDfATdnxT4HR8w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-linux-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-x64/-/local-functions-proxy-linux-x64-1.1.1.tgz", + "integrity": "sha512-bS3u4JuDg/eC0y4Na3i/29JBOxrdUvsK5JSjHfzUeZEbOcuXYf4KavTpHS5uikdvTgyczoSrvbmQJ5m0FLXfLA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-openbsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-openbsd-x64/-/local-functions-proxy-openbsd-x64-1.1.1.tgz", + "integrity": "sha512-1xLef/kLRNkBTXJ+ZGoRFcwsFxd/B2H3oeJZyXaZ3CN5umd9Mv9wZuAD74NuMt/535yRva8jtAJqvEgl9xMSdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "bin": { + "local-functions-proxy": "bin/local-functions-proxy" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-win32-ia32": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-win32-ia32/-/local-functions-proxy-win32-ia32-1.1.1.tgz", + "integrity": "sha512-4IOMDBxp2f8VbIkhZ85zGNDrZR4ey8d68fCMSOIwitjsnKav35YrCf8UmAh3UR6CNIRJdJL4MW1GYePJ7iJ8uA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "bin": { + "local-functions-proxy.exe": "bin/local-functions-proxy.exe" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/local-functions-proxy-win32-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-win32-x64/-/local-functions-proxy-win32-x64-1.1.1.tgz", + "integrity": "sha512-VCBXBJWBujVxyo5f+3r8ovLc9I7wJqpmgDn3ixs1fvdrER5Ac+SzYwYH4mUug9HI08mzTSAKZErzKeuadSez3w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "bin": { + "local-functions-proxy.exe": "bin/local-functions-proxy.exe" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/open-api": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-2.19.1.tgz", + "integrity": "sha512-RkucRf8o0vYhCDXCRHWU/EdhkVE3JhkqKmZFvMW6qCPD206GV2Cfo9JGSKb0NdN+nmHSNaYmd+9dvT6I9MP4pw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@netlify/plugins-list": { + "version": "6.68.0", + "resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.68.0.tgz", + "integrity": "sha512-OIW7oDTXFKEyzG2DQr6ndLWjYfNnSZAKbldD2dquH3V8Q6DrbGk8Dhv6LkuGOJBgrKS25SyabYOyHIVASQjrFw==", + "dev": true, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/run-utils": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@netlify/run-utils/-/run-utils-5.1.1.tgz", + "integrity": "sha512-V2B8ZB19heVKa715uOeDkztxLH7uaqZ+9U5fV7BRzbQ2514DO5Vxj9hG0irzuRLfZXZZjp/chPUesv4VVsce/A==", + "dev": true, + "dependencies": { + "execa": "^6.0.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/run-utils/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/run-utils/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/run-utils/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/run-utils/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/run-utils/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/serverless-functions-api": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.5.1.tgz", + "integrity": "sha512-c8RjIu+fkpfOGLaW0Z0iFG39GUK7sCa6M3Qy3fqouMpT00TaiheiyssnnDZGSLkNp4o+UtbRnITB1zuwDeHMLw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.13.0.tgz", + "integrity": "sha512-IK6FvXFtRuEA2sZwSmNwkfZSOA1M9tTIHLqvBaHz7h3G0qquZ6p7DMMH7UkmbkPyqp6dZTfwhZ4Stc8A6UjzJw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.22.5", + "@netlify/binary-info": "^1.0.0", + "@netlify/esbuild": "0.14.39", + "@netlify/serverless-functions-api": "^1.5.1", + "@vercel/nft": "^0.22.0", + "archiver": "^5.3.0", + "common-path-prefix": "^3.0.0", + "cp-file": "^10.0.0", + "es-module-lexer": "^1.0.0", + "execa": "^6.0.0", + "filter-obj": "^5.0.0", + "find-up": "^6.0.0", + "glob": "^8.0.3", + "is-builtin-module": "^3.1.0", + "is-path-inside": "^4.0.0", + "junk": "^4.0.0", + "locate-path": "^7.0.0", + "merge-options": "^3.0.4", + "minimatch": "^9.0.0", + "normalize-path": "^3.0.0", + "p-map": "^5.0.0", + "path-exists": "^5.0.0", + "precinct": "^11.0.0", + "require-package-name": "^2.0.1", + "resolve": "^2.0.0-next.1", + "semver": "^7.3.8", + "tmp-promise": "^3.0.2", + "toml": "^3.0.0", + "unixify": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "zip-it-and-ship-it": "dist/bin.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/auth-token": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz", + "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/core": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", + "integrity": "sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/core/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/endpoint": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.2.tgz", + "integrity": "sha512-8/AUACfE9vpRpehE6ZLfEtzkibe5nfsSwFZVMsG8qabqRt1M81qZYUFRZa1B8w8lP6cdfDJfRq9HWS+MbmR7tw==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/graphql": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.1.tgz", + "integrity": "sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==", + "dev": true, + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^7.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/openapi-types": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.13.1.tgz", + "integrity": "sha512-4EuKSk3N95UBWFau3Bz9b3pheQ8jQYbKmBL5+GSuY8YDPDwu03J4BjI+66yNi8aaX/3h1qDpb0mbBkLdr+cfGQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-paginate-rest": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", + "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "dev": true, + "dependencies": { + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.1.2.tgz", + "integrity": "sha512-R0oJ7j6f/AdqPLtB9qRXLO+wjI9pctUn8Ka8UGfGaFCcCv3Otx14CshQ89K4E88pmyYZS8p0rNTiprML/81jig==", + "dev": true, + "dependencies": { + "@octokit/types": "^9.2.3", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/request": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz", + "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/request-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz", + "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^7.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/rest": { + "version": "19.0.13", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.13.tgz", + "integrity": "sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==", + "dev": true, + "dependencies": { + "@octokit/core": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.2", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^7.1.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/netlify-cli/node_modules/@octokit/tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", + "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@octokit/types": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.5.1.tgz", + "integrity": "sha512-Zk4OUMLCSpXNI8KZZn47lVLJSsgMyCimsWWQI5hyjZg7hdYm0kjotaIkbG0Pp8SfU2CofMBzonboTqvzn3FrJA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^13.11.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/api": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", + "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/context-async-hooks": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.10.1.tgz", + "integrity": "sha512-6CC9sWOZDkUkKrAR957fmxXXlaK3uiBu5xVnuNEQ7hI7VqkUC/r0mNYIql0ouRInLz5o0HwmDuga1eXgQU7KNQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/core": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.10.1.tgz", + "integrity": "sha512-uBZs9poKMWX7WWHsRfaGHqvrn77D9EU5LwU8Ge3YKD/Su5Gy+T1v476l49nl1UOzEMNo4cISao3nIqQVsABB8g==", + "dev": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-jaeger": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.10.1.tgz", + "integrity": "sha512-bZIoSD6M7uxO19HtRJCAceAahX56LUmj5N/XQFHmoi3iFqA2JfR7bqsyHQCYbgINdiee155UejaqkNpgvjV7fw==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1", + "jaeger-client": "^3.15.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.36.1.tgz", + "integrity": "sha512-yQPHny0Y3HIE1BSqbN82MoqqbbJeLINjL7Qf3kJwv1zt5YLUhYbn3FkqHQWS0YWpAvdjK0/OcN40SjEbVz2HRA==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.36.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.36.1.tgz", + "integrity": "sha512-JcpEBwtBpNhVvmCLH3zjTPDcOld2AeI5rNglv2JrB16QCxQ5pwsOgzw7mPe/UR4u/53Ij7LIjFTOCeyVto/6aA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-metrics-otlp-proto": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.36.1.tgz", + "integrity": "sha512-dKJRKvIiyupuZJOVCzW9wNfsK6RxkELnzCSJHzFoIwhGRXSYpbWyYrfHj4ZJZWYZiQSJ7+I8BFUa4aSkBgnO0w==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.36.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-proto-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.36.1.tgz", + "integrity": "sha512-U2HdWvQho2VkeSAcAhkZ2wjfUb/1SKQixo5x6LNBF17ES4QYuh5+BagYxfN5FP4dbLnjZpTtFk5lj+97lfNLEw==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.36.1.tgz", + "integrity": "sha512-q/jKlfuKiHqltDzgzgEvXkoEJ/EyVSIAZhfiaoyBeQ49UhHCPvNTH36/hSwbGSEhKeX98WxXZK4NB/S3sUs8ig==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.36.1.tgz", + "integrity": "sha512-pNfrto7amygyyhmL4Kf96wuepROEecBYXSrtoXIVb1aUhUqjWLsA3/6DR3unB5EfSRA1Oq1Z9bqHfNuKqGfPNw==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-proto-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.10.1.tgz", + "integrity": "sha512-8gF8MjcFf6IhQ7vm6W4tPYtu/vQswYVzpYvk3pUSaX9BMGrwgjeXg+LpuRtaxGoiGd08/g7JjZ4sWLUaELnzWw==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.36.1.tgz", + "integrity": "sha512-fpjPwLafJIjgxY5qx7Ly74AYmRCd9spC6/jCxvEgGheg1YT4+NkfVnrfllxLRgc9wQNhDj7Y0Knp8RcmXLLVfA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.36.1.tgz", + "integrity": "sha512-71TdQ3Z0D2Trq8rc2UMvky7tmIpg8kVPUhdYH3p0tNsTmbx6GDpEBOpjp2/zCFvQ0SZFVfHH2Oj2OZxZiz+FNQ==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@grpc/proto-loader": "^0.7.3", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/otlp-proto-exporter-base": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.36.1.tgz", + "integrity": "sha512-9ErknJ5fS7r2NxEFeca93H+pGWnCjZCUWsz6Stcj5/z2rgsiZGHXLz3fQoUGQz+iXjiXKkks9wxTCRgWOW+Yiw==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "protobufjs": "^7.1.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.36.1.tgz", + "integrity": "sha512-d2MomkVHBHwfsmNz6E60s/sm7gtpSjFwDzkFLm9brVq//VXzEhaEyfYSeTabdUs4BmrzhqTIogHWlcd6cOiL+w==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/propagator-b3": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.10.1.tgz", + "integrity": "sha512-YrWqU93PH8RyCmqGhtDZgyk64D+cp8XIjQsLhEgOPcOsxvxSSGXnGt46rx9Z8+WdIbJgj13Q4nV/xuh36k+O+A==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.10.1.tgz", + "integrity": "sha512-qvwFfDPoBw2YQW/OsGHdLdD/rqNRGBRLz5UZR/akO21C4qwIK+lQcXbSi5ve0p2eLHnFshhNFqDmgQclOYBcmg==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/resources": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.10.1.tgz", + "integrity": "sha512-e+wwdyO44jZtsT1aqGiWMFOfN1XuP9Tv4+H0OYP3yQajBtGdsZjdSUn9UNjw46JsW0Mb+RaTxJwsb2uvfHar0g==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.10.1.tgz", + "integrity": "sha512-ARAD4e6lZhLwstwW+1HG2Q3XuYFA/t8vn10KK/mA4em1pZYKFn64c45RJZJcntxWp4wOZRbp9iL1RXsg7zIjow==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "lodash.merge": "4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-node": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.36.1.tgz", + "integrity": "sha512-7cRIxls3Ccg6HmzSu30R5upi0yHEizab2rm2rATrAyFV3JJ/ISA7cojmwKwYG8p4rkPNNPLOwCxI3vlLJrBnKA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/exporter-jaeger": "1.10.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.36.1", + "@opentelemetry/exporter-trace-otlp-http": "0.36.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.36.1", + "@opentelemetry/exporter-zipkin": "1.10.1", + "@opentelemetry/instrumentation": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "@opentelemetry/sdk-trace-node": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.36.1.tgz", + "integrity": "sha512-gtYErugMEF5NXVacmuE+tHFBiyB82YIiO5l8iZX9/4R4TDV8uCWdrLW5QZMqgTzPhiyOG9AITFdqhwIZMw/5lA==", + "dev": true, + "dependencies": { + "require-in-the-middle": "^6.0.0", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-node/node_modules/require-in-the-middle": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-6.0.0.tgz", + "integrity": "sha512-+dtWQ7l2lqQDxheaG3jjyN1QI37gEwvzACSgjYi4/C2y+ZTUMeRW8BIOm+9NBKvwaMBUSZfPXVOt1skB0vBkRw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-node/node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.10.1.tgz", + "integrity": "sha512-jutSP5t22wrPKReJKzI5uKht4mJ4cQdF/mGFJkN+emFFsDXru9CuFv/NfUrD0jEqoaaiqjcZtPSyTzMgu9LXvw==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.10.1.tgz", + "integrity": "sha512-/y+s1j8rPTaKnPnbrsbYv3ygTb4hjx/1H32zqobFr85cvWX+Tt1RWmcZ51TaPAfq5uJobGFhhLh6ADI2RDvk5Q==", + "dev": true, + "dependencies": { + "@opentelemetry/context-async-hooks": "1.10.1", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/propagator-b3": "1.10.1", + "@opentelemetry/propagator-jaeger": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/netlify-cli/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.10.1.tgz", + "integrity": "sha512-qiAueuCoN+1YEuHNXnsct9bkbroZBPd7QwQgd56YURG0LBRVHwE/lF6FOprfUvp1n1tu0O6+E3s6x+dmUndXFQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/netlify-cli/node_modules/@pnpm/network.ca-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", + "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/netlify-cli/node_modules/@pnpm/npm-conf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.0.tgz", + "integrity": "sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g==", + "dev": true, + "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/netlify-cli/node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/netlify-cli/node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/@sindresorhus/slugify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.1.1.tgz", + "integrity": "sha512-XokPHZ+q6FtQGEi1hnfvARVJJVPEhwHQTPHPPuNHaN6zcHjzYNynhhHMopa1wNPqLAFOwpsbintunEqWecXJMg==", + "dev": true, + "dependencies": { + "@sindresorhus/transliterate": "^1.0.0", + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@sindresorhus/slugify/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@sindresorhus/transliterate": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.5.0.tgz", + "integrity": "sha512-/sfSkoNelLq5riqNRp5uBjHIKBi1MWZk9ubRT1WiBQuTfmDf7BeQkph2DJzRB83QagMPHk2VDjuvpy0VuwyzdA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@sindresorhus/transliterate/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@skn0tt/lambda-local": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@skn0tt/lambda-local/-/lambda-local-2.0.3.tgz", + "integrity": "sha512-7WZuCWSHeWC9Fh2FTT7lAT6yL5vDZUPxCZ51gIDdCc631CXmEJL/r7t2WMubP2CPuuRA+EnDSJrzKckwY4cz8g==", + "dev": true, + "dependencies": { + "commander": "^9.4.0", + "dotenv": "^16.0.2", + "winston": "^3.8.2" + }, + "bin": { + "lambda-local": "build/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/@skn0tt/lambda-local/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/netlify-cli/node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/netlify-cli/node_modules/@types/node": { + "version": "16.11.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.22.tgz", + "integrity": "sha512-DYNtJWauMQ9RNpesl4aVothr97/tIJM8HbyOXJ0AYT1Z2bEjLHyfjOBPAQQVMLf8h3kSShYfNk8Wnto8B2zHUA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/netlify-cli/node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/netlify-cli/node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/netlify-cli/node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/netlify-cli/node_modules/@vercel/nft": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.22.1.tgz", + "integrity": "sha512-lYYZIoxRurqDOSoVIdBicGnpUIpfyaS5qVjdPq+EfI285WqtZK3NK/dyCkiyBul+X2U2OEhRyeMdXPCHGJbohw==", + "dev": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.5", + "acorn": "^8.6.0", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.2", + "node-gyp-build": "^4.2.2", + "resolve-from": "^5.0.0", + "rollup-pluginutils": "^2.8.2" + }, + "bin": { + "nft": "out/cli.js" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/archive-type": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-6.0.1.tgz", + "integrity": "sha512-PB3NeJL8xARZt52yDBupK0dNPn8uIVQDe15qNehUpoeeLWCZyAOam4vGXnoZGz2N9D1VXtjievJuCsXam2TmbQ==", + "dev": true, + "dependencies": { + "file-type": "^18.5.0" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-9.0.1.tgz", + "integrity": "sha512-9Lvlt6Qdpo9SaRQyRIXCo3lgU++eMZ68lzgjcTwtuKDrlwT635+5zsHZ1yrSx/Blc5IDuVLlPkBPj5CZkx+2+Q==", + "dev": true, + "dependencies": { + "@xhmikosr/decompress-tar": "^7.0.0", + "@xhmikosr/decompress-tarbz2": "^7.0.0", + "@xhmikosr/decompress-targz": "^7.0.0", + "@xhmikosr/decompress-unzip": "^6.0.0", + "graceful-fs": "^4.2.11", + "make-dir": "^4.0.0", + "strip-dirs": "^3.0.0" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress-tar": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-7.0.0.tgz", + "integrity": "sha512-kyWf2hybtQVbWtB+FdRyOT+jyR5jxCNZPLqvQGB7djZj75lrpLUPEmRbyo86AtJ5OEtivpYaNWjCkqSJ8xtRWw==", + "dev": true, + "dependencies": { + "file-type": "^18.5.0", + "is-stream": "^3.0.0", + "tar-stream": "^3.1.4" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress-tar/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress-tarbz2": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-7.0.0.tgz", + "integrity": "sha512-3QnjipYkRgh3Dee1MWDgKmANWxOQBVN4e1IwiGNe2fHYfMYTeSkVvWREt87UIoSucKUh3E95v8uGFttgTknZcA==", + "dev": true, + "dependencies": { + "@xhmikosr/decompress-tar": "^7.0.0", + "file-type": "^18.5.0", + "is-stream": "^3.0.0", + "seek-bzip": "^1.0.6", + "unbzip2-stream": "^1.4.3" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress-targz": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-7.0.0.tgz", + "integrity": "sha512-7BNHJl92g9OLhw89zqcFS67V1LAtm4Ex02j6OiQzuE8P7Yy9lQcyBuEL3x6v436grLdL+BcFjgbmhWxnem4GHw==", + "dev": true, + "dependencies": { + "@xhmikosr/decompress-tar": "^7.0.0", + "file-type": "^18.5.0", + "is-stream": "^3.0.0" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress-unzip": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-6.0.0.tgz", + "integrity": "sha512-R1HAkjXLS7RAL74YFLxYY9zYflCcYGssld9KKFDu87PnJ4h4btdhzXfSC8J5i5A2njH3oYIoCzx03RIGTH07Sg==", + "dev": true, + "dependencies": { + "file-type": "^18.5.0", + "get-stream": "^6.0.1", + "yauzl": "^2.10.0" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/decompress/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-13.0.1.tgz", + "integrity": "sha512-mBvWew1kZJHfNQVVfVllMjUDwCGN9apPa0t4/z1zaUJ9MzpXjRL3w8fsfJKB8gHN/h4rik9HneKfDbh2fErN+w==", + "dev": true, + "dependencies": { + "@xhmikosr/archive-type": "^6.0.1", + "@xhmikosr/decompress": "^9.0.1", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^18.5.0", + "filenamify": "^5.1.1", + "get-stream": "^6.0.1", + "got": "^12.6.1", + "merge-options": "^3.0.4", + "p-event": "^5.0.1" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/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==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/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==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/filenamify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", + "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^3.0.0", + "strip-outer": "^2.0.0", + "trim-repeated": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "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/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/strip-outer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", + "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/@xhmikosr/downloader/node_modules/trim-repeated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", + "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/netlify-cli/node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/netlify-cli/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/netlify-cli/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/netlify-cli/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "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/netlify-cli/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==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/netlify-cli/node_modules/ajv-formats/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/all-node-versions": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/all-node-versions/-/all-node-versions-11.3.0.tgz", + "integrity": "sha512-psMkc5s3qpr+QMfires9bC4azRYciPWql1wqZKMsYRh1731qefQDH2X4+O19xSBX6u0Ra/8Y5diG6y/fEmqKsw==", + "dev": true, + "dependencies": { + "fetch-node-website": "^7.3.0", + "filter-obj": "^5.1.0", + "get-stream": "^6.0.0", + "global-cache-dir": "^4.3.1", + "is-plain-obj": "^4.1.0", + "path-exists": "^5.0.0", + "semver": "^7.3.7", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/netlify-cli/node_modules/all-node-versions/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/all-node-versions/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/netlify-cli/node_modules/ansi-color": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz", + "integrity": "sha512-bF6xLaZBLpOQzgYUtYEhJx090nPSZk1BQ/q2oyBK9aMMcJHzx9uXGCjI2Y+LebsN4Jwoykr0V9whbPiogdyHoQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/netlify-cli/node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dev": true, + "dependencies": { + "entities": "^2.2.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/netlify-cli/node_modules/ansi-to-html/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/archiver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/netlify-cli/node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/netlify-cli/node_modules/archiver-utils/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==", + "dev": true, + "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/netlify-cli/node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/ascii-table": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ascii-table/-/ascii-table-0.0.9.tgz", + "integrity": "sha1-BqZgTWpV1L9BqaR9mHLXp42jHnM=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/ast-module-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-5.0.0.tgz", + "integrity": "sha512-JvqziE0Wc0rXQfma0HZC/aY7URXHFuZV84fJRtP8u+lhp0JYCNd5wJzVXP45t0PH0Mej3ynlzvdyITYIu0G4LQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/netlify-cli/node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/netlify-cli/node_modules/avvio": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", + "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1" + } + }, + "node_modules/netlify-cli/node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/netlify-cli/node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "dev": true, + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/better-ajv-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz", + "integrity": "sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@humanwhocodes/momoa": "^2.0.2", + "chalk": "^4.1.2", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0 < 4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "ajv": "4.11.8 - 8" + } + }, + "node_modules/netlify-cli/node_modules/better-ajv-errors/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/better-ajv-errors/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/netlify-cli/node_modules/better-ajv-errors/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/netlify-cli/node_modules/better-ajv-errors/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/better-ajv-errors/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/netlify-cli/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/netlify-cli/node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/body-parser/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/body-parser/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==", + "dev": true, + "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/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "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/netlify-cli/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "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/netlify-cli/node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/boxen/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/boxen/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==", + "dev": true, + "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/netlify-cli/node_modules/boxen/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==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/boxen/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==", + "dev": true, + "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/netlify-cli/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/netlify-cli/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/netlify-cli/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/netlify-cli/node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/bufrw": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bufrw/-/bufrw-1.3.0.tgz", + "integrity": "sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ==", + "dev": true, + "dependencies": { + "ansi-color": "^0.2.1", + "error": "^7.0.0", + "hexer": "^1.5.0", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/netlify-cli/node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/builtins": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.0.tgz", + "integrity": "sha512-aizhtbxgT1Udg0Fj6GssXshAVK+nxbtCV+1OtTrMNy67jffDFBY6CUBAkhO4owbleAx6fdbnWdpsmmcXydbzNw==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/netlify-cli/node_modules/byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/netlify-cli/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/netlify-cli/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/clean-deep": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-3.4.0.tgz", + "integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==", + "dev": true, + "dependencies": { + "lodash.isempty": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.transform": "^4.6.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/clean-stack/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/netlify-cli/node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/netlify-cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/netlify-cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/color-string": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", + "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/netlify-cli/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/netlify-cli/node_modules/colors-option": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/colors-option/-/colors-option-3.0.0.tgz", + "integrity": "sha512-DP3FpjsiDDvnQC1OJBsdOJZPuy7r0o6sepY2T5M3L/d2nrE23O/ErFkEqyY3ngVL1ZhTj/H0pCMNObZGkEOaaQ==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "filter-obj": "^3.0.0", + "is-plain-obj": "^4.0.0", + "jest-validate": "^27.3.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/colors-option/node_modules/filter-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-3.0.0.tgz", + "integrity": "sha512-oQZM+QmVni8MsYzcq9lgTHD/qeLqaG8XaOPOW7dzuSafVxSUlH1+1ZDefj2OD9f2XsmG5lFl2Euc9NI4jgwFWg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/netlify-cli/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/netlify-cli/node_modules/comment-json/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/netlify-cli/node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "dependencies": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "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/netlify-cli/node_modules/configstore/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==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/configstore/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==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/content-disposition/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/copy-template-dir/-/copy-template-dir-1.4.0.tgz", + "integrity": "sha512-xkXSJhvKz4MfLbVkZ7GyCaFo4ciB3uKI/HHzkGwj1eyTH5+7RTFxW5CE0irWAZgV5oFcO9hd6+NVXAtY9hlo7Q==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "graceful-fs": "^4.1.3", + "maxstache": "^1.0.0", + "maxstache-stream": "^1.0.0", + "mkdirp": "^0.5.1", + "noop2": "^2.0.0", + "pump": "^1.0.0", + "readdirp": "^2.0.0", + "run-parallel": "^1.1.4" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/braces/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==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/fill-range/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==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/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==", + "dev": true, + "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/netlify-cli/node_modules/copy-template-dir/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/netlify-cli/node_modules/copy-template-dir/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/cp-file": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz", + "integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.10", + "nested-error-stacks": "^2.1.1", + "p-event": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cpy": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-9.0.1.tgz", + "integrity": "sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==", + "dev": true, + "dependencies": { + "arrify": "^3.0.0", + "cp-file": "^9.1.0", + "globby": "^13.1.1", + "junk": "^4.0.0", + "micromatch": "^4.0.4", + "nested-error-stacks": "^2.1.0", + "p-filter": "^3.0.0", + "p-map": "^5.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cpy/node_modules/cp-file": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-9.1.0.tgz", + "integrity": "sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cpy/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "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/netlify-cli/node_modules/cpy/node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cpy/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==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/cpy/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/crc-32": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", + "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", + "dev": true, + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.3.1" + }, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/netlify-cli/node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/netlify-cli/node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/cron-parser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.8.1.tgz", + "integrity": "sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==", + "dev": true, + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/netlify-cli/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/node_modules/cross-spawn/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/netlify-cli/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/decache": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz", + "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==", + "dev": true, + "dependencies": { + "callsite": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/netlify-cli/node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/netlify-cli/node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/detective-amd": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-5.0.1.tgz", + "integrity": "sha512-e7n0E0Wte78U9lcpl3hsTh1ZJ+zp/rgEbdbzGLgTowSbbSemuHnM8olp4KHMF1eCaurrCE50IU9VkoV13ezK4A==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "escodegen": "^2.0.0", + "get-amd-module-type": "^5.0.0", + "node-source-walk": "^6.0.0" + }, + "bin": { + "detective-amd": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/detective-cjs": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-5.0.1.tgz", + "integrity": "sha512-6nTvAZtpomyz/2pmEmGX1sXNjaqgMplhQkskq2MLrar0ZAIkHMrDhLXkRiK2mvbu9wSWr0V5/IfiTrZqAQMrmQ==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/detective-es6": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-4.0.1.tgz", + "integrity": "sha512-k3Z5tB4LQ8UVHkuMrFOlvb3GgFWdJ9NqAa2YLUU/jTaWJIm+JJnEh4PsMc+6dfT223Y8ACKOaC0qcj7diIhBKw==", + "dev": true, + "dependencies": { + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/detective-postcss": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-6.1.3.tgz", + "integrity": "sha512-7BRVvE5pPEvk2ukUWNQ+H2XOq43xENWbH0LcdCE14mwgTBEAMoAx+Fc1rdp76SmyZ4Sp48HlV7VedUnP6GA1Tw==", + "dev": true, + "dependencies": { + "is-url": "^1.2.4", + "postcss": "^8.4.23", + "postcss-values-parser": "^6.0.2" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/detective-sass": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-5.0.3.tgz", + "integrity": "sha512-YsYT2WuA8YIafp2RVF5CEfGhhyIVdPzlwQgxSjK+TUm3JoHP+Tcorbk3SfG0cNZ7D7+cYWa0ZBcvOaR0O8+LlA==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/detective-scss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-4.0.3.tgz", + "integrity": "sha512-VYI6cHcD0fLokwqqPFFtDQhhSnlFWvU614J42eY6G0s8c+MBhi9QAWycLwIOGxlmD8I/XvGSOUV1kIDhJ70ZPg==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/detective-stylus": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-4.0.0.tgz", + "integrity": "sha512-TfPotjhszKLgFBzBhTOxNHDsutIxx9GTWjrL5Wh7Qx/ydxKhwUrlSFeLIn+ZaHPF+h0siVBkAQSuy6CADyTxgQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/detective-typescript": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-11.0.1.tgz", + "integrity": "sha512-pVCuFWdEAyHI16zO3NBWSAULV8pevSkX3gwK8w3y9RrBGUrig6wDvwv6vUpnu+HfOr0MDmjMkmJGNWaTb6+HkA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "^5.59.2", + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.0", + "typescript": "^5.0.4" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/detective-typescript/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/netlify-cli/node_modules/detective-typescript/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/detective-typescript/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/netlify-cli/node_modules/detective-typescript/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/dot-prop": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-7.2.0.tgz", + "integrity": "sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==", + "dev": true, + "dependencies": { + "type-fest": "^2.11.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/dot-prop/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==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/netlify-cli/node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/netlify-cli/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha512-UtVv4l5MhijsYUxPJo4390gzfZvAnTHreNnDjnTZaKIiZ/SemXxAhBkYSKtWa5RtBXbLP8tMgn/n0RUa/H7jXw==", + "dev": true, + "dependencies": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/netlify-cli/node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/netlify-cli/node_modules/es-module-lexer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.3.tgz", + "integrity": "sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/es6-promisify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", + "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/netlify-cli/node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/escodegen/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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/netlify-cli/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/netlify-cli/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "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/netlify-cli/node_modules/execa/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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/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==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "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" + } + }, + "node_modules/netlify-cli/node_modules/express-logging": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/express-logging/-/express-logging-1.1.1.tgz", + "integrity": "sha512-1KboYwxxCG5kwkJHR5LjFDTD1Mgl8n4PIMcCuhhd/1OqaxlC68P3QKbvvAbZVUtVgtlxEdTgSUwf6yxwzRCuuA==", + "dev": true, + "dependencies": { + "on-headers": "^1.0.0" + }, + "engines": { + "node": ">= 0.10.26" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/express/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/express/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==", + "dev": true, + "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/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/express/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/extglob/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==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/extglob/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/netlify-cli/node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/fast-content-type-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", + "integrity": "sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-equals": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-3.0.3.tgz", + "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-fifo": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz", + "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "dev": true, + "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.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "peer": true + }, + "node_modules/netlify-cli/node_modules/fast-json-stringify": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", + "integrity": "sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==", + "dev": true, + "dependencies": { + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/netlify-cli/node_modules/fast-json-stringify/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/netlify-cli/node_modules/fast-json-stringify/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-querystring": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", + "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "dev": true, + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/netlify-cli/node_modules/fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fast-uri": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.2.0.tgz", + "integrity": "sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/netlify-cli/node_modules/fastify": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.17.0.tgz", + "integrity": "sha512-tzuY1tgWJo2Y6qEKwmLhFvACUmr68Io2pqP/sDKU71KRM6A6R3DrCDqLGqANbeLZcKUfdfY58ut35CGqemcTgg==", + "dev": true, + "dependencies": { + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.0.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.2.0", + "fast-content-type-parse": "^1.0.0", + "fast-json-stringify": "^5.7.0", + "find-my-way": "^7.6.0", + "light-my-request": "^5.6.1", + "pino": "^8.5.0", + "process-warning": "^2.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.5.0", + "semver": "^7.3.7", + "tiny-lru": "^11.0.1" + } + }, + "node_modules/netlify-cli/node_modules/fastify-plugin": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.4.0.tgz", + "integrity": "sha512-ovwFQG2qNy3jcCROiWpr94Hs0le+c7N/3t7m9aVwbFhkxcR/esp2xu25dP8e617HpQdmeDv+gFX4zagdUhDByw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fastify/node_modules/pino": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.14.1.tgz", + "integrity": "sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/netlify-cli/node_modules/fastify/node_modules/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fastify/node_modules/process-warning": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/netlify-cli/node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/netlify-cli/node_modules/fdir": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.0.1.tgz", + "integrity": "sha512-bdrUUb0eYQrPRlaAtlSRoLs7sp6yKEwbMQuUgwvi/14TnaqhM/deSZUrC5ic+yjm5nEPPWE61oWpTTxQFQMmLA==", + "dev": true, + "peerDependencies": { + "picomatch": "2.x" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/fecha": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fetch-blob": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz", + "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fetch-node-website/-/fetch-node-website-7.3.0.tgz", + "integrity": "sha512-/wayUHbdVUWrD72aqRNNrr6+MHnCkumZgNugN0RfiWJpbNJUdAkMk4Z18MGayGZVVqYXR1RWrV+bIFEt5HuBZg==", + "dev": true, + "dependencies": { + "cli-progress": "^3.11.2", + "colors-option": "^4.4.0", + "figures": "^5.0.0", + "got": "^12.3.1", + "is-plain-obj": "^4.1.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/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==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/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==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/colors-option": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/colors-option/-/colors-option-4.5.0.tgz", + "integrity": "sha512-Soe5lerRg3erMRgYC0EC696/8dMCGpBzcQchFfi55Yrkja8F+P7cUt0LVTIg7u5ob5BexLZ/F1kO+ejmv+nq8w==", + "dev": true, + "dependencies": { + "chalk": "^5.0.1", + "is-plain-obj": "^4.1.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "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/netlify-cli/node_modules/fetch-node-website/node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/netlify-cli/node_modules/fetch-node-website/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/file-type": { + "version": "18.5.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.5.0.tgz", + "integrity": "sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==", + "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/filter-obj": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz", + "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "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/netlify-cli/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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/find-my-way": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.6.2.tgz", + "integrity": "sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/find-up/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/flush-write-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-2.0.0.tgz", + "integrity": "sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "node_modules/netlify-cli/node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/folder-walker": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/folder-walker/-/folder-walker-3.2.0.tgz", + "integrity": "sha512-VjAQdSLsl6AkpZNyrQJfO7BXLo4chnStqb055bumZMbRUPpVuPN3a4ktsnRCmrFZjtMlYLkyXiR5rAs4WOpC4Q==", + "dev": true, + "dependencies": { + "from2": "^2.1.0" + } + }, + "node_modules/netlify-cli/node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/netlify-cli/node_modules/form-data-encoder": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.3.tgz", + "integrity": "sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/netlify-cli/node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/from2-array": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/from2-array/-/from2-array-0.0.4.tgz", + "integrity": "sha512-0G0cAp7sYLobH7ALsr835x98PU/YeVF7wlwxdWbCUaea7wsa7lJfKZUAo6p2YZGZ8F94luCuqHZS3JtFER6uPg==", + "dev": true, + "dependencies": { + "from2": "^2.0.3" + } + }, + "node_modules/netlify-cli/node_modules/from2/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==", + "dev": true, + "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/netlify-cli/node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/netlify-cli/node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/fuzzy": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", + "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/netlify-cli/node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "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/netlify-cli/node_modules/gauge/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/get-amd-module-type": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-5.0.1.tgz", + "integrity": "sha512-jb65zDeHyDjFR1loOVk0HQGM5WNwoGB8aLWy3LKCieMKol0/ProHkhO2X1JxojuN10vbz1qNn09MJ7tNp7qMzw==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/netlify-cli/node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/gh-release-fetch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gh-release-fetch/-/gh-release-fetch-4.0.3.tgz", + "integrity": "sha512-TOiP1nwLsH5shG85Yt6v6Kjq5JU/44jXyEpbcfPgmj3C829yeXIlx9nAEwQRaxtRF3SJinn2lz7XUkfG9W/U4g==", + "dev": true, + "dependencies": { + "@xhmikosr/downloader": "^13.0.0", + "node-fetch": "^3.3.1", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.18.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/netlify-cli/node_modules/gh-release-fetch/node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/netlify-cli/node_modules/git-repo-info": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", + "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", + "dev": true, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/netlify-cli/node_modules/gitconfiglocal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-2.1.0.tgz", + "integrity": "sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/netlify-cli/node_modules/gitconfiglocal/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/global-cache-dir": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global-cache-dir/-/global-cache-dir-4.4.0.tgz", + "integrity": "sha512-bk0gI6IbbphRjAaCJJn5H+T/CcEck5B3a5KBO2BXSDzjFSV+API17w8GA7YPJ6IXJiasW8M0VsEIig1PCHdfOQ==", + "dev": true, + "dependencies": { + "cachedir": "^2.3.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/netlify-cli/node_modules/global-cache-dir/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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/netlify-cli/node_modules/gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "gonzales": "bin/gonzales.js" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/netlify-cli/node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==", + "dev": true, + "dependencies": { + "async": "~1.5" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/netlify-cli/node_modules/hasbin/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/hasha/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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/hexer": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz", + "integrity": "sha512-dyrPC8KzBzUJ19QTIo1gXNqIISRXQ0NwteW6OeQHRN4ZuZeHkdODfj0zHBdOlHbRY8GqbqK57C9oWSvQZizFsg==", + "dev": true, + "dependencies": { + "ansi-color": "^0.2.1", + "minimist": "^1.1.0", + "process": "^0.10.0", + "xtend": "^4.0.0" + }, + "bin": { + "hexer": "cli.js" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/netlify-cli/node_modules/hexer/node_modules/process": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz", + "integrity": "sha512-dyIett8dgGIZ/TXKUzeYExt7WA6ldDzys9vTDU/cCA9L17Ypme+KzS+NjQCjpn9xsvi/shbMC+yP/BcFMBz0NA==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/netlify-cli/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/hot-shots": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.0.0.tgz", + "integrity": "sha512-uy/uGpuJk7yuyiKRfZMBNkF1GAOX5O2ifO9rDCaX9jw8fu6eW9QeWC7WRPDI+O98frW1HQgV3+xwjWsZPECIzQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "unix-dgram": "2.x" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/http-errors/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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/netlify-cli/node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "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/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/netlify-cli/node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/netlify-cli/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", + "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt/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==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/netlify-cli/node_modules/inquirer-autocomplete-prompt/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/inquirer-autocomplete-prompt/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/inspect-with-kind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz", + "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/netlify-cli/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/netlify-cli/node_modules/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/is-extendable/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==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/is-installed-globally/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==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/is-url-superb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz", + "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/is-wsl/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==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/iserror": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz", + "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/jaeger-client": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/jaeger-client/-/jaeger-client-3.19.0.tgz", + "integrity": "sha512-M0c7cKHmdyEUtjemnJyx/y9uX16XHocL46yQvyqDlPdvAcwPDbHrIbKjQdBqtiE4apQ/9dmr+ZLJYYPGnurgpw==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0", + "opentracing": "^0.14.4", + "thriftrw": "^3.5.0", + "uuid": "^8.3.2", + "xorshift": "^1.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/jaeger-client/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==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/netlify-cli/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/netlify-cli/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/netlify-cli/node_modules/jest-validate/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/netlify-cli/node_modules/jest-validate/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/netlify-cli/node_modules/jest-validate/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/jest-validate/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "peer": true + }, + "node_modules/netlify-cli/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/jsonwebtoken": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/netlify-cli/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/netlify-cli/node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/keep-func-props": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/keep-func-props/-/keep-func-props-4.0.1.tgz", + "integrity": "sha512-87ftOIICfdww3SxR5P1veq3ThBNyRPG0JGL//oaR08v0k2yTicEIHd7s0GqSJfQvlb+ybC3GiDepOweo0LDhvw==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/netlify-cli/node_modules/lazystream/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==", + "dev": true, + "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/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/light-my-request": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.8.0.tgz", + "integrity": "sha512-4BtD5C+VmyTpzlDPCZbsatZMJVgUIciSOwYhJDCbLffPZ35KoDkDj4zubLeHDEb35b4kkPeEv5imbh+RJxK/Pg==", + "dev": true, + "dependencies": { + "cookie": "^0.5.0", + "process-warning": "^2.0.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/netlify-cli/node_modules/light-my-request/node_modules/process-warning": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "dependencies": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer/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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr-verbose-renderer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/listr/node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/listr/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/listr/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/locate-path/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==", + "dev": true, + "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/netlify-cli/node_modules/locate-path/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==", + "dev": true, + "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/netlify-cli/node_modules/locate-path/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/log-process-errors": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/log-process-errors/-/log-process-errors-8.0.0.tgz", + "integrity": "sha512-+SNGqNC1gCMJfhwYzAHr/YgNT/ZJc+V2nCkvtPnjrENMeCe+B/jgShBW0lmWoh6uVV2edFAPc/IUOkDdsjTbTg==", + "dev": true, + "dependencies": { + "colors-option": "^3.0.0", + "figures": "^4.0.0", + "filter-obj": "^3.0.0", + "jest-validate": "^27.4.2", + "map-obj": "^5.0.0", + "moize": "^6.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/netlify-cli/node_modules/log-process-errors/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-process-errors/node_modules/figures": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/figures/-/figures-4.0.1.tgz", + "integrity": "sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-process-errors/node_modules/filter-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-3.0.0.tgz", + "integrity": "sha512-oQZM+QmVni8MsYzcq9lgTHD/qeLqaG8XaOPOW7dzuSafVxSUlH1+1ZDefj2OD9f2XsmG5lFl2Euc9NI4jgwFWg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-process-errors/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.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/netlify-cli/node_modules/log-update/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-update/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-update/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/log-update/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-update/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==", + "dev": true, + "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/netlify-cli/node_modules/log-update/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/log-update/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==", + "dev": true, + "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/netlify-cli/node_modules/logform": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", + "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/netlify-cli/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/luxon": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", + "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/macos-release": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.0.1.tgz", + "integrity": "sha512-3l6OrhdDg2H2SigtuN3jBh+5dRJRWxNKuJTPBbGeNJTsmt/pj9PO25wYaNb05NuNmAsl435j4rDP6rgNXz7s7g==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/netlify-cli/node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/maxstache": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/maxstache/-/maxstache-1.0.7.tgz", + "integrity": "sha1-IjHVGAung9Xs/DHEX+2seuQnaYQ=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/maxstache-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/maxstache-stream/-/maxstache-stream-1.0.4.tgz", + "integrity": "sha1-nH9cq35f3S2Q2oYUO06WMeoygEA=", + "dev": true, + "dependencies": { + "maxstache": "^1.0.0", + "pump": "^1.0.0", + "split2": "^1.0.0", + "through2": "^2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/maxstache-stream/node_modules/pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/netlify-cli/node_modules/maxstache-stream/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==", + "dev": true, + "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/netlify-cli/node_modules/maxstache-stream/node_modules/split2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.1.1.tgz", + "integrity": "sha512-cfurE2q8LamExY+lJ9Ex3ZfBwqAPduzOKVscPDXNCLLMvyaeD3DTz1yk7fVIs6Chco+12XeD0BB6HEoYzPYbXA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/maxstache-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/netlify-cli/node_modules/md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "dependencies": { + "blueimp-md5": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dev": true, + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/merge-options/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/micro-api-client": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz", + "integrity": "sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/micro-memoize": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.11.tgz", + "integrity": "sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/netlify-cli/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/netlify-cli/node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/netlify-cli/node_modules/module-definition": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-5.0.1.tgz", + "integrity": "sha512-kvw3B4G19IXk+BOXnYq/D/VeO9qfHaapMeuS7w7sNUqmGaA6hywdFHMi+VWeR9wUScXM7XjoryTffCZ5B0/8IA==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.1" + }, + "bin": { + "module-definition": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/moize": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.3.tgz", + "integrity": "sha512-Cn+1T5Ypieeo46fn8X98V2gHj2VSRohVPjvT8BRvNANJJC3UOeege/G84xA/3S9c5qA4p9jOdSB1jfhumwe8qw==", + "dev": true, + "dependencies": { + "fast-equals": "^3.0.1", + "micro-memoize": "^4.0.11" + } + }, + "node_modules/netlify-cli/node_modules/move-file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/move-file/-/move-file-3.0.0.tgz", + "integrity": "sha512-v6u4XjX3MFW6Jo1V/YfbhC7eiGSgvYPJ/NM+aGtTtB9/Y6IYj7YViaHu6dkgDsZFB7MbnAoSI5+Z26XZXnP0vg==", + "dev": true, + "dependencies": { + "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/netlify-cli/node_modules/move-file/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/multiparty": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.3.tgz", + "integrity": "sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==", + "dev": true, + "dependencies": { + "http-errors": "~1.8.1", + "safe-buffer": "5.2.1", + "uid-safe": "2.1.5" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/netlify-cli/node_modules/multiparty/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, + "node_modules/netlify-cli/node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/netlify-cli/node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/netlify": { + "version": "13.1.10", + "resolved": "https://registry.npmjs.org/netlify/-/netlify-13.1.10.tgz", + "integrity": "sha512-ByFz8S08HWVKd9r/lkTahZX7xSq4IRyPCUvuaduI4GHyQaSWEdVNK1krC05vlhL9W0SzDn8Yjowh0Ru4PKrOYw==", + "dev": true, + "dependencies": { + "@netlify/open-api": "^2.19.1", + "lodash-es": "^4.17.21", + "micro-api-client": "^3.3.0", + "node-fetch": "^3.0.0", + "omit.js": "^2.0.2", + "p-wait-for": "^4.0.0", + "qs": "^6.9.6" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/netlify-headers-parser": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/netlify-headers-parser/-/netlify-headers-parser-7.1.2.tgz", + "integrity": "sha512-DfoboA8PrcLXMan3jIVyLsQtKS+nepKDx6WwZKk5EQDMr2AJoBPCtSHTOLuABzkde1UXdOITf3snmcAmzlNLqw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "fast-safe-stringify": "^2.0.7", + "is-plain-obj": "^4.0.0", + "map-obj": "^5.0.0", + "path-exists": "^5.0.0", + "toml": "^3.0.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/netlify-headers-parser/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/netlify-headers-parser/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/netlify-headers-parser/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/netlify-redirect-parser": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/netlify-redirect-parser/-/netlify-redirect-parser-14.1.3.tgz", + "integrity": "sha512-23svKHdO2QUEJHo3knQV1EpAh8UX/+8zQmwxVMSby4/NRj5vPS+u/yKesY/uHAgcw/28HwvEUGQdbXsPPe7J/Q==", + "dev": true, + "dependencies": { + "fast-safe-stringify": "^2.1.1", + "filter-obj": "^5.0.0", + "is-plain-obj": "^4.0.0", + "path-exists": "^5.0.0", + "toml": "^3.0.0" + }, + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/netlify-redirect-parser/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/netlify-redirector": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/netlify-redirector/-/netlify-redirector-0.4.0.tgz", + "integrity": "sha512-ssD+V9o2DD9VnilOYC+34i07IrlY8XDsh5mN+qLYA4MxCpdALKXFICcz1KzsHZabuIS5XsF1VP/HzDyx5ubJ2g==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/netlify/node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/netlify-cli/node_modules/netlify/node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/netlify/node_modules/p-wait-for": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz", + "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==", + "dev": true, + "dependencies": { + "p-timeout": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/netlify-cli/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/netlify-cli/node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/node-source-walk": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-6.0.1.tgz", + "integrity": "sha512-QUlkJYzrNewUCp4c7CCPN8Mh8c+pwNs23JsQfHKUwIkCxYa6c0AFLuUJIZxU6BdnarfytPSGKm1YMAz06hj9cw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.21.8" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/netlify-cli/node_modules/node-version-alias": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/node-version-alias/-/node-version-alias-3.4.1.tgz", + "integrity": "sha512-Kf3L9spAL6lEHMPyqpwHSTNG3LPkOXBfSUnBMG/YE2TdoC8Qoqf0+qg01nr6K9MFQEcXtWUyTQzLJByRixSBsA==", + "dev": true, + "dependencies": { + "all-node-versions": "^11.3.0", + "filter-obj": "^5.1.0", + "is-plain-obj": "^4.1.0", + "normalize-node-version": "^12.4.0", + "path-exists": "^5.0.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/netlify-cli/node_modules/node-version-alias/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/noop2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/noop2/-/noop2-2.0.0.tgz", + "integrity": "sha1-S2NgFemIK1R4PAK0EvaZ2MXNCls=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/normalize-node-version": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/normalize-node-version/-/normalize-node-version-12.4.0.tgz", + "integrity": "sha512-0oLZN5xcyKVrSHMk8/9RuNblEe7HEsXAt5Te2xmMiZD9VX7bqWYe0HMyfqSYFD3xv0949lZuXaEwjTqle1uWWQ==", + "dev": true, + "dependencies": { + "all-node-versions": "^11.3.0", + "filter-obj": "^5.1.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/netlify-cli/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/npm-run-path/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/omit.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz", + "integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/netlify-cli/node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/netlify-cli/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/onetime/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "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/netlify-cli/node_modules/open/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==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/opentracing": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", + "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/netlify-cli/node_modules/ora": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", + "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/ora/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/ora/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/os-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.0.1.tgz", + "integrity": "sha512-0EQpaHUHq7olp2/YFUr+0vZi9tMpDTblHGz+Ch5RntKxiRXOAY0JOz1UlxhSjMSksHvkm13eD6elJj3M8Ht/kw==", + "dev": true, + "dependencies": { + "macos-release": "^3.0.1", + "windows-release": "^5.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^5.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-event/node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-every": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-every/-/p-every-2.0.0.tgz", + "integrity": "sha512-MCz9DqD5opPC48Zsd+BHm56O/HfhYIQQtupfDzhXoVgQdg/Ux4F8/JcdRuQ+arq7zD5fB6zP3axbH3d9Nr8dlw==", + "dev": true, + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/p-every/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", + "dev": true, + "dependencies": { + "p-map": "^5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-map/node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-map/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-retry": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-5.1.1.tgz", + "integrity": "sha512-i69WkEU5ZAL8mrmdmVviWwU+DN+IUF8f4sSJThoJ3z5A7Nn5iuO5ROX3Boye0u+uYQLOSfgFl7SuFZCjlAVbQA==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.1", + "retry": "^0.13.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-wait-for": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-5.0.2.tgz", + "integrity": "sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==", + "dev": true, + "dependencies": { + "p-timeout": "^6.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/p-wait-for/node_modules/p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "dev": true, + "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/netlify-cli/node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/package-json/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==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/package-json/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==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/package-json/node_modules/cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/netlify-cli/node_modules/package-json/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "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/netlify-cli/node_modules/package-json/node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/netlify-cli/node_modules/package-json/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/package-json/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/package-json/node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/package-json/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/netlify-cli/node_modules/package-json/node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/netlify-cli/node_modules/parallel-transform/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==", + "dev": true, + "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/netlify-cli/node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true, + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/parse-gitignore": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/netlify-cli/node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/netlify-cli/node_modules/pino-abstract-transport/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/netlify-cli/node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/netlify-cli/node_modules/postcss-values-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz", + "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==", + "dev": true, + "dependencies": { + "color-name": "^1.1.4", + "is-url-superb": "^4.0.0", + "quote-unquote": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.2.9" + } + }, + "node_modules/netlify-cli/node_modules/postcss-values-parser/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/precinct": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/precinct/-/precinct-11.0.2.tgz", + "integrity": "sha512-UuhB1q0nEFf80iMGcs7IoT0o1GnNFWT4CjZjcMsHDXAIsW/aiLovOSbeMJ2Ejg6raRsplsriZZkoBUh0h/IHlw==", + "dev": true, + "dependencies": { + "@dependents/detective-less": "^4.0.0", + "commander": "^10.0.1", + "detective-amd": "^5.0.1", + "detective-cjs": "^5.0.1", + "detective-es6": "^4.0.0", + "detective-postcss": "^6.1.3", + "detective-sass": "^5.0.0", + "detective-scss": "^4.0.0", + "detective-stylus": "^4.0.0", + "detective-typescript": "^11.0.1", + "module-definition": "^5.0.0", + "node-source-walk": "^6.0.1" + }, + "bin": { + "precinct": "bin/cli.js" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/netlify-cli/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/prettyjson": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz", + "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==", + "dev": true, + "dependencies": { + "colors": "1.4.0", + "minimist": "^1.2.0" + }, + "bin": { + "prettyjson": "bin/prettyjson" + } + }, + "node_modules/netlify-cli/node_modules/printj": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", + "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", + "dev": true, + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/netlify-cli/node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/protobufjs": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", + "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/netlify-cli/node_modules/protobufjs/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/netlify-cli/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/ps-list": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.0.tgz", + "integrity": "sha512-NoGBqJe7Ou3kfQxEvDzDyKGAyEgwIuD3YrfXinjcCmBRv0hTld0Xb71hrXvtsNPj7HSFATfemvzB8PPJtq6Yag==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/netlify-cli/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dev": true, + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/netlify-cli/node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/quote-unquote": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz", + "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/raw-body/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/raw-body/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==", + "dev": true, + "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/netlify-cli/node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "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/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/read-pkg-up/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==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/netlify-cli/node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dev": true, + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/netlify-cli/node_modules/readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/netlify-cli/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/netlify-cli/node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/netlify-cli/node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/regex-not/node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/netlify-cli/node_modules/regexp-tree": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/netlify-cli/node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/netlify-cli/node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/netlify-cli/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/restore-cursor/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/netlify-cli/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/netlify-cli/node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/netlify-cli/node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/netlify-cli/node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/netlify-cli/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/safe-regex2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", + "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==", + "dev": true, + "dependencies": { + "ret": "~0.2.0" + } + }, + "node_modules/netlify-cli/node_modules/safe-regex2/node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/secure-json-parse": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.6.0.tgz", + "integrity": "sha512-B9osKohb6L+EZ6Kve3wHKfsAClzOC/iISA2vSuCe5Jx5NAKiwitfxx8ZKYapHXr0sYRj7UZInT7pLb3rp2Yx6A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/netlify-cli/node_modules/seek-bzip/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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/netlify-cli/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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/send/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/send/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==", + "dev": true, + "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/netlify-cli/node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/set-value/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==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/set-value/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/set-value/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==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/netlify-cli/node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/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==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/netlify-cli/node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/netlify-cli/node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/netlify-cli/node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/stack-generator": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", + "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/netlify-cli/node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/netlify-cli/node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/stdin-discarder/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/netlify-cli/node_modules/stdin-discarder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/netlify-cli/node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/netlify-cli/node_modules/string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", + "dev": true + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/string-width/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/string-width/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/strip-ansi-control-characters": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi-control-characters/-/strip-ansi-control-characters-2.0.0.tgz", + "integrity": "sha512-Q0/k5orrVGeaOlIOUn1gybGU0IcAbgHQT1faLo5hik4DqClKVSaka5xOhNNoRgtfztHVxCYxi7j71mrWom0bIw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/strip-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-3.0.0.tgz", + "integrity": "sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==", + "dev": true, + "dependencies": { + "inspect-with-kind": "^1.0.5", + "is-plain-obj": "^1.1.0" + } + }, + "node_modules/netlify-cli/node_modules/strip-dirs/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/netlify-cli/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/supports-hyperlinks/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/tabtab": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tabtab/-/tabtab-3.0.2.tgz", + "integrity": "sha512-jANKmUe0sIQc/zTALTBy186PoM/k6aPrh3A7p6AaAfF6WPSbTx1JYeGIGH162btpH+mmVEXln+UxwViZHO2Jhg==", + "dev": true, + "dependencies": { + "debug": "^4.0.1", + "es6-promisify": "^6.0.0", + "inquirer": "^6.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "untildify": "^3.0.3" + } + }, + "node_modules/netlify-cli/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/netlify-cli/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/tempy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/tempy/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==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/terminal-link": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-3.0.0.tgz", + "integrity": "sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^5.0.0", + "supports-hyperlinks": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/terminal-link/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dev": true, + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/netlify-cli/node_modules/thriftrw": { + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/thriftrw/-/thriftrw-3.11.4.tgz", + "integrity": "sha512-UcuBd3eanB3T10nXWRRMwfwoaC6VMk7qe3/5YIWP2Jtw+EbHqJ0p1/K3x8ixiR5dozKSSfcg1W+0e33G1Di3XA==", + "dev": true, + "dependencies": { + "bufrw": "^1.2.1", + "error": "7.0.2", + "long": "^2.4.0" + }, + "bin": { + "thrift2json": "thrift2json.js" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/netlify-cli/node_modules/thriftrw/node_modules/long": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", + "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/netlify-cli/node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/through2-filter/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==", + "dev": true, + "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/netlify-cli/node_modules/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/netlify-cli/node_modules/through2-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-map/-/through2-map-3.0.0.tgz", + "integrity": "sha512-Ms68QPbSJKjRYY7fmqZHB0VGt+vD0/tjmDHUWgxltjifCof6hZWWeQAEi27Wjbs7jyNlIIyerQw/TVj7gHkd/Q==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/netlify-cli/node_modules/through2-map/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==", + "dev": true, + "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/netlify-cli/node_modules/through2-map/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/netlify-cli/node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/tiny-lru": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.0.1.tgz", + "integrity": "sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/netlify-cli/node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/netlify-cli/node_modules/tmp-promise/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/netlify-cli/node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/to-readable-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-3.0.0.tgz", + "integrity": "sha512-vD2LytT6DxPynBa1xbMtswY9gGqj27wNbh2uvI5OhBe+mrGLurRWRQZyQn3812sqlQRtUJwaKVshG+PoGwbPDQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/netlify-cli/node_modules/to-regex/node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/netlify-cli/node_modules/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/netlify-cli/node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/tomlify-j0.4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz", + "integrity": "sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/netlify-cli/node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/netlify-cli/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/netlify-cli/node_modules/type-fest": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.0.tgz", + "integrity": "sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/netlify-cli/node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/netlify-cli/node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/ulid": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", + "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", + "dev": true, + "bin": { + "ulid": "bin/cli.js" + } + }, + "node_modules/netlify-cli/node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/netlify-cli/node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/union-value/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/unix-dgram": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/unix-dgram/-/unix-dgram-2.0.6.tgz", + "integrity": "sha512-AURroAsb73BZ6CdAyMrTk/hYKNj3DuYYEuOaB8bYMOHGKupRNScw90Q5C71tWJc3uE7dIeXRyuwN0xLLq3vDTg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.16.0" + }, + "engines": { + "node": ">=0.10.48" + } + }, + "node_modules/netlify-cli/node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/netlify-cli/node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/netlify-cli/node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/netlify-cli/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/netlify-cli/node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/netlify-cli/node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/netlify-cli/node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/wait-port": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.0.4.tgz", + "integrity": "sha512-w8Ftna3h6XSFWWc2JC5gZEgp64nz8bnaTp5cvzbJSZ53j+omktWTDdwXxEF0jM8YveviLgFWvNGrSvRHnkyHyw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "bin": { + "wait-port": "bin/wait-port.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/wait-port/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/wait-port/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/netlify-cli/node_modules/wait-port/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/netlify-cli/node_modules/wait-port/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/wait-port/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/netlify-cli/node_modules/wait-port/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/netlify-cli/node_modules/web-streams-polyfill": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", + "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/netlify-cli/node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/widest-line/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/widest-line/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==", + "dev": true, + "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/netlify-cli/node_modules/windows-release": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.0.1.tgz", + "integrity": "sha512-y1xFdFvdMiDXI3xiOhMbJwt1Y7dUxidha0CWPs1NgjZIjZANTcX7+7bMqNjuezhzb8s5JGEiBAbQjQQYYy7ulw==", + "dev": true, + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/netlify-cli/node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/netlify-cli/node_modules/winston/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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "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/netlify-cli/node_modules/wrap-ansi/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/netlify-cli/node_modules/wrap-ansi/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/netlify-cli/node_modules/wrap-ansi/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==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/wrap-ansi/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/netlify-cli/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/netlify-cli/node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/netlify-cli/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/xorshift": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/xorshift/-/xorshift-1.2.0.tgz", + "integrity": "sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/netlify-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/netlify-cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/netlify-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/yargs/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/netlify-cli/node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/netlify-cli/node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/netlify-cli/node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/netlify-cli/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "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": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-cli": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-7.1.2.tgz", + "integrity": "sha512-3mlEmN1v2NVuosMWZM2tP8bgZn7rO5PYxRRrXtdSyL5KipcgBDjJ9ct8/LKxImMCJJi3x5nYhCGFJOkGyEqXBQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "chokidar": "^3.3.0", + "dependency-graph": "^0.9.0", + "fs-extra": "^9.0.0", + "get-stdin": "^8.0.0", + "globby": "^11.0.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "postcss-reporter": "^6.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "postcss": "bin/postcss" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-reporter/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reporter/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reporter/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-reporter/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-reporter/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reporter/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/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==", + "dev": true, + "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/read-pkg-up/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==", + "dev": true, + "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/read-pkg-up/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==", + "dev": true, + "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/read-pkg-up/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==", + "dev": true, + "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/read-pkg-up/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==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg/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==", + "dev": true, + "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/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "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/readable-stream/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==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.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==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true + }, + "@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + } + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "dev": true + }, + "careful-downloader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/careful-downloader/-/careful-downloader-3.0.0.tgz", + "integrity": "sha512-5KMIPa0Yoj+2tY6OK9ewdwcPebp+4XS0dMYvvF9/8fkFEfvnEpWmHWYs9JNcZ7RZUvY/v6oPzLpmmTzSIbroSA==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "decompress": "^4.2.1", + "fs-extra": "^11.1.1", + "got": "^12.6.0", + "is-path-inside": "^4.0.0", + "tempy": "^3.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dev": true, + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dev": true, + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "dependency-graph": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", + "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "electron-to-chromium": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.1.tgz", + "integrity": "sha512-9ldvb6QMHiDpUNF1iSwBTiTT0qXEN+xIO5WlCJrC5gt0z74ofOiqR698vaJqYWnri0XZiF0YmnrFmGq/EmpGAA==", + "dev": true + }, + "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==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "dev": true + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "hugo-extended": { + "version": "0.115.2", + "resolved": "https://registry.npmjs.org/hugo-extended/-/hugo-extended-0.115.2.tgz", + "integrity": "sha512-PCLH9TwexpYTVsrAI8AFV0PJLC4vHsncxTRcwvTYl7atLSWEIySBvO7z5ivx2vAvwzrgnCOVgLllIgJISsYnpg==", + "dev": true, + "requires": { + "careful-downloader": "^3.0.0", + "log-symbols": "^5.1.0", + "read-pkg-up": "^9.1.0" + }, + "dependencies": { + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + } + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "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==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "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==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "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==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lunr-languages": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", + "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "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==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "netlify-cli": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-15.9.0.tgz", + "integrity": "sha512-AqeT+3vb8dWErhVBtso7VjxGdszwaWH9AGnwn8tvyknjxN+qNtlXGb5PxcfI1COaL2BlSphMMGjt/jl7C1NBkQ==", + "dev": true, + "requires": { + "@bugsnag/js": "7.20.2", + "@fastify/static": "6.10.2", + "@netlify/build": "29.16.1", + "@netlify/build-info": "7.4.1", + "@netlify/config": "20.6.0", + "@netlify/edge-bundler": "8.16.4", + "@netlify/framework-info": "9.8.10", + "@netlify/local-functions-proxy": "1.1.1", + "@netlify/serverless-functions-api": "1.5.1", + "@netlify/zip-it-and-ship-it": "9.13.0", + "@octokit/rest": "19.0.13", + "@skn0tt/lambda-local": "2.0.3", + "ansi-escapes": "6.2.0", + "ansi-styles": "6.2.1", + "ansi-to-html": "0.7.2", + "ascii-table": "0.0.9", + "backoff": "2.5.0", + "better-opn": "3.0.2", + "boxen": "7.1.1", + "chalk": "5.2.0", + "chokidar": "3.5.3", + "ci-info": "3.8.0", + "clean-deep": "3.4.0", + "commander": "10.0.1", + "comment-json": "4.2.3", + "concordance": "5.0.4", + "configstore": "6.0.0", + "content-type": "1.0.5", + "cookie": "0.5.0", + "copy-template-dir": "1.4.0", + "cron-parser": "4.8.1", + "debug": "4.3.4", + "decache": "4.6.2", + "dot-prop": "7.2.0", + "dotenv": "16.0.3", + "env-paths": "3.0.0", + "envinfo": "7.8.1", + "etag": "1.8.1", + "execa": "5.1.1", + "express": "4.18.2", + "express-logging": "1.1.1", + "extract-zip": "2.0.1", + "fastest-levenshtein": "1.0.16", + "fastify": "4.17.0", + "find-up": "6.3.0", + "flush-write-stream": "2.0.0", + "folder-walker": "3.2.0", + "from2-array": "0.0.4", + "fuzzy": "0.1.3", + "get-port": "5.1.1", + "gh-release-fetch": "4.0.3", + "git-repo-info": "2.1.1", + "gitconfiglocal": "2.1.0", + "hasbin": "1.2.3", + "hasha": "5.2.2", + "http-proxy": "1.18.1", + "http-proxy-middleware": "2.0.6", + "https-proxy-agent": "5.0.1", + "inquirer": "6.5.2", + "inquirer-autocomplete-prompt": "1.4.0", + "is-docker": "3.0.0", + "is-stream": "3.0.0", + "is-wsl": "2.2.0", + "isexe": "2.0.0", + "jsonwebtoken": "9.0.1", + "jwt-decode": "3.1.2", + "listr": "0.14.3", + "locate-path": "7.2.0", + "lodash": "4.17.21", + "log-symbols": "5.1.0", + "log-update": "5.0.1", + "minimist": "1.2.8", + "multiparty": "4.2.3", + "netlify": "13.1.10", + "netlify-headers-parser": "7.1.2", + "netlify-redirect-parser": "14.1.3", + "netlify-redirector": "0.4.0", + "node-fetch": "2.6.12", + "node-version-alias": "3.4.1", + "ora": "6.3.1", + "p-filter": "3.0.0", + "p-map": "5.5.0", + "p-wait-for": "5.0.2", + "parallel-transform": "1.2.0", + "parse-github-url": "1.0.2", + "parse-gitignore": "2.0.0", + "path-key": "4.0.0", + "prettyjson": "1.2.5", + "pump": "3.0.0", + "raw-body": "2.5.2", + "read-pkg-up": "9.1.0", + "semver": "7.5.4", + "source-map-support": "0.5.21", + "strip-ansi-control-characters": "2.0.0", + "tabtab": "3.0.2", + "tempy": "3.0.0", + "terminal-link": "3.0.0", + "through2-filter": "3.0.0", + "through2-map": "3.0.0", + "to-readable-stream": "3.0.0", + "toml": "3.0.0", + "ulid": "2.3.0", + "unixify": "1.0.0", + "update-notifier": "6.0.2", + "uuid": "9.0.0", + "wait-port": "1.0.4", + "winston": "3.8.2", + "write-file-atomic": "5.0.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true + }, + "@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "dev": true + }, + "@bugsnag/browser": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.20.2.tgz", + "integrity": "sha512-4J4s53ZpYr3hHA+QjxUjOI6U+A8+XuUVH45UshE87Jp2Y4mV8ML2DovejqJS8J8yjdbnh2z1Wtg/v3WUNt4ayQ==", + "dev": true, + "requires": { + "@bugsnag/core": "^7.19.0" + } + }, + "@bugsnag/core": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.19.0.tgz", + "integrity": "sha512-2KGwdaLD9PhR7Wk7xPi3jGuGsKTatc/28U4TOZIDU3CgC2QhGjubwiXSECel5gwxhZ3jACKcMKSV2ovHhv1NrA==", + "dev": true, + "requires": { + "@bugsnag/cuid": "^3.0.0", + "@bugsnag/safe-json-stringify": "^6.0.0", + "error-stack-parser": "^2.0.3", + "iserror": "0.0.2", + "stack-generator": "^2.0.3" + } + }, + "@bugsnag/cuid": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.2.tgz", + "integrity": "sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ==", + "dev": true + }, + "@bugsnag/js": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-7.20.2.tgz", + "integrity": "sha512-Q08k0h0h6NFwFGkFmib39Uln2WpvJdqT1EGF1JlyYiGW03Y+VopVb9r37pZrRrN9IY08mxaIEO8la5xeaWAs6A==", + "dev": true, + "requires": { + "@bugsnag/browser": "^7.20.2", + "@bugsnag/node": "^7.19.0" + } + }, + "@bugsnag/node": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.19.0.tgz", + "integrity": "sha512-c4snyxx5d/fsMogmgehFBGc//daH6+4XCplia4zrEQYltjaQ+l8ud0dPx623DgJl/2j1+2zlRc7y7IHSd7Gm5w==", + "dev": true, + "requires": { + "@bugsnag/core": "^7.19.0", + "byline": "^5.0.0", + "error-stack-parser": "^2.0.2", + "iserror": "^0.0.2", + "pump": "^3.0.0", + "stack-generator": "^2.0.3" + } + }, + "@bugsnag/safe-json-stringify": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz", + "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==", + "dev": true + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@dependents/detective-less": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-4.0.0.tgz", + "integrity": "sha512-0udn+HKjGUzTX4Z+0vXdEJVsO28gxy5QxWjeChK4ZH+bwdvIXLuztiGZk8wLyAG1+LNZ5haVHKr5j1XfJnAkyQ==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.0" + } + }, + "@fastify/accept-negotiator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", + "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==", + "dev": true + }, + "@fastify/ajv-compiler": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", + "dev": true, + "requires": { + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true + } + } + }, + "@fastify/deepmerge": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", + "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==", + "dev": true + }, + "@fastify/error": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.2.0.tgz", + "integrity": "sha512-KAfcLa+CnknwVi5fWogrLXgidLic+GXnLjijXdpl8pvkvbXU5BGa37iZO9FGvsh9ZL4y+oFi5cbHBm5UOG+dmQ==", + "dev": true + }, + "@fastify/fast-json-stringify-compiler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "dev": true, + "requires": { + "fast-json-stringify": "^5.7.0" + } + }, + "@fastify/send": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.0.1.tgz", + "integrity": "sha512-8jdouu0o5d0FMq1+zCKeKXc1tmOQ5tTGYdQP3MpyF9+WWrZT1KCBdh6hvoEYxOm3oJG/akdE9BpehLiJgYRvGw==", + "dev": true, + "requires": { + "@lukeed/ms": "^2.0.1", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "2.0.0", + "mime": "^3.0.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + } + } + }, + "@fastify/static": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.10.2.tgz", + "integrity": "sha512-UoaMvIHSBLCZBYOVZwFRYqX2ufUhd7FFMYGDeSf0Z+D8jhYtwljjmuQGuanUP8kS4y/ZEV1a8mfLha3zNwsnnQ==", + "dev": true, + "requires": { + "@fastify/accept-negotiator": "^1.0.0", + "@fastify/send": "^2.0.0", + "content-disposition": "^0.5.3", + "fastify-plugin": "^4.0.0", + "glob": "^8.0.1", + "p-limit": "^3.1.0", + "readable-stream": "^4.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "@grpc/grpc-js": { + "version": "1.8.17", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.17.tgz", + "integrity": "sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw==", + "dev": true, + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", + "dev": true, + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^17.7.2" + } + }, + "@honeycombio/opentelemetry-node": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@honeycombio/opentelemetry-node/-/opentelemetry-node-0.4.0.tgz", + "integrity": "sha512-6PFX8FGW7uA7vQ3mxNIoN36rH9Zx5kXh4kKP9zu28nynyWyy9JE3l8PNJYd9FS2L/d88ZUpQAiQ1pROaANd5MA==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.7.3", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/exporter-metrics-otlp-grpc": "^0.36.1", + "@opentelemetry/exporter-metrics-otlp-proto": "^0.36.1", + "@opentelemetry/exporter-trace-otlp-grpc": "^0.36.1", + "@opentelemetry/exporter-trace-otlp-proto": "^0.36.1", + "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/sdk-metrics": "^1.10.1", + "@opentelemetry/sdk-node": "^0.36.1", + "@opentelemetry/sdk-trace-base": "^1.10.1", + "axios": "^1.1.3" + } + }, + "@humanwhocodes/momoa": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", + "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", + "dev": true + }, + "@import-maps/resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@import-maps/resolve/-/resolve-1.0.1.tgz", + "integrity": "sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==", + "dev": true + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@lukeed/ms": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.1.tgz", + "integrity": "sha512-Xs/4RZltsAL7pkvaNStUQt7netTkyxrS0K+RILcVr3TRMS/ToOg4I6uNfhB9SlGsnWBym4U+EaXq0f0cEMNkHA==", + "dev": true + }, + "@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + } + }, + "@netlify/binary-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@netlify/binary-info/-/binary-info-1.0.0.tgz", + "integrity": "sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==", + "dev": true + }, + "@netlify/build": { + "version": "29.16.1", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.16.1.tgz", + "integrity": "sha512-1D3l0NiCVEFF5aU2prVMP8MQr2Bu+UuyYe69Z7k/7GjFIx4Q1sLgewTf4p+al3LhSLT5fs52cbIec9pT9HSjyQ==", + "dev": true, + "requires": { + "@bugsnag/js": "^7.0.0", + "@honeycombio/opentelemetry-node": "^0.4.0", + "@netlify/cache-utils": "^5.1.5", + "@netlify/config": "^20.6.0", + "@netlify/edge-bundler": "8.16.4", + "@netlify/framework-info": "^9.8.10", + "@netlify/functions-utils": "^5.2.18", + "@netlify/git-utils": "^5.1.1", + "@netlify/plugins-list": "^6.68.0", + "@netlify/run-utils": "^5.1.1", + "@netlify/zip-it-and-ship-it": "9.13.0", + "@opentelemetry/api": "^1.4.1", + "@sindresorhus/slugify": "^2.0.0", + "ansi-escapes": "^6.0.0", + "chalk": "^5.0.0", + "clean-stack": "^4.0.0", + "execa": "^6.0.0", + "fdir": "^6.0.1", + "figures": "^5.0.0", + "filter-obj": "^5.0.0", + "got": "^12.0.0", + "hot-shots": "10.0.0", + "indent-string": "^5.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "keep-func-props": "^4.0.0", + "locate-path": "^7.0.0", + "log-process-errors": "^8.0.0", + "map-obj": "^5.0.0", + "memoize-one": "^6.0.0", + "os-name": "^5.0.0", + "p-event": "^5.0.0", + "p-every": "^2.0.0", + "p-filter": "^3.0.0", + "p-locate": "^6.0.0", + "p-reduce": "^3.0.0", + "path-exists": "^5.0.0", + "path-type": "^5.0.0", + "pkg-dir": "^7.0.0", + "pretty-ms": "^8.0.0", + "ps-list": "^8.0.0", + "read-pkg-up": "^9.0.0", + "readdirp": "^3.4.0", + "resolve": "^2.0.0-next.1", + "rfdc": "^1.3.0", + "safe-json-stringify": "^1.2.0", + "semver": "^7.3.8", + "string-width": "^5.0.0", + "strip-ansi": "^7.0.0", + "supports-color": "^9.0.0", + "terminal-link": "^3.0.0", + "ts-node": "^10.9.1", + "typescript": "^5.0.0", + "uuid": "^9.0.0", + "yargs": "^17.6.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "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==", + "dev": true + }, + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "requires": { + "@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" + } + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true + }, + "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==", + "dev": true + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "parse-ms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", + "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==", + "dev": true + }, + "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==", + "dev": true + }, + "path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "requires": { + "find-up": "^6.3.0" + } + }, + "pretty-ms": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", + "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==", + "dev": true, + "requires": { + "parse-ms": "^3.0.0" + } + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@netlify/build-info": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@netlify/build-info/-/build-info-7.4.1.tgz", + "integrity": "sha512-JucExQCHJCk8smscd+fzU2z0MM7vyw4XJJWREq9Im5i8nPy56mjG0oeODk7DB7pQK6X9wyUViwVRPF8ftwuq9Q==", + "dev": true, + "requires": { + "@bugsnag/js": "^7.20.0", + "@netlify/framework-info": "^9.8.10", + "dot-prop": "^7.2.0", + "find-up": "^6.3.0", + "minimatch": "^9.0.0", + "read-pkg": "^7.1.0", + "semver": "^7.3.8", + "toml": "^3.0.0", + "yaml": "^2.1.3", + "yargs": "^17.6.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true + } + } + }, + "@netlify/cache-utils": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@netlify/cache-utils/-/cache-utils-5.1.5.tgz", + "integrity": "sha512-lMNdFmy2Yu3oVquSPooRDLxJ8QOsIX6X6vzA2pKz/9V2LQFJiqBukggXM+Rnqzk1regPpdJ0jK3dPGvOKaRQgg==", + "dev": true, + "requires": { + "cpy": "^9.0.0", + "get-stream": "^6.0.0", + "globby": "^13.0.0", + "junk": "^4.0.0", + "locate-path": "^7.0.0", + "move-file": "^3.0.0", + "path-exists": "^5.0.0", + "readdirp": "^3.4.0" + }, + "dependencies": { + "globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "@netlify/config": { + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.6.0.tgz", + "integrity": "sha512-YPWvkq7hYgYLVsbEPbGq7aZQh59D2h5NeIwgRZxabsheIMriyxpDZVVajK1+z1U0Z2DsJxn+XSOJSNSSKUIk4w==", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "cron-parser": "^4.1.0", + "deepmerge": "^4.2.2", + "dot-prop": "^7.0.0", + "execa": "^6.0.0", + "fast-safe-stringify": "^2.0.7", + "figures": "^5.0.0", + "filter-obj": "^5.0.0", + "find-up": "^6.0.0", + "indent-string": "^5.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "map-obj": "^5.0.0", + "netlify": "^13.1.10", + "netlify-headers-parser": "^7.1.2", + "netlify-redirect-parser": "^14.1.3", + "node-fetch": "^3.3.1", + "omit.js": "^2.0.2", + "p-locate": "^6.0.0", + "path-type": "^5.0.0", + "toml": "^3.0.0", + "tomlify-j0.4": "^3.0.0", + "validate-npm-package-name": "^4.0.0", + "yargs": "^17.6.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true + }, + "map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true + }, + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@netlify/edge-bundler": { + "version": "8.16.4", + "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-8.16.4.tgz", + "integrity": "sha512-5sYymRzZLzdSp1AtCcuEdjeQ/QcJ6LORERU5Nr48MY5Y9GKEHC7uIeQFwLT/YMgnDRd4FqPv+g8RBSu3HP9Czg==", + "dev": true, + "requires": { + "@import-maps/resolve": "^1.0.1", + "ajv": "^8.11.2", + "ajv-errors": "^3.0.0", + "better-ajv-errors": "^1.2.0", + "common-path-prefix": "^3.0.0", + "env-paths": "^3.0.0", + "execa": "^6.0.0", + "find-up": "^6.3.0", + "get-port": "^6.1.2", + "glob-to-regexp": "^0.4.1", + "is-path-inside": "^4.0.0", + "jsonc-parser": "^3.2.0", + "node-fetch": "^3.1.1", + "node-stream-zip": "^1.15.0", + "p-retry": "^5.1.1", + "p-wait-for": "^4.1.0", + "path-key": "^4.0.0", + "regexp-tree": "^0.1.24", + "semver": "^7.3.8", + "tmp-promise": "^3.0.3", + "uuid": "^9.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", + "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", + "dev": true, + "requires": {} + }, + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "get-port": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz", + "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", + "dev": true + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true + }, + "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==", + "dev": true + }, + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true + }, + "p-wait-for": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz", + "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==", + "dev": true, + "requires": { + "p-timeout": "^5.0.0" + } + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "@netlify/esbuild": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild/-/esbuild-0.14.39.tgz", + "integrity": "sha512-C3xpwdT2xw6SnSb+hLQoxjtikAKiz6BjQjzlIaysHDpGbmIcmUHZ/X+dyLtCqAvf15WNK5GSBZYOlpgcOE0WZA==", + "dev": true, + "requires": { + "@netlify/esbuild-android-64": "0.14.39", + "@netlify/esbuild-android-arm64": "0.14.39", + "@netlify/esbuild-darwin-64": "0.14.39", + "@netlify/esbuild-darwin-arm64": "0.14.39", + "@netlify/esbuild-freebsd-64": "0.14.39", + "@netlify/esbuild-freebsd-arm64": "0.14.39", + "@netlify/esbuild-linux-32": "0.14.39", + "@netlify/esbuild-linux-64": "0.14.39", + "@netlify/esbuild-linux-arm": "0.14.39", + "@netlify/esbuild-linux-arm64": "0.14.39", + "@netlify/esbuild-linux-mips64le": "0.14.39", + "@netlify/esbuild-linux-ppc64le": "0.14.39", + "@netlify/esbuild-linux-riscv64": "0.14.39", + "@netlify/esbuild-linux-s390x": "0.14.39", + "@netlify/esbuild-netbsd-64": "0.14.39", + "@netlify/esbuild-openbsd-64": "0.14.39", + "@netlify/esbuild-sunos-64": "0.14.39", + "@netlify/esbuild-windows-32": "0.14.39", + "@netlify/esbuild-windows-64": "0.14.39", + "@netlify/esbuild-windows-arm64": "0.14.39" + } + }, + "@netlify/esbuild-android-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz", + "integrity": "sha512-azq+lsvjRsKLap8ubIwSJXGyknUACqYu5h98Fvyoh40Qk4QXIVKl16JIJ4s+B7jy2k9qblEc5c4nxdDA3aGbVA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-android-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz", + "integrity": "sha512-WhIP7ePq4qMC1sxoaeB9SsJqSW6uzW7XDj/IuWl1l9r94nwxywU1sYdVLaF2mZr15njviazYjVr8x1d+ipwL3w==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-darwin-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz", + "integrity": "sha512-eF4GvLYiDxtcyjFT55+h+8c8A2HltjeMezCqkt3AQSgOdu1nhlvwbBhIdg2dyM6gKEaEm5hBtTbicEDSwsLodA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-darwin-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz", + "integrity": "sha512-b7rtnX/VtYwNbUCxs3eulrCWJ+u2YvqDcXiIV1ka+od+N0fTx+4RrVkVp1lha9L0wEJYK9J7UWZOMLMyd1ynRg==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-freebsd-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz", + "integrity": "sha512-XtusxDJt2hUKUdggbTFolMx0kJL2zEa4STI7YwpB+ukEWoW5rODZjiLZbqqYLcjDH8k4YwHaMxs103L8eButEQ==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-freebsd-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz", + "integrity": "sha512-A9XZKai+k6kfndCtN6Dh2usT28V0+OGxzFdZsANONPQiEUTrGZCgwcHWiVlVn7SeAwPR1tKZreTnvrfj8cj7hA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-32": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz", + "integrity": "sha512-ZQnqk/82YRvINY+aF+LlGfRZ19c5mH0jaxsO046GpIOPx6PcXHG8JJ2lg+vLJVe4zFPohxzabcYpwFuT4cg/GA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz", + "integrity": "sha512-IQtswVw7GAKNX/3yV390wSfSXvMWy0d5cw8csAffwBk9gupftY2lzepK4Cn6uD/aqLt3Iku33FbHop/2nPGfQA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-arm": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz", + "integrity": "sha512-QdOzQniOed0Bz1cTC9TMMwvtAqKayYv66H4edJlbvElC81yJZF/c9XhmYWJ6P5g4nkChZubQ5RcQwTLmrFGexg==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz", + "integrity": "sha512-4Jie4QV6pWWuGN7TAshNMGbdTA9+VbRkv3rPIxhgK5gBfmsAV1yRKsumE4Y77J0AZNRiOriyoec4zc1qkmI3zg==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-mips64le": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz", + "integrity": "sha512-Htozxr95tw4tSd86YNbCLs1eoYQzNu/cHpzFIkuJoztZueUhl8XpRvBdob7n3kEjW1gitLWAIn8XUwSt+aJ1Tg==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-ppc64le": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz", + "integrity": "sha512-tFy0ufWIdjeuk1rPHee00TZlhr9OSF00Ufb4ROFyt2ArKuMSkWRJuDgx6MtZcAnCIN4cybo/xWl3MKTM+scnww==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-riscv64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz", + "integrity": "sha512-ZzfKvwIxL7wQnYbVFpyNW0wotnLoKageUEM57RbjekesJoNQnqUR6Usm+LDZoB8iRsI58VX1IxnstP0cX8vOHw==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-linux-s390x": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz", + "integrity": "sha512-yjC0mFwnuMRoh0WcF0h71MF71ytZBFEQQTRdgiGT0+gbC4UApBqnTkJdLx32RscBKi9skbMChiJ748hDJou6FA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-netbsd-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz", + "integrity": "sha512-mIq4znOoz3YfTVdv3sIWfR4Zx5JgMnT4srlhC5KYVHibhxvyDdin5txldYXmR4Zv4dZd6DSuWFsn441aUegHeA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-openbsd-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz", + "integrity": "sha512-+t6QdzJCngH19hV7ClpFAeFDI2ko/HNcFbiNwaXTMVLB3hWi1sJtn+fzZck5HfzN4qsajAVqZq4nwX69SSt25A==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-sunos-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz", + "integrity": "sha512-HLfXG6i2p3wyyyWHeeP4ShGDJ1zRMnf9YLJLe2ezv2KqvcKw/Un/m/FBuDW1p13oSUO7ShISMzgc1dw1GGBEOQ==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-windows-32": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz", + "integrity": "sha512-ZpSQcKbVSCU3ln7mHpsL/5dWsUqCNdTnC5YAArnaOwdrlIunrsbo5j4MOZRRcGExb2uvTc/rb+D3mlGb8j1rkA==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-windows-64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz", + "integrity": "sha512-I3gCdO8+6IDhT4Y1ZmV4o2Gg0oELv7N4kCcE4kqclz10fWHNjf19HQNHyBJe0AWnFV5ZfT154VVD31dqgwpgFw==", + "dev": true, + "optional": true + }, + "@netlify/esbuild-windows-arm64": { + "version": "0.14.39", + "resolved": "https://registry.npmjs.org/@netlify/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz", + "integrity": "sha512-WX52W8U1lsfWcz6NWoSpDs57lgiiMHN23seq8G2bvxzGS/tvYD3dxVLLW5UPoKSnFDyVQT7b6Zkt6AkBten1yQ==", + "dev": true, + "optional": true + }, + "@netlify/framework-info": { + "version": "9.8.10", + "resolved": "https://registry.npmjs.org/@netlify/framework-info/-/framework-info-9.8.10.tgz", + "integrity": "sha512-VT8ejAaB/XU2xRpdpQinHUO1YL3+BMx6LJ49wJk2u9Yq/VI1/gYCi5VqbqTHBQXJUlOi84YuiRlrDBsLpPr8eg==", + "dev": true, + "requires": { + "ajv": "^8.12.0", + "filter-obj": "^5.0.0", + "find-up": "^6.3.0", + "is-plain-obj": "^4.0.0", + "locate-path": "^7.0.0", + "p-filter": "^3.0.0", + "p-locate": "^6.0.0", + "process": "^0.11.10", + "read-pkg-up": "^9.0.0", + "semver": "^7.3.8" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@netlify/functions-utils": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.2.18.tgz", + "integrity": "sha512-da/DvWJw/yE9VBPuBkqPH0E/G3lsnxugqZqkwmA4DnPkdN/qythIBPYznw4un1tVmA5ekZRP3var8bZDZ0DPNQ==", + "dev": true, + "requires": { + "@netlify/zip-it-and-ship-it": "9.13.0", + "cpy": "^9.0.0", + "path-exists": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "@netlify/git-utils": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@netlify/git-utils/-/git-utils-5.1.1.tgz", + "integrity": "sha512-oyHieuTZH3rKTmg7EKpGEGa28IFxta2oXuVwpPJI/FJAtBje3UE+yko0eDjNufgm3AyGa8G77trUxgBhInAYuw==", + "dev": true, + "requires": { + "execa": "^6.0.0", + "map-obj": "^5.0.0", + "micromatch": "^4.0.2", + "moize": "^6.1.3", + "path-exists": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "@netlify/local-functions-proxy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy/-/local-functions-proxy-1.1.1.tgz", + "integrity": "sha512-eXSsayLT6PMvjzFQpjC9nkg2Otc3lZ5GoYele9M6f8PmsvWpaXRhwjNQ0NYhQQ2UZbLMIiO2dH8dbRsT3bMkFw==", + "dev": true, + "requires": { + "@netlify/local-functions-proxy-darwin-arm64": "1.1.1", + "@netlify/local-functions-proxy-darwin-x64": "1.1.1", + "@netlify/local-functions-proxy-freebsd-arm64": "1.1.1", + "@netlify/local-functions-proxy-freebsd-x64": "1.1.1", + "@netlify/local-functions-proxy-linux-arm": "1.1.1", + "@netlify/local-functions-proxy-linux-arm64": "1.1.1", + "@netlify/local-functions-proxy-linux-ia32": "1.1.1", + "@netlify/local-functions-proxy-linux-ppc64": "1.1.1", + "@netlify/local-functions-proxy-linux-x64": "1.1.1", + "@netlify/local-functions-proxy-openbsd-x64": "1.1.1", + "@netlify/local-functions-proxy-win32-ia32": "1.1.1", + "@netlify/local-functions-proxy-win32-x64": "1.1.1" + } + }, + "@netlify/local-functions-proxy-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-darwin-arm64/-/local-functions-proxy-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-lphJ9qqZ3glnKWEqlemU1LMqXxtJ/tKf7VzakqqyjigwLscXSZSb6fupSjQfd4tR1xqxA76ylws/2HDhc/gs+Q==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-darwin-x64/-/local-functions-proxy-darwin-x64-1.1.1.tgz", + "integrity": "sha512-4CRB0H+dXZzoEklq5Jpmg+chizXlVwCko94d8+UHWCgy/bA3M/rU/BJ8OLZisnJaAktHoeLABKtcLOhtRHpxZQ==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-freebsd-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-freebsd-arm64/-/local-functions-proxy-freebsd-arm64-1.1.1.tgz", + "integrity": "sha512-u13lWTVMJDF0A6jX7V4N3HYGTIHLe5d1Z2wT43fSIHwXkTs6UXi72cGSraisajG+5JFIwHfPr7asw5vxFC0P9w==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-freebsd-x64/-/local-functions-proxy-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-g5xw4xATK5YDzvXtzJ8S1qSkWBiyF8VVRehXPMOAMzpGjCX86twYhWp8rbAk7yA1zBWmmWrWNA2Odq/MgpKJJg==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-linux-arm": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-arm/-/local-functions-proxy-linux-arm-1.1.1.tgz", + "integrity": "sha512-YsTpL+AbHwQrfHWXmKnwUrJBjoUON363nr6jUG1ueYnpbbv6wTUA7gI5snMi/gkGpqFusBthAA7C30e6bixfiA==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-linux-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-arm64/-/local-functions-proxy-linux-arm64-1.1.1.tgz", + "integrity": "sha512-dPGu1H5n8na7mBKxiXQ+FNmthDAiA57wqgpm5JMAHtcdcmRvcXwJkwWVGvwfj8ShhYJHQaSaS9oPgO+mpKkgmA==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-linux-ia32": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-ia32/-/local-functions-proxy-linux-ia32-1.1.1.tgz", + "integrity": "sha512-Ra0FlXDrmPRaq+rYH3/ttkXSrwk1D5Zx/Na7UPfJZxMY7Qo5iY4bgi/FuzjzWzlp0uuKZOhYOYzYzsIIyrSvmw==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-linux-ppc64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-ppc64/-/local-functions-proxy-linux-ppc64-1.1.1.tgz", + "integrity": "sha512-oXf1satwqwUUxz7LHS1BxbRqc4FFEKIDFTls04eXiLReFR3sqv9H/QuYNTCCDMuRcCOd92qKyDfATdnxT4HR8w==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-linux-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-linux-x64/-/local-functions-proxy-linux-x64-1.1.1.tgz", + "integrity": "sha512-bS3u4JuDg/eC0y4Na3i/29JBOxrdUvsK5JSjHfzUeZEbOcuXYf4KavTpHS5uikdvTgyczoSrvbmQJ5m0FLXfLA==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-openbsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-openbsd-x64/-/local-functions-proxy-openbsd-x64-1.1.1.tgz", + "integrity": "sha512-1xLef/kLRNkBTXJ+ZGoRFcwsFxd/B2H3oeJZyXaZ3CN5umd9Mv9wZuAD74NuMt/535yRva8jtAJqvEgl9xMSdA==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-win32-ia32": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-win32-ia32/-/local-functions-proxy-win32-ia32-1.1.1.tgz", + "integrity": "sha512-4IOMDBxp2f8VbIkhZ85zGNDrZR4ey8d68fCMSOIwitjsnKav35YrCf8UmAh3UR6CNIRJdJL4MW1GYePJ7iJ8uA==", + "dev": true, + "optional": true + }, + "@netlify/local-functions-proxy-win32-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@netlify/local-functions-proxy-win32-x64/-/local-functions-proxy-win32-x64-1.1.1.tgz", + "integrity": "sha512-VCBXBJWBujVxyo5f+3r8ovLc9I7wJqpmgDn3ixs1fvdrER5Ac+SzYwYH4mUug9HI08mzTSAKZErzKeuadSez3w==", + "dev": true, + "optional": true + }, + "@netlify/open-api": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-2.19.1.tgz", + "integrity": "sha512-RkucRf8o0vYhCDXCRHWU/EdhkVE3JhkqKmZFvMW6qCPD206GV2Cfo9JGSKb0NdN+nmHSNaYmd+9dvT6I9MP4pw==", + "dev": true + }, + "@netlify/plugins-list": { + "version": "6.68.0", + "resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.68.0.tgz", + "integrity": "sha512-OIW7oDTXFKEyzG2DQr6ndLWjYfNnSZAKbldD2dquH3V8Q6DrbGk8Dhv6LkuGOJBgrKS25SyabYOyHIVASQjrFw==", + "dev": true + }, + "@netlify/run-utils": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@netlify/run-utils/-/run-utils-5.1.1.tgz", + "integrity": "sha512-V2B8ZB19heVKa715uOeDkztxLH7uaqZ+9U5fV7BRzbQ2514DO5Vxj9hG0irzuRLfZXZZjp/chPUesv4VVsce/A==", + "dev": true, + "requires": { + "execa": "^6.0.0" + }, + "dependencies": { + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "@netlify/serverless-functions-api": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.5.1.tgz", + "integrity": "sha512-c8RjIu+fkpfOGLaW0Z0iFG39GUK7sCa6M3Qy3fqouMpT00TaiheiyssnnDZGSLkNp4o+UtbRnITB1zuwDeHMLw==", + "dev": true + }, + "@netlify/zip-it-and-ship-it": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.13.0.tgz", + "integrity": "sha512-IK6FvXFtRuEA2sZwSmNwkfZSOA1M9tTIHLqvBaHz7h3G0qquZ6p7DMMH7UkmbkPyqp6dZTfwhZ4Stc8A6UjzJw==", + "dev": true, + "requires": { + "@babel/parser": "^7.22.5", + "@netlify/binary-info": "^1.0.0", + "@netlify/esbuild": "0.14.39", + "@netlify/serverless-functions-api": "^1.5.1", + "@vercel/nft": "^0.22.0", + "archiver": "^5.3.0", + "common-path-prefix": "^3.0.0", + "cp-file": "^10.0.0", + "es-module-lexer": "^1.0.0", + "execa": "^6.0.0", + "filter-obj": "^5.0.0", + "find-up": "^6.0.0", + "glob": "^8.0.3", + "is-builtin-module": "^3.1.0", + "is-path-inside": "^4.0.0", + "junk": "^4.0.0", + "locate-path": "^7.0.0", + "merge-options": "^3.0.4", + "minimatch": "^9.0.0", + "normalize-path": "^3.0.0", + "p-map": "^5.0.0", + "path-exists": "^5.0.0", + "precinct": "^11.0.0", + "require-package-name": "^2.0.1", + "resolve": "^2.0.0-next.1", + "semver": "^7.3.8", + "tmp-promise": "^3.0.2", + "toml": "^3.0.0", + "unixify": "^1.0.0", + "yargs": "^17.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true + }, + "is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@octokit/auth-token": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz", + "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0" + } + }, + "@octokit/core": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", + "integrity": "sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==", + "dev": true, + "requires": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^18.0.0" + } + } + } + }, + "@octokit/endpoint": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.2.tgz", + "integrity": "sha512-8/AUACfE9vpRpehE6ZLfEtzkibe5nfsSwFZVMsG8qabqRt1M81qZYUFRZa1B8w8lP6cdfDJfRq9HWS+MbmR7tw==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.1.tgz", + "integrity": "sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==", + "dev": true, + "requires": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^7.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.13.1.tgz", + "integrity": "sha512-4EuKSk3N95UBWFau3Bz9b3pheQ8jQYbKmBL5+GSuY8YDPDwu03J4BjI+66yNi8aaX/3h1qDpb0mbBkLdr+cfGQ==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", + "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "dev": true, + "requires": { + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^18.0.0" + } + } + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.1.2.tgz", + "integrity": "sha512-R0oJ7j6f/AdqPLtB9qRXLO+wjI9pctUn8Ka8UGfGaFCcCv3Otx14CshQ89K4E88pmyYZS8p0rNTiprML/81jig==", + "dev": true, + "requires": { + "@octokit/types": "^9.2.3", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^18.0.0" + } + } + } + }, + "@octokit/request": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz", + "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==", + "dev": true, + "requires": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^7.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz", + "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==", + "dev": true, + "requires": { + "@octokit/types": "^7.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "19.0.13", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.13.tgz", + "integrity": "sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==", + "dev": true, + "requires": { + "@octokit/core": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.2", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^7.1.2" + } + }, + "@octokit/tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", + "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==", + "dev": true + }, + "@octokit/types": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.5.1.tgz", + "integrity": "sha512-Zk4OUMLCSpXNI8KZZn47lVLJSsgMyCimsWWQI5hyjZg7hdYm0kjotaIkbG0Pp8SfU2CofMBzonboTqvzn3FrJA==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^13.11.0" + } + }, + "@opentelemetry/api": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", + "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", + "dev": true + }, + "@opentelemetry/context-async-hooks": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.10.1.tgz", + "integrity": "sha512-6CC9sWOZDkUkKrAR957fmxXXlaK3uiBu5xVnuNEQ7hI7VqkUC/r0mNYIql0ouRInLz5o0HwmDuga1eXgQU7KNQ==", + "dev": true, + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.10.1.tgz", + "integrity": "sha512-uBZs9poKMWX7WWHsRfaGHqvrn77D9EU5LwU8Ge3YKD/Su5Gy+T1v476l49nl1UOzEMNo4cISao3nIqQVsABB8g==", + "dev": true, + "requires": { + "@opentelemetry/semantic-conventions": "1.10.1" + } + }, + "@opentelemetry/exporter-jaeger": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.10.1.tgz", + "integrity": "sha512-bZIoSD6M7uxO19HtRJCAceAahX56LUmj5N/XQFHmoi3iFqA2JfR7bqsyHQCYbgINdiee155UejaqkNpgvjV7fw==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1", + "jaeger-client": "^3.15.0" + } + }, + "@opentelemetry/exporter-metrics-otlp-grpc": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.36.1.tgz", + "integrity": "sha512-yQPHny0Y3HIE1BSqbN82MoqqbbJeLINjL7Qf3kJwv1zt5YLUhYbn3FkqHQWS0YWpAvdjK0/OcN40SjEbVz2HRA==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.36.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1" + } + }, + "@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.36.1.tgz", + "integrity": "sha512-JcpEBwtBpNhVvmCLH3zjTPDcOld2AeI5rNglv2JrB16QCxQ5pwsOgzw7mPe/UR4u/53Ij7LIjFTOCeyVto/6aA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1" + } + }, + "@opentelemetry/exporter-metrics-otlp-proto": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.36.1.tgz", + "integrity": "sha512-dKJRKvIiyupuZJOVCzW9wNfsK6RxkELnzCSJHzFoIwhGRXSYpbWyYrfHj4ZJZWYZiQSJ7+I8BFUa4aSkBgnO0w==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.36.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-proto-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1" + } + }, + "@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.36.1.tgz", + "integrity": "sha512-U2HdWvQho2VkeSAcAhkZ2wjfUb/1SKQixo5x6LNBF17ES4QYuh5+BagYxfN5FP4dbLnjZpTtFk5lj+97lfNLEw==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + } + }, + "@opentelemetry/exporter-trace-otlp-http": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.36.1.tgz", + "integrity": "sha512-q/jKlfuKiHqltDzgzgEvXkoEJ/EyVSIAZhfiaoyBeQ49UhHCPvNTH36/hSwbGSEhKeX98WxXZK4NB/S3sUs8ig==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + } + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.36.1.tgz", + "integrity": "sha512-pNfrto7amygyyhmL4Kf96wuepROEecBYXSrtoXIVb1aUhUqjWLsA3/6DR3unB5EfSRA1Oq1Z9bqHfNuKqGfPNw==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "@opentelemetry/otlp-proto-exporter-base": "0.36.1", + "@opentelemetry/otlp-transformer": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.10.1.tgz", + "integrity": "sha512-8gF8MjcFf6IhQ7vm6W4tPYtu/vQswYVzpYvk3pUSaX9BMGrwgjeXg+LpuRtaxGoiGd08/g7JjZ4sWLUaELnzWw==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + } + }, + "@opentelemetry/otlp-exporter-base": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.36.1.tgz", + "integrity": "sha512-fpjPwLafJIjgxY5qx7Ly74AYmRCd9spC6/jCxvEgGheg1YT4+NkfVnrfllxLRgc9wQNhDj7Y0Knp8RcmXLLVfA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1" + } + }, + "@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.36.1.tgz", + "integrity": "sha512-71TdQ3Z0D2Trq8rc2UMvky7tmIpg8kVPUhdYH3p0tNsTmbx6GDpEBOpjp2/zCFvQ0SZFVfHH2Oj2OZxZiz+FNQ==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@grpc/proto-loader": "^0.7.3", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1" + } + }, + "@opentelemetry/otlp-proto-exporter-base": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.36.1.tgz", + "integrity": "sha512-9ErknJ5fS7r2NxEFeca93H+pGWnCjZCUWsz6Stcj5/z2rgsiZGHXLz3fQoUGQz+iXjiXKkks9wxTCRgWOW+Yiw==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/otlp-exporter-base": "0.36.1", + "protobufjs": "^7.1.2" + } + }, + "@opentelemetry/otlp-transformer": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.36.1.tgz", + "integrity": "sha512-d2MomkVHBHwfsmNz6E60s/sm7gtpSjFwDzkFLm9brVq//VXzEhaEyfYSeTabdUs4BmrzhqTIogHWlcd6cOiL+w==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1" + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.10.1.tgz", + "integrity": "sha512-YrWqU93PH8RyCmqGhtDZgyk64D+cp8XIjQsLhEgOPcOsxvxSSGXnGt46rx9Z8+WdIbJgj13Q4nV/xuh36k+O+A==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.10.1.tgz", + "integrity": "sha512-qvwFfDPoBw2YQW/OsGHdLdD/rqNRGBRLz5UZR/akO21C4qwIK+lQcXbSi5ve0p2eLHnFshhNFqDmgQclOYBcmg==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1" + } + }, + "@opentelemetry/resources": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.10.1.tgz", + "integrity": "sha512-e+wwdyO44jZtsT1aqGiWMFOfN1XuP9Tv4+H0OYP3yQajBtGdsZjdSUn9UNjw46JsW0Mb+RaTxJwsb2uvfHar0g==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + } + }, + "@opentelemetry/sdk-metrics": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.10.1.tgz", + "integrity": "sha512-ARAD4e6lZhLwstwW+1HG2Q3XuYFA/t8vn10KK/mA4em1pZYKFn64c45RJZJcntxWp4wOZRbp9iL1RXsg7zIjow==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "lodash.merge": "4.6.2" + } + }, + "@opentelemetry/sdk-node": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.36.1.tgz", + "integrity": "sha512-7cRIxls3Ccg6HmzSu30R5upi0yHEizab2rm2rATrAyFV3JJ/ISA7cojmwKwYG8p4rkPNNPLOwCxI3vlLJrBnKA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/exporter-jaeger": "1.10.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.36.1", + "@opentelemetry/exporter-trace-otlp-http": "0.36.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.36.1", + "@opentelemetry/exporter-zipkin": "1.10.1", + "@opentelemetry/instrumentation": "0.36.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/sdk-metrics": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "@opentelemetry/sdk-trace-node": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + }, + "dependencies": { + "@opentelemetry/instrumentation": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.36.1.tgz", + "integrity": "sha512-gtYErugMEF5NXVacmuE+tHFBiyB82YIiO5l8iZX9/4R4TDV8uCWdrLW5QZMqgTzPhiyOG9AITFdqhwIZMw/5lA==", + "dev": true, + "requires": { + "require-in-the-middle": "^6.0.0", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + } + }, + "require-in-the-middle": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-6.0.0.tgz", + "integrity": "sha512-+dtWQ7l2lqQDxheaG3jjyN1QI37gEwvzACSgjYi4/C2y+ZTUMeRW8BIOm+9NBKvwaMBUSZfPXVOt1skB0vBkRw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + } + }, + "resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "requires": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.10.1.tgz", + "integrity": "sha512-jutSP5t22wrPKReJKzI5uKht4mJ4cQdF/mGFJkN+emFFsDXru9CuFv/NfUrD0jEqoaaiqjcZtPSyTzMgu9LXvw==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.10.1", + "@opentelemetry/resources": "1.10.1", + "@opentelemetry/semantic-conventions": "1.10.1" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.10.1.tgz", + "integrity": "sha512-/y+s1j8rPTaKnPnbrsbYv3ygTb4hjx/1H32zqobFr85cvWX+Tt1RWmcZ51TaPAfq5uJobGFhhLh6ADI2RDvk5Q==", + "dev": true, + "requires": { + "@opentelemetry/context-async-hooks": "1.10.1", + "@opentelemetry/core": "1.10.1", + "@opentelemetry/propagator-b3": "1.10.1", + "@opentelemetry/propagator-jaeger": "1.10.1", + "@opentelemetry/sdk-trace-base": "1.10.1", + "semver": "^7.3.5" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.10.1.tgz", + "integrity": "sha512-qiAueuCoN+1YEuHNXnsct9bkbroZBPd7QwQgd56YURG0LBRVHwE/lF6FOprfUvp1n1tu0O6+E3s6x+dmUndXFQ==", + "dev": true + }, + "@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==", + "dev": true + }, + "@pnpm/network.ca-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", + "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.10" + } + }, + "@pnpm/npm-conf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.0.tgz", + "integrity": "sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g==", + "dev": true, + "requires": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/slugify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.1.1.tgz", + "integrity": "sha512-XokPHZ+q6FtQGEi1hnfvARVJJVPEhwHQTPHPPuNHaN6zcHjzYNynhhHMopa1wNPqLAFOwpsbintunEqWecXJMg==", + "dev": true, + "requires": { + "@sindresorhus/transliterate": "^1.0.0", + "escape-string-regexp": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "@sindresorhus/transliterate": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.5.0.tgz", + "integrity": "sha512-/sfSkoNelLq5riqNRp5uBjHIKBi1MWZk9ubRT1WiBQuTfmDf7BeQkph2DJzRB83QagMPHk2VDjuvpy0VuwyzdA==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "lodash.deburr": "^4.1.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "@skn0tt/lambda-local": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@skn0tt/lambda-local/-/lambda-local-2.0.3.tgz", + "integrity": "sha512-7WZuCWSHeWC9Fh2FTT7lAT6yL5vDZUPxCZ51gIDdCc631CXmEJL/r7t2WMubP2CPuuRA+EnDSJrzKckwY4cz8g==", + "dev": true, + "requires": { + "commander": "^9.4.0", + "dotenv": "^16.0.2", + "winston": "^3.8.2" + }, + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + } + } + }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true, + "optional": true, + "peer": true + }, + "@types/node": { + "version": "16.11.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.22.tgz", + "integrity": "sha512-DYNtJWauMQ9RNpesl4aVothr97/tIJM8HbyOXJ0AYT1Z2bEjLHyfjOBPAQQVMLf8h3kSShYfNk8Wnto8B2zHUA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true, + "optional": true, + "peer": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true, + "optional": true, + "peer": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@vercel/nft": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.22.1.tgz", + "integrity": "sha512-lYYZIoxRurqDOSoVIdBicGnpUIpfyaS5qVjdPq+EfI285WqtZK3NK/dyCkiyBul+X2U2OEhRyeMdXPCHGJbohw==", + "dev": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.5", + "acorn": "^8.6.0", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.2", + "node-gyp-build": "^4.2.2", + "resolve-from": "^5.0.0", + "rollup-pluginutils": "^2.8.2" + } + }, + "@xhmikosr/archive-type": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-6.0.1.tgz", + "integrity": "sha512-PB3NeJL8xARZt52yDBupK0dNPn8uIVQDe15qNehUpoeeLWCZyAOam4vGXnoZGz2N9D1VXtjievJuCsXam2TmbQ==", + "dev": true, + "requires": { + "file-type": "^18.5.0" + } + }, + "@xhmikosr/decompress": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-9.0.1.tgz", + "integrity": "sha512-9Lvlt6Qdpo9SaRQyRIXCo3lgU++eMZ68lzgjcTwtuKDrlwT635+5zsHZ1yrSx/Blc5IDuVLlPkBPj5CZkx+2+Q==", + "dev": true, + "requires": { + "@xhmikosr/decompress-tar": "^7.0.0", + "@xhmikosr/decompress-tarbz2": "^7.0.0", + "@xhmikosr/decompress-targz": "^7.0.0", + "@xhmikosr/decompress-unzip": "^6.0.0", + "graceful-fs": "^4.2.11", + "make-dir": "^4.0.0", + "strip-dirs": "^3.0.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + } + } + }, + "@xhmikosr/decompress-tar": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-7.0.0.tgz", + "integrity": "sha512-kyWf2hybtQVbWtB+FdRyOT+jyR5jxCNZPLqvQGB7djZj75lrpLUPEmRbyo86AtJ5OEtivpYaNWjCkqSJ8xtRWw==", + "dev": true, + "requires": { + "file-type": "^18.5.0", + "is-stream": "^3.0.0", + "tar-stream": "^3.1.4" + }, + "dependencies": { + "tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + } + } + }, + "@xhmikosr/decompress-tarbz2": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-7.0.0.tgz", + "integrity": "sha512-3QnjipYkRgh3Dee1MWDgKmANWxOQBVN4e1IwiGNe2fHYfMYTeSkVvWREt87UIoSucKUh3E95v8uGFttgTknZcA==", + "dev": true, + "requires": { + "@xhmikosr/decompress-tar": "^7.0.0", + "file-type": "^18.5.0", + "is-stream": "^3.0.0", + "seek-bzip": "^1.0.6", + "unbzip2-stream": "^1.4.3" + } + }, + "@xhmikosr/decompress-targz": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-7.0.0.tgz", + "integrity": "sha512-7BNHJl92g9OLhw89zqcFS67V1LAtm4Ex02j6OiQzuE8P7Yy9lQcyBuEL3x6v436grLdL+BcFjgbmhWxnem4GHw==", + "dev": true, + "requires": { + "@xhmikosr/decompress-tar": "^7.0.0", + "file-type": "^18.5.0", + "is-stream": "^3.0.0" + } + }, + "@xhmikosr/decompress-unzip": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-6.0.0.tgz", + "integrity": "sha512-R1HAkjXLS7RAL74YFLxYY9zYflCcYGssld9KKFDu87PnJ4h4btdhzXfSC8J5i5A2njH3oYIoCzx03RIGTH07Sg==", + "dev": true, + "requires": { + "file-type": "^18.5.0", + "get-stream": "^6.0.1", + "yauzl": "^2.10.0" + } + }, + "@xhmikosr/downloader": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-13.0.1.tgz", + "integrity": "sha512-mBvWew1kZJHfNQVVfVllMjUDwCGN9apPa0t4/z1zaUJ9MzpXjRL3w8fsfJKB8gHN/h4rik9HneKfDbh2fErN+w==", + "dev": true, + "requires": { + "@xhmikosr/archive-type": "^6.0.1", + "@xhmikosr/decompress": "^9.0.1", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^18.5.0", + "filenamify": "^5.1.1", + "get-stream": "^6.0.1", + "got": "^12.6.1", + "merge-options": "^3.0.4", + "p-event": "^5.0.1" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "dev": true + }, + "filenamify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", + "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "dev": true, + "requires": { + "filename-reserved-regex": "^3.0.0", + "strip-outer": "^2.0.0", + "trim-repeated": "^2.0.0" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "requires": { + "@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" + } + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "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==", + "dev": true + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "strip-outer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", + "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", + "dev": true + }, + "trim-repeated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", + "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0" + } + } + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true + } + } + }, + "all-node-versions": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/all-node-versions/-/all-node-versions-11.3.0.tgz", + "integrity": "sha512-psMkc5s3qpr+QMfires9bC4azRYciPWql1wqZKMsYRh1731qefQDH2X4+O19xSBX6u0Ra/8Y5diG6y/fEmqKsw==", + "dev": true, + "requires": { + "fetch-node-website": "^7.3.0", + "filter-obj": "^5.1.0", + "get-stream": "^6.0.0", + "global-cache-dir": "^4.3.1", + "is-plain-obj": "^4.1.0", + "path-exists": "^5.0.0", + "semver": "^7.3.7", + "write-file-atomic": "^4.0.1" + }, + "dependencies": { + "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==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-color": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz", + "integrity": "sha512-bF6xLaZBLpOQzgYUtYEhJx090nPSZk1BQ/q2oyBK9aMMcJHzx9uXGCjI2Y+LebsN4Jwoykr0V9whbPiogdyHoQ==", + "dev": true + }, + "ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "requires": { + "type-fest": "^3.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dev": true, + "requires": { + "entities": "^2.2.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "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==", + "dev": true + }, + "archiver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, + "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==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true + }, + "ascii-table": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ascii-table/-/ascii-table-0.0.9.tgz", + "integrity": "sha1-BqZgTWpV1L9BqaR9mHLXp42jHnM=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-module-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-5.0.0.tgz", + "integrity": "sha512-JvqziE0Wc0rXQfma0HZC/aY7URXHFuZV84fJRtP8u+lhp0JYCNd5wJzVXP45t0PH0Mej3ynlzvdyITYIu0G4LQ==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true + }, + "avvio": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", + "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1" + } + }, + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "dev": true, + "requires": { + "precond": "0.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "better-ajv-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz", + "integrity": "sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@humanwhocodes/momoa": "^2.0.2", + "chalk": "^4.1.2", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0 < 4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "requires": { + "open": "^8.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", + "dev": true + }, + "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==", + "dev": true + }, + "bufrw": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bufrw/-/bufrw-1.3.0.tgz", + "integrity": "sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ==", + "dev": true, + "requires": { + "ansi-color": "^0.2.1", + "error": "^7.0.0", + "hexer": "^1.5.0", + "xtend": "^4.0.0" + } + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "builtins": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.0.tgz", + "integrity": "sha512-aizhtbxgT1Udg0Fj6GssXshAVK+nxbtCV+1OtTrMNy67jffDFBY6CUBAkhO4owbleAx6fdbnWdpsmmcXydbzNw==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-deep": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-3.4.0.tgz", + "integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==", + "dev": true, + "requires": { + "lodash.isempty": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.transform": "^4.6.0" + } + }, + "clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "requires": { + "escape-string-regexp": "5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "requires": { + "string-width": "^4.2.3" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-string": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", + "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "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==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "colors-option": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/colors-option/-/colors-option-3.0.0.tgz", + "integrity": "sha512-DP3FpjsiDDvnQC1OJBsdOJZPuy7r0o6sepY2T5M3L/d2nrE23O/ErFkEqyY3ngVL1ZhTj/H0pCMNObZGkEOaaQ==", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "filter-obj": "^3.0.0", + "is-plain-obj": "^4.0.0", + "jest-validate": "^27.3.1" + }, + "dependencies": { + "filter-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-3.0.0.tgz", + "integrity": "sha512-oQZM+QmVni8MsYzcq9lgTHD/qeLqaG8XaOPOW7dzuSafVxSUlH1+1ZDefj2OD9f2XsmG5lFl2Euc9NI4jgwFWg==", + "dev": true + } + } + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "requires": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "requires": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + } + } + }, + "configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-template-dir": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/copy-template-dir/-/copy-template-dir-1.4.0.tgz", + "integrity": "sha512-xkXSJhvKz4MfLbVkZ7GyCaFo4ciB3uKI/HHzkGwj1eyTH5+7RTFxW5CE0irWAZgV5oFcO9hd6+NVXAtY9hlo7Q==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "graceful-fs": "^4.1.3", + "maxstache": "^1.0.0", + "maxstache-stream": "^1.0.0", + "mkdirp": "^0.5.1", + "noop2": "^2.0.0", + "pump": "^1.0.0", + "readdirp": "^2.0.0", + "run-parallel": "^1.1.4" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cp-file": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz", + "integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.10", + "nested-error-stacks": "^2.1.1", + "p-event": "^5.0.1" + } + }, + "cpy": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-9.0.1.tgz", + "integrity": "sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==", + "dev": true, + "requires": { + "arrify": "^3.0.0", + "cp-file": "^9.1.0", + "globby": "^13.1.1", + "junk": "^4.0.0", + "micromatch": "^4.0.4", + "nested-error-stacks": "^2.1.0", + "p-filter": "^3.0.0", + "p-map": "^5.3.0" + }, + "dependencies": { + "cp-file": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-9.1.0.tgz", + "integrity": "sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" + } + }, + "globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "requires": { + "p-timeout": "^3.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "crc-32": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", + "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", + "dev": true, + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.3.1" + } + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cron-parser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.8.1.tgz", + "integrity": "sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==", + "dev": true, + "requires": { + "luxon": "^3.2.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "dev": true + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "requires": { + "time-zone": "^1.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decache": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz", + "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==", + "dev": true, + "requires": { + "callsite": "^1.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true + }, + "detective-amd": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-5.0.1.tgz", + "integrity": "sha512-e7n0E0Wte78U9lcpl3hsTh1ZJ+zp/rgEbdbzGLgTowSbbSemuHnM8olp4KHMF1eCaurrCE50IU9VkoV13ezK4A==", + "dev": true, + "requires": { + "ast-module-types": "^5.0.0", + "escodegen": "^2.0.0", + "get-amd-module-type": "^5.0.0", + "node-source-walk": "^6.0.0" + } + }, + "detective-cjs": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-5.0.1.tgz", + "integrity": "sha512-6nTvAZtpomyz/2pmEmGX1sXNjaqgMplhQkskq2MLrar0ZAIkHMrDhLXkRiK2mvbu9wSWr0V5/IfiTrZqAQMrmQ==", + "dev": true, + "requires": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.0" + } + }, + "detective-es6": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-4.0.1.tgz", + "integrity": "sha512-k3Z5tB4LQ8UVHkuMrFOlvb3GgFWdJ9NqAa2YLUU/jTaWJIm+JJnEh4PsMc+6dfT223Y8ACKOaC0qcj7diIhBKw==", + "dev": true, + "requires": { + "node-source-walk": "^6.0.1" + } + }, + "detective-postcss": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-6.1.3.tgz", + "integrity": "sha512-7BRVvE5pPEvk2ukUWNQ+H2XOq43xENWbH0LcdCE14mwgTBEAMoAx+Fc1rdp76SmyZ4Sp48HlV7VedUnP6GA1Tw==", + "dev": true, + "requires": { + "is-url": "^1.2.4", + "postcss": "^8.4.23", + "postcss-values-parser": "^6.0.2" + } + }, + "detective-sass": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-5.0.3.tgz", + "integrity": "sha512-YsYT2WuA8YIafp2RVF5CEfGhhyIVdPzlwQgxSjK+TUm3JoHP+Tcorbk3SfG0cNZ7D7+cYWa0ZBcvOaR0O8+LlA==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + } + }, + "detective-scss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-4.0.3.tgz", + "integrity": "sha512-VYI6cHcD0fLokwqqPFFtDQhhSnlFWvU614J42eY6G0s8c+MBhi9QAWycLwIOGxlmD8I/XvGSOUV1kIDhJ70ZPg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + } + }, + "detective-stylus": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-4.0.0.tgz", + "integrity": "sha512-TfPotjhszKLgFBzBhTOxNHDsutIxx9GTWjrL5Wh7Qx/ydxKhwUrlSFeLIn+ZaHPF+h0siVBkAQSuy6CADyTxgQ==", + "dev": true + }, + "detective-typescript": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-11.0.1.tgz", + "integrity": "sha512-pVCuFWdEAyHI16zO3NBWSAULV8pevSkX3gwK8w3y9RrBGUrig6wDvwv6vUpnu+HfOr0MDmjMkmJGNWaTb6+HkA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "^5.59.2", + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.0", + "typescript": "^5.0.4" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dot-prop": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-7.2.0.tgz", + "integrity": "sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==", + "dev": true, + "requires": { + "type-fest": "^2.11.2" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } + } + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "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==", + "dev": true + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha512-UtVv4l5MhijsYUxPJo4390gzfZvAnTHreNnDjnTZaKIiZ/SemXxAhBkYSKtWa5RtBXbLP8tMgn/n0RUa/H7jXw==", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-module-lexer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.0.3.tgz", + "integrity": "sha512-iC67eXHToclrlVhQfpRawDiF8D8sQxNxmbqw5oebegOaJkyx/w9C/k57/5e6yJR2zIByRt9OXdqX50DV2t6ZKw==", + "dev": true + }, + "es6-promisify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", + "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + } + } + }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true + } + } + }, + "express-logging": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/express-logging/-/express-logging-1.1.1.tgz", + "integrity": "sha512-1KboYwxxCG5kwkJHR5LjFDTD1Mgl8n4PIMcCuhhd/1OqaxlC68P3QKbvvAbZVUtVgtlxEdTgSUwf6yxwzRCuuA==", + "dev": true, + "requires": { + "on-headers": "^1.0.0" + } + }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "fast-content-type-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", + "integrity": "sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==", + "dev": true + }, + "fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "dev": true + }, + "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==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-equals": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-3.0.3.tgz", + "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==", + "dev": true + }, + "fast-fifo": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz", + "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==", + "dev": true + }, + "fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "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==", + "dev": true, + "peer": true + }, + "fast-json-stringify": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", + "integrity": "sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==", + "dev": true, + "requires": { + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "rfdc": "^1.2.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true + } + } + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-querystring": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", + "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "dev": true, + "requires": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "fast-uri": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.2.0.tgz", + "integrity": "sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastify": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.17.0.tgz", + "integrity": "sha512-tzuY1tgWJo2Y6qEKwmLhFvACUmr68Io2pqP/sDKU71KRM6A6R3DrCDqLGqANbeLZcKUfdfY58ut35CGqemcTgg==", + "dev": true, + "requires": { + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.0.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.2.0", + "fast-content-type-parse": "^1.0.0", + "fast-json-stringify": "^5.7.0", + "find-my-way": "^7.6.0", + "light-my-request": "^5.6.1", + "pino": "^8.5.0", + "process-warning": "^2.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.5.0", + "semver": "^7.3.7", + "tiny-lru": "^11.0.1" + }, + "dependencies": { + "pino": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.14.1.tgz", + "integrity": "sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==", + "dev": true, + "requires": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + } + }, + "pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", + "dev": true + }, + "process-warning": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "dev": true + } + } + }, + "fastify-plugin": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.4.0.tgz", + "integrity": "sha512-ovwFQG2qNy3jcCROiWpr94Hs0le+c7N/3t7m9aVwbFhkxcR/esp2xu25dP8e617HpQdmeDv+gFX4zagdUhDByw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fdir": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.0.1.tgz", + "integrity": "sha512-bdrUUb0eYQrPRlaAtlSRoLs7sp6yKEwbMQuUgwvi/14TnaqhM/deSZUrC5ic+yjm5nEPPWE61oWpTTxQFQMmLA==", + "dev": true, + "requires": {} + }, + "fecha": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==", + "dev": true + }, + "fetch-blob": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz", + "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==", + "dev": true, + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "fetch-node-website": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fetch-node-website/-/fetch-node-website-7.3.0.tgz", + "integrity": "sha512-/wayUHbdVUWrD72aqRNNrr6+MHnCkumZgNugN0RfiWJpbNJUdAkMk4Z18MGayGZVVqYXR1RWrV+bIFEt5HuBZg==", + "dev": true, + "requires": { + "cli-progress": "^3.11.2", + "colors-option": "^4.4.0", + "figures": "^5.0.0", + "got": "^12.3.1", + "is-plain-obj": "^4.1.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "colors-option": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/colors-option/-/colors-option-4.5.0.tgz", + "integrity": "sha512-Soe5lerRg3erMRgYC0EC696/8dMCGpBzcQchFfi55Yrkja8F+P7cUt0LVTIg7u5ob5BexLZ/F1kO+ejmv+nq8w==", + "dev": true, + "requires": { + "chalk": "^5.0.1", + "is-plain-obj": "^4.1.0" + } + }, + "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==", + "dev": true + }, + "figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "requires": { + "@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" + } + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "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==", + "dev": true + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + } + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "file-type": { + "version": "18.5.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.5.0.tgz", + "integrity": "sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==", + "dev": true, + "requires": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz", + "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==", + "dev": true + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-my-way": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.6.2.tgz", + "integrity": "sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "flush-write-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-2.0.0.tgz", + "integrity": "sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, + "folder-walker": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/folder-walker/-/folder-walker-3.2.0.tgz", + "integrity": "sha512-VjAQdSLsl6AkpZNyrQJfO7BXLo4chnStqb055bumZMbRUPpVuPN3a4ktsnRCmrFZjtMlYLkyXiR5rAs4WOpC4Q==", + "dev": true, + "requires": { + "from2": "^2.1.0" + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "form-data-encoder": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.3.tgz", + "integrity": "sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ==", + "dev": true + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "from2-array": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/from2-array/-/from2-array-0.0.4.tgz", + "integrity": "sha512-0G0cAp7sYLobH7ALsr835x98PU/YeVF7wlwxdWbCUaea7wsa7lJfKZUAo6p2YZGZ8F94luCuqHZS3JtFER6uPg==", + "dev": true, + "requires": { + "from2": "^2.0.3" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "fuzzy": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", + "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==", + "dev": true + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "get-amd-module-type": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-5.0.1.tgz", + "integrity": "sha512-jb65zDeHyDjFR1loOVk0HQGM5WNwoGB8aLWy3LKCieMKol0/ProHkhO2X1JxojuN10vbz1qNn09MJ7tNp7qMzw==", + "dev": true, + "requires": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.1" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, + "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==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "gh-release-fetch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gh-release-fetch/-/gh-release-fetch-4.0.3.tgz", + "integrity": "sha512-TOiP1nwLsH5shG85Yt6v6Kjq5JU/44jXyEpbcfPgmj3C829yeXIlx9nAEwQRaxtRF3SJinn2lz7XUkfG9W/U4g==", + "dev": true, + "requires": { + "@xhmikosr/downloader": "^13.0.0", + "node-fetch": "^3.3.1", + "semver": "^7.5.3" + }, + "dependencies": { + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, + "git-repo-info": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", + "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", + "dev": true + }, + "gitconfiglocal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-2.1.0.tgz", + "integrity": "sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==", + "dev": true, + "requires": { + "ini": "^1.3.2" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + } + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "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==", + "dev": true + }, + "global-cache-dir": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global-cache-dir/-/global-cache-dir-4.4.0.tgz", + "integrity": "sha512-bk0gI6IbbphRjAaCJJn5H+T/CcEck5B3a5KBO2BXSDzjFSV+API17w8GA7YPJ6IXJiasW8M0VsEIig1PCHdfOQ==", + "dev": true, + "requires": { + "cachedir": "^2.3.0", + "path-exists": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "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" + } + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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==", + "dev": true + }, + "hasbin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", + "integrity": "sha512-CCd8e/w2w28G8DyZvKgiHnQJ/5XXDz6qiUHnthvtag/6T5acUeN5lqq+HMoBqcmgWueWDhiCplrw0Kb1zDACRg==", + "dev": true, + "requires": { + "async": "~1.5" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + } + } + }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "hexer": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz", + "integrity": "sha512-dyrPC8KzBzUJ19QTIo1gXNqIISRXQ0NwteW6OeQHRN4ZuZeHkdODfj0zHBdOlHbRY8GqbqK57C9oWSvQZizFsg==", + "dev": true, + "requires": { + "ansi-color": "^0.2.1", + "minimist": "^1.1.0", + "process": "^0.10.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "process": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz", + "integrity": "sha512-dyIett8dgGIZ/TXKUzeYExt7WA6ldDzys9vTDU/cCA9L17Ypme+KzS+NjQCjpn9xsvi/shbMC+yP/BcFMBz0NA==", + "dev": true + } + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hot-shots": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-10.0.0.tgz", + "integrity": "sha512-uy/uGpuJk7yuyiKRfZMBNkF1GAOX5O2ifO9rDCaX9jw8fu6eW9QeWC7WRPDI+O98frW1HQgV3+xwjWsZPECIzQ==", + "dev": true, + "requires": { + "unix-dgram": "2.x" + } + }, + "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==", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "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==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "inquirer-autocomplete-prompt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", + "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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==", + "dev": true + } + } + }, + "inspect-with-kind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz", + "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "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==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "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==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "dependencies": { + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + } + } + }, + "is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true + }, + "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==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-url-superb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz", + "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "iserror": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz", + "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jaeger-client": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/jaeger-client/-/jaeger-client-3.19.0.tgz", + "integrity": "sha512-M0c7cKHmdyEUtjemnJyx/y9uX16XHocL46yQvyqDlPdvAcwPDbHrIbKjQdBqtiE4apQ/9dmr+ZLJYYPGnurgpw==", + "dev": true, + "requires": { + "node-int64": "^0.4.0", + "opentracing": "^0.14.4", + "thriftrw": "^3.5.0", + "uuid": "^8.3.2", + "xorshift": "^1.1.1" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "peer": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true + }, + "jsonwebtoken": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + } + }, + "junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "dev": true + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true + }, + "keep-func-props": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/keep-func-props/-/keep-func-props-4.0.1.tgz", + "integrity": "sha512-87ftOIICfdww3SxR5P1veq3ThBNyRPG0JGL//oaR08v0k2yTicEIHd7s0GqSJfQvlb+ybC3GiDepOweo0LDhvw==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "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==", + "dev": true + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "package-json": "^8.1.0" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "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==", + "dev": true + }, + "light-my-request": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.8.0.tgz", + "integrity": "sha512-4BtD5C+VmyTpzlDPCZbsatZMJVgUIciSOwYhJDCbLffPZ35KoDkDj4zubLeHDEb35b4kkPeEv5imbh+RJxK/Pg==", + "dev": true, + "requires": { + "cookie": "^0.5.0", + "process-warning": "^2.0.0", + "set-cookie-parser": "^2.4.1" + }, + "dependencies": { + "process-warning": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", + "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + } + }, + "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==", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "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==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "log-process-errors": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/log-process-errors/-/log-process-errors-8.0.0.tgz", + "integrity": "sha512-+SNGqNC1gCMJfhwYzAHr/YgNT/ZJc+V2nCkvtPnjrENMeCe+B/jgShBW0lmWoh6uVV2edFAPc/IUOkDdsjTbTg==", + "dev": true, + "requires": { + "colors-option": "^3.0.0", + "figures": "^4.0.0", + "filter-obj": "^3.0.0", + "jest-validate": "^27.4.2", + "map-obj": "^5.0.0", + "moize": "^6.1.0", + "semver": "^7.3.5" + }, + "dependencies": { + "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==", + "dev": true + }, + "figures": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/figures/-/figures-4.0.1.tgz", + "integrity": "sha512-rElJwkA/xS04Vfg+CaZodpso7VqBknOYbzi6I76hI4X80RUjkSxO2oAyPmGbuXUppywjqndOrQDl817hDnI++w==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + } + }, + "filter-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-3.0.0.tgz", + "integrity": "sha512-oQZM+QmVni8MsYzcq9lgTHD/qeLqaG8XaOPOW7dzuSafVxSUlH1+1ZDefj2OD9f2XsmG5lFl2Euc9NI4jgwFWg==", + "dev": true + }, + "map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true + } + } + }, + "log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + } + }, + "log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "requires": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "requires": { + "type-fest": "^1.0.2" + } + }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "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==", + "dev": true + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "logform": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", + "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "luxon": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", + "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", + "dev": true + }, + "macos-release": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.0.1.tgz", + "integrity": "sha512-3l6OrhdDg2H2SigtuN3jBh+5dRJRWxNKuJTPBbGeNJTsmt/pj9PO25wYaNb05NuNmAsl435j4rDP6rgNXz7s7g==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "maxstache": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/maxstache/-/maxstache-1.0.7.tgz", + "integrity": "sha1-IjHVGAung9Xs/DHEX+2seuQnaYQ=", + "dev": true + }, + "maxstache-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/maxstache-stream/-/maxstache-stream-1.0.4.tgz", + "integrity": "sha1-nH9cq35f3S2Q2oYUO06WMeoygEA=", + "dev": true, + "requires": { + "maxstache": "^1.0.0", + "pump": "^1.0.0", + "split2": "^1.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + }, + "split2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.1.1.tgz", + "integrity": "sha512-cfurE2q8LamExY+lJ9Ex3ZfBwqAPduzOKVscPDXNCLLMvyaeD3DTz1yk7fVIs6Chco+12XeD0BB6HEoYzPYbXA==", + "dev": true, + "requires": { + "through2": "~2.0.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "requires": { + "blueimp-md5": "^2.10.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dev": true, + "requires": { + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micro-api-client": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz", + "integrity": "sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==", + "dev": true + }, + "micro-memoize": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.0.11.tgz", + "integrity": "sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "module-definition": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-5.0.1.tgz", + "integrity": "sha512-kvw3B4G19IXk+BOXnYq/D/VeO9qfHaapMeuS7w7sNUqmGaA6hywdFHMi+VWeR9wUScXM7XjoryTffCZ5B0/8IA==", + "dev": true, + "requires": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.1" + } + }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "dev": true + }, + "moize": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.3.tgz", + "integrity": "sha512-Cn+1T5Ypieeo46fn8X98V2gHj2VSRohVPjvT8BRvNANJJC3UOeege/G84xA/3S9c5qA4p9jOdSB1jfhumwe8qw==", + "dev": true, + "requires": { + "fast-equals": "^3.0.1", + "micro-memoize": "^4.0.11" + } + }, + "move-file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/move-file/-/move-file-3.0.0.tgz", + "integrity": "sha512-v6u4XjX3MFW6Jo1V/YfbhC7eiGSgvYPJ/NM+aGtTtB9/Y6IYj7YViaHu6dkgDsZFB7MbnAoSI5+Z26XZXnP0vg==", + "dev": true, + "requires": { + "path-exists": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "multiparty": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.2.3.tgz", + "integrity": "sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==", + "dev": true, + "requires": { + "http-errors": "~1.8.1", + "safe-buffer": "5.2.1", + "uid-safe": "2.1.5" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", + "dev": true + }, + "netlify": { + "version": "13.1.10", + "resolved": "https://registry.npmjs.org/netlify/-/netlify-13.1.10.tgz", + "integrity": "sha512-ByFz8S08HWVKd9r/lkTahZX7xSq4IRyPCUvuaduI4GHyQaSWEdVNK1krC05vlhL9W0SzDn8Yjowh0Ru4PKrOYw==", + "dev": true, + "requires": { + "@netlify/open-api": "^2.19.1", + "lodash-es": "^4.17.21", + "micro-api-client": "^3.3.0", + "node-fetch": "^3.0.0", + "omit.js": "^2.0.2", + "p-wait-for": "^4.0.0", + "qs": "^6.9.6" + }, + "dependencies": { + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true + }, + "p-wait-for": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz", + "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==", + "dev": true, + "requires": { + "p-timeout": "^5.0.0" + } + } + } + }, + "netlify-headers-parser": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/netlify-headers-parser/-/netlify-headers-parser-7.1.2.tgz", + "integrity": "sha512-DfoboA8PrcLXMan3jIVyLsQtKS+nepKDx6WwZKk5EQDMr2AJoBPCtSHTOLuABzkde1UXdOITf3snmcAmzlNLqw==", + "dev": true, + "requires": { + "escape-string-regexp": "^5.0.0", + "fast-safe-stringify": "^2.0.7", + "is-plain-obj": "^4.0.0", + "map-obj": "^5.0.0", + "path-exists": "^5.0.0", + "toml": "^3.0.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "dev": true + }, + "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==", + "dev": true + } + } + }, + "netlify-redirect-parser": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/netlify-redirect-parser/-/netlify-redirect-parser-14.1.3.tgz", + "integrity": "sha512-23svKHdO2QUEJHo3knQV1EpAh8UX/+8zQmwxVMSby4/NRj5vPS+u/yKesY/uHAgcw/28HwvEUGQdbXsPPe7J/Q==", + "dev": true, + "requires": { + "fast-safe-stringify": "^2.1.1", + "filter-obj": "^5.0.0", + "is-plain-obj": "^4.0.0", + "path-exists": "^5.0.0", + "toml": "^3.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "netlify-redirector": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/netlify-redirector/-/netlify-redirector-0.4.0.tgz", + "integrity": "sha512-ssD+V9o2DD9VnilOYC+34i07IrlY8XDsh5mN+qLYA4MxCpdALKXFICcz1KzsHZabuIS5XsF1VP/HzDyx5ubJ2g==", + "dev": true + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-source-walk": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-6.0.1.tgz", + "integrity": "sha512-QUlkJYzrNewUCp4c7CCPN8Mh8c+pwNs23JsQfHKUwIkCxYa6c0AFLuUJIZxU6BdnarfytPSGKm1YMAz06hj9cw==", + "dev": true, + "requires": { + "@babel/parser": "^7.21.8" + } + }, + "node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true + }, + "node-version-alias": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/node-version-alias/-/node-version-alias-3.4.1.tgz", + "integrity": "sha512-Kf3L9spAL6lEHMPyqpwHSTNG3LPkOXBfSUnBMG/YE2TdoC8Qoqf0+qg01nr6K9MFQEcXtWUyTQzLJByRixSBsA==", + "dev": true, + "requires": { + "all-node-versions": "^11.3.0", + "filter-obj": "^5.1.0", + "is-plain-obj": "^4.1.0", + "normalize-node-version": "^12.4.0", + "path-exists": "^5.0.0", + "semver": "^7.3.8" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "noop2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/noop2/-/noop2-2.0.0.tgz", + "integrity": "sha1-S2NgFemIK1R4PAK0EvaZ2MXNCls=", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-node-version": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/normalize-node-version/-/normalize-node-version-12.4.0.tgz", + "integrity": "sha512-0oLZN5xcyKVrSHMk8/9RuNblEe7HEsXAt5Te2xmMiZD9VX7bqWYe0HMyfqSYFD3xv0949lZuXaEwjTqle1uWWQ==", + "dev": true, + "requires": { + "all-node-versions": "^11.3.0", + "filter-obj": "^5.1.0", + "semver": "^7.3.7" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + }, + "dependencies": { + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + } + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "omit.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz", + "integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==", + "dev": true + }, + "on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "requires": { + "fn.name": "1.x.x" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + } + } + }, + "opentracing": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", + "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==", + "dev": true + }, + "ora": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", + "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "os-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.0.1.tgz", + "integrity": "sha512-0EQpaHUHq7olp2/YFUr+0vZi9tMpDTblHGz+Ch5RntKxiRXOAY0JOz1UlxhSjMSksHvkm13eD6elJj3M8Ht/kw==", + "dev": true, + "requires": { + "macos-release": "^3.0.1", + "windows-release": "^5.0.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "dev": true, + "requires": { + "p-timeout": "^5.0.2" + }, + "dependencies": { + "p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true + } + } + }, + "p-every": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-every/-/p-every-2.0.0.tgz", + "integrity": "sha512-MCz9DqD5opPC48Zsd+BHm56O/HfhYIQQtupfDzhXoVgQdg/Ux4F8/JcdRuQ+arq7zD5fB6zP3axbH3d9Nr8dlw==", + "dev": true, + "requires": { + "p-map": "^2.0.0" + }, + "dependencies": { + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, + "p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", + "dev": true, + "requires": { + "p-map": "^5.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "requires": { + "aggregate-error": "^4.0.0" + }, + "dependencies": { + "aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "requires": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + } + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true + } + } + }, + "p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true + }, + "p-retry": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-5.1.1.tgz", + "integrity": "sha512-i69WkEU5ZAL8mrmdmVviWwU+DN+IUF8f4sSJThoJ3z5A7Nn5iuO5ROX3Boye0u+uYQLOSfgFl7SuFZCjlAVbQA==", + "dev": true, + "requires": { + "@types/retry": "0.12.1", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-5.0.2.tgz", + "integrity": "sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==", + "dev": true, + "requires": { + "p-timeout": "^6.0.0" + }, + "dependencies": { + "p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "dev": true + } + } + }, + "package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "dev": true, + "requires": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.12", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", + "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "requires": { + "@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" + } + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "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==", + "dev": true + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + } + } + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true + }, + "parse-gitignore": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "@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" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "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==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "requires": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + }, + "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==", + "dev": true + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-values-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz", + "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==", + "dev": true, + "requires": { + "color-name": "^1.1.4", + "is-url-superb": "^4.0.0", + "quote-unquote": "^1.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "precinct": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/precinct/-/precinct-11.0.2.tgz", + "integrity": "sha512-UuhB1q0nEFf80iMGcs7IoT0o1GnNFWT4CjZjcMsHDXAIsW/aiLovOSbeMJ2Ejg6raRsplsriZZkoBUh0h/IHlw==", + "dev": true, + "requires": { + "@dependents/detective-less": "^4.0.0", + "commander": "^10.0.1", + "detective-amd": "^5.0.1", + "detective-cjs": "^5.0.1", + "detective-es6": "^4.0.0", + "detective-postcss": "^6.1.3", + "detective-sass": "^5.0.0", + "detective-scss": "^4.0.0", + "detective-stylus": "^4.0.0", + "detective-typescript": "^11.0.1", + "module-definition": "^5.0.0", + "node-source-walk": "^6.0.1" + } + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "prettyjson": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz", + "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==", + "dev": true, + "requires": { + "colors": "1.4.0", + "minimist": "^1.2.0" + } + }, + "printj": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", + "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "protobufjs": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", + "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "ps-list": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.0.tgz", + "integrity": "sha512-NoGBqJe7Ou3kfQxEvDzDyKGAyEgwIuD3YrfXinjcCmBRv0hTld0Xb71hrXvtsNPj7HSFATfemvzB8PPJtq6Yag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dev": true, + "requires": { + "escape-goat": "^4.0.0" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, + "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==", + "dev": true + }, + "quote-unquote": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz", + "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==", + "dev": true + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "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==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "dev": true, + "requires": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "dependencies": { + "read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dev": true, + "requires": { + "readable-stream": "^3.6.0" + } + }, + "readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + } + } + }, + "regexp-tree": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", + "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "dev": true + }, + "registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "requires": { + "@pnpm/npm-conf": "^2.1.0" + } + }, + "registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "requires": { + "rc": "1.2.8" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "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==", + "dev": true + }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "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==", + "dev": true + }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true + }, + "safe-regex2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", + "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==", + "dev": true, + "requires": { + "ret": "~0.2.0" + }, + "dependencies": { + "ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "dev": true + } + } + }, + "safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "secure-json-parse": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.6.0.tgz", + "integrity": "sha512-B9osKohb6L+EZ6Kve3wHKfsAClzOC/iISA2vSuCe5Jx5NAKiwitfxx8ZKYapHXr0sYRj7UZInT7pLb3rp2Yx6A==", + "dev": true + }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "requires": { + "commander": "^2.8.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "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==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "dev": true, + "requires": { + "atomic-sleep": "^1.0.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + } + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "requires": { + "sort-keys": "^1.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "stack-generator": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", + "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "requires": { + "bl": "^5.0.0" + }, + "dependencies": { + "bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dev": true, + "requires": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "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==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + } + } + }, + "strip-ansi-control-characters": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi-control-characters/-/strip-ansi-control-characters-2.0.0.tgz", + "integrity": "sha512-Q0/k5orrVGeaOlIOUn1gybGU0IcAbgHQT1faLo5hik4DqClKVSaka5xOhNNoRgtfztHVxCYxi7j71mrWom0bIw==", + "dev": true + }, + "strip-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-3.0.0.tgz", + "integrity": "sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==", + "dev": true, + "requires": { + "inspect-with-kind": "^1.0.5", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + } + }, + "supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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==", + "dev": true + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tabtab": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tabtab/-/tabtab-3.0.2.tgz", + "integrity": "sha512-jANKmUe0sIQc/zTALTBy186PoM/k6aPrh3A7p6AaAfF6WPSbTx1JYeGIGH162btpH+mmVEXln+UxwViZHO2Jhg==", + "dev": true, + "requires": { + "debug": "^4.0.1", + "es6-promisify": "^6.0.0", + "inquirer": "^6.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "untildify": "^3.0.3" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true + }, + "tempy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", + "dev": true, + "requires": { + "is-stream": "^3.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } + } + }, + "terminal-link": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-3.0.0.tgz", + "integrity": "sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==", + "dev": true, + "requires": { + "ansi-escapes": "^5.0.0", + "supports-hyperlinks": "^2.2.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "requires": { + "type-fest": "^1.0.2" + } + }, + "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==", + "dev": true + } + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dev": true, + "requires": { + "real-require": "^0.2.0" + } + }, + "thriftrw": { + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/thriftrw/-/thriftrw-3.11.4.tgz", + "integrity": "sha512-UcuBd3eanB3T10nXWRRMwfwoaC6VMk7qe3/5YIWP2Jtw+EbHqJ0p1/K3x8ixiR5dozKSSfcg1W+0e33G1Di3XA==", + "dev": true, + "requires": { + "bufrw": "^1.2.1", + "error": "7.0.2", + "long": "^2.4.0" + }, + "dependencies": { + "long": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", + "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "through2-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-map/-/through2-map-3.0.0.tgz", + "integrity": "sha512-Ms68QPbSJKjRYY7fmqZHB0VGt+vD0/tjmDHUWgxltjifCof6hZWWeQAEi27Wjbs7jyNlIIyerQw/TVj7gHkd/Q==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true + }, + "tiny-lru": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.0.1.tgz", + "integrity": "sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "requires": { + "tmp": "^0.2.0" + }, + "dependencies": { + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + } + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-3.0.0.tgz", + "integrity": "sha512-vD2LytT6DxPynBa1xbMtswY9gGqj27wNbh2uvI5OhBe+mrGLurRWRQZyQn3812sqlQRtUJwaKVshG+PoGwbPDQ==", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, + "toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, + "tomlify-j0.4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz", + "integrity": "sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-fest": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.0.tgz", + "integrity": "sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, + "ulid": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", + "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", + "dev": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "requires": { + "crypto-random-string": "^4.0.0" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "unix-dgram": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/unix-dgram/-/unix-dgram-2.0.6.tgz", + "integrity": "sha512-AURroAsb73BZ6CdAyMrTk/hYKNj3DuYYEuOaB8bYMOHGKupRNScw90Q5C71tWJc3uE7dIeXRyuwN0xLLq3vDTg==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.16.0" + } + }, + "unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "requires": { + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true + }, + "update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, + "requires": { + "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" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "wait-port": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.0.4.tgz", + "integrity": "sha512-w8Ftna3h6XSFWWc2JC5gZEgp64nz8bnaTp5cvzbJSZ53j+omktWTDdwXxEF0jM8YveviLgFWvNGrSvRHnkyHyw==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "web-streams-polyfill": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", + "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", + "dev": true + }, + "well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "string-width": "^5.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "windows-release": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.0.1.tgz", + "integrity": "sha512-y1xFdFvdMiDXI3xiOhMbJwt1Y7dUxidha0CWPs1NgjZIjZANTcX7+7bMqNjuezhzb8s5JGEiBAbQjQQYYy7ulw==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "execa": "^5.1.1" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", "dev": true, "requires": { - "color-name": "1.1.3" + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + } } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true + } + } + }, + "xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true + }, + "xorshift": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/xorshift/-/xorshift-1.2.0.tgz", + "integrity": "sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" } } } }, - "lunr-languages": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", - "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1950,12 +31780,39 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, + "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==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -2002,6 +31859,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -2020,6 +31883,21 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, "postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -2136,12 +32014,24 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "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==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "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==", + "dev": true + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -2151,6 +32041,111 @@ "pify": "^2.3.0" } }, + "read-pkg": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "read-pkg-up": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", + "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "dev": true, + "requires": { + "find-up": "^6.3.0", + "read-pkg": "^7.1.0", + "type-fest": "^2.5.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "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==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2172,12 +32167,27 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "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==", + "dev": true + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2193,6 +32203,30 @@ "queue-microtask": "^1.2.2" } }, + "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==", + "dev": true + }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "requires": { + "commander": "^2.8.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -2211,12 +32245,61 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2237,6 +32320,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "^4.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2246,6 +32338,59 @@ "has-flag": "^4.0.0" } }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true + }, + "tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "requires": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "dependencies": { + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2255,12 +32400,53 @@ "is-number": "^7.0.0" } }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "requires": { + "crypto-random-string": "^4.0.0" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -2278,12 +32464,30 @@ "strip-ansi": "^6.0.0" } }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -2312,6 +32516,22 @@ "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true } } } diff --git a/package.json b/package.json index eeb8afe194..67652f00c2 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Hugo theme for technical documentation.", "main": "none.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "serve": "netlify dev -c \"hugo serve --minify -DFE -w\"" }, "repository": { "type": "git", @@ -21,6 +22,8 @@ }, "devDependencies": { "autoprefixer": "^9.8.6", + "hugo-extended": "^0.115.2", + "netlify-cli": "^15.9.0", "postcss-cli": "^7.1.2" } } From 279b9592cf0e4eb09dd7d8af7fb64848d1fa82c1 Mon Sep 17 00:00:00 2001 From: Flavien Hardy Date: Wed, 19 Jul 2023 12:11:56 -0400 Subject: [PATCH 186/295] fix sestegra comments Signed-off-by: Flavien Hardy --- content/fr/devops.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/devops.md b/content/fr/devops.md index f36ff3c32d..129392f5fa 100644 --- a/content/fr/devops.md +++ b/content/fr/devops.md @@ -9,7 +9,7 @@ tags: ["methodology", "", ""] ## Ce que c'est Le DevOps est une méthodologie dans laquelle une équipe gère le processus complet du développement d'une application jusqu'aux opérations en production, d'où le terme DevOps. -Ceci va au delà de l'implémentation de technologies et demande un changement complet dans la culture et les processus. +Ceci va au-delà de l'implémentation de technologies et demande un changement complet dans la culture et les processus. Le DevOps fait appel à un groupe d'ingénieurs travaillant sur des petits composants (en opposition à une fonctionnalité complète), permettant ainsi de réduire les actions de passations – une source d'erreurs commune. ## Problème auquel il répond @@ -30,5 +30,5 @@ Le DevOps vient chambouler cette approche. Avoir une seule équipe en charge du cycle de vie d'une application permet de minimiser les passations, réduisant ainsi les risques lors des déploiements en production, améliorant -la qualité du code car les équipes sont également responsable de sa mise en production et augmentant -la satisfaction des employés grâce au gain d'autonomie et de responsabilité. \ No newline at end of file +la qualité du code, car les équipes sont également responsables de sa mise en production et augmentant +la satisfaction des employés grâce au gain d'autonomie et de responsabilité. From b0ba3381e07b39628d8a5b946e4826dc39127134 Mon Sep 17 00:00:00 2001 From: Guillaume Bernard Date: Wed, 19 Jul 2023 18:26:02 +0200 Subject: [PATCH 187/295] [fr] harmonize "Cloud Native" capitalization Signed-off-by: Guillaume Bernard --- content/fr/_index.md | 14 +++++++------- content/fr/bare-metal-machine.md | 2 +- content/fr/cloud-native-apps.md | 2 +- content/fr/cloud-native-tech.md | 6 +++--- content/fr/cluster.md | 2 +- content/fr/contribute/_index.md | 4 ++-- content/fr/distributed-apps.md | 2 +- content/fr/infrastructure-as-code.md | 2 +- content/fr/microservices-architecture.md | 2 +- content/fr/style-guide/_index.md | 2 +- content/fr/virtualization.md | 2 +- 11 files changed, 20 insertions(+), 20 deletions(-) diff --git a/content/fr/_index.md b/content/fr/_index.md index 3d70eda4b2..811e42474b 100755 --- a/content/fr/_index.md +++ b/content/fr/_index.md @@ -1,19 +1,19 @@ --- -title: "Glossaire Cloud Natif" +title: "Glossaire Cloud Native" --- -# Glossaire Cloud Natif +# Glossaire Cloud Native -Le Glossaire Cloud Natif est un project dirigé par le Comité Marketing de la CNCF (Business Value Subcommittee, BVS). -Son rôle est d'expliquer les concepts cloud natifs en termes simples et clairs, et sans nécessité de connaissances techniques. +Le Glossaire Cloud Native est un project dirigé par le Comité Marketing de la CNCF (Business Value Subcommittee, BVS). +Son rôle est d'expliquer les concepts Cloud Natives en termes simples et clairs, et sans nécessité de connaissances techniques.

Une femme et deux hommes en présentation technique

## Contribution -Toute personne est invitée à suggérer des changements, des ajouts, ou des amélioration au Glossaire Cloud Natif. +Toute personne est invitée à suggérer des changements, des ajouts, ou des amélioration au Glossaire Cloud Native. Nous employons un processus dirigé par la communauté, et gouverné par la CNCF, afin de développer et d'améliorer ce lexique partagé. -Ce Glossaire fournit un plateforme indépendante de toute solution propriétaire, afin d'organiser un vocabulaire partagé par tous, le tout centré autour des technologies cloud natives. +Ce Glossaire fournit un plateforme indépendante de toute solution propriétaire, afin d'organiser un vocabulaire partagé par tous, le tout centré autour des technologies Cloud Natives. Les contributions sont les bienvenues pour tous les participants adhérant au principe du projet, ainsi qu'à sa charte. Toute personne souhaitant faire une contribution peut soumettre une Issue ou ouvrir une Pull Request sur le dépôt GitHub. @@ -22,7 +22,7 @@ Il existe également un canal [#glossary-localizations](https://cloud-native.sla ## Remerciements -Le Glossaire Cloud Natif a été initié par le Comité Marketing de la CNCF (Business Value Subcommittee) et inclue les contributions de +Le Glossaire Cloud Native a été initié par le Comité Marketing de la CNCF (Business Value Subcommittee) et inclue les contributions de [Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), [Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/), [Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk), diff --git a/content/fr/bare-metal-machine.md b/content/fr/bare-metal-machine.md index 7c592f033c..557fd50bde 100644 --- a/content/fr/bare-metal-machine.md +++ b/content/fr/bare-metal-machine.md @@ -25,7 +25,7 @@ vous fournissez théoriquement les meilleures performances possibles au système Si vous devez exécuter une charge de travail qui doit avoir un accès extrêmement rapide aux ressources matérielles, une machine physique peut être la solution adéquate. -Dans le contexte des [applications cloud natives](/cloud-native-apps/), +Dans le contexte des [applications Cloud Natives](/cloud-native-apps/), vous envisagez généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. Vous pouvez utiliser pour cela la [mise à l'échelle horizontale](/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). Mais, certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/vertical-scaling/) (ajouter plus de puissance à une machine existante) diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index ceeb2d56f6..03d142f9da 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -21,7 +21,7 @@ Par exemple, les applications nécessitant une intervention manuelle pour démar ## Quel en est l'utilité -Bien qu'il n'y ait pas de solution miracle pour qu'une application soit définie comme cloud native, les applications +Bien qu'il n'y ait pas de solution miracle pour qu'une application soit définie comme Cloud Native, les applications Cloud Natives présentent des points en commun. Les applications Cloud Natives sont résilientes, elles sont gérables et tirent profit de l'ensemble des services Cloud où elles sont déployées. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 652a8e75c4..e9d3b2d615 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -7,8 +7,8 @@ tags: ["fundamental", "", ""] ## Ce que c'est -Les technologies Cloud Natives, aussi référencées comme la pile des technologies cloud natives, sont les technologies -utilisées pour construire des [applications cloud natives](/cloud-native-apps/). +Les technologies Cloud Natives, aussi référencées comme la pile des technologies Cloud Natives, sont les technologies +utilisées pour construire des [applications Cloud Natives](/cloud-native-apps/). Ces technologies permettent aux organisations de développer des applications capables de se mettre à l'échelle dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides. Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). @@ -27,5 +27,5 @@ capable de se réparer toute seule. Il adresse également l'utilisation ineffica ## Quel en est l'utilité Bien que chaque technologie réponde à un problème très spécifique, -en tant que groupe, les technologies cloud natives permettent de créer des systèmes faiblement couplés qui sont résilients, gérables et observables.. +en tant que groupe, les technologies Cloud Natives permettent de créer des systèmes faiblement couplés qui sont résilients, gérables et observables.. Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. diff --git a/content/fr/cluster.md b/content/fr/cluster.md index a03fc70eeb..f81cb4e4f5 100644 --- a/content/fr/cluster.md +++ b/content/fr/cluster.md @@ -25,6 +25,6 @@ Les applications réparties en cluster s'exécutent sur plusieurs machines, éli Cependant, fabriquer des systèmes distribués est vraiment difficile. Dans les fait, c'est une discipline informatique à part entière. Le besoin en systèmes globaux et les années d'essais et d'erreurs ont mené au développement d'un nouveau genre de pile technique: -[technologies cloud natives](/cloud-native-tech/). +[technologies Cloud Natives](/cloud-native-tech/). Ces nouvelles technologies sont les blocs de construction qui facilitent l'exploitation et la création de systèmes distribués. diff --git a/content/fr/contribute/_index.md b/content/fr/contribute/_index.md index 6b7d868fa3..90093a50a3 100644 --- a/content/fr/contribute/_index.md +++ b/content/fr/contribute/_index.md @@ -54,8 +54,8 @@ Pour les étapes suivantes, merci de prendre connaissance de la section [Propose Vous pouvez proposer un nouveau terme à la communauté ou créer vous-même la définition de ce terme. Dans les deux cas, vous commencerez par créer une issue. -Il est à noter que les termes doivent être en accord avec le [CNCF's cloud native definition](https://github.com/cncf/toc/blob/main/DEFINITION.md). -Les seules exceptions sont les termes fondamentaux nécessaires pour comprendre les concepts cloud natif. +Il est à noter que les termes doivent être en accord avec le [CNCF's Cloud Native definition](https://github.com/cncf/toc/blob/main/DEFINITION.md). +Les seules exceptions sont les termes fondamentaux nécessaires pour comprendre les concepts Cloud Native. Ci-après, un guide étape par étape pour ceux et celles qui ne sont pas familier avec Github **Si vous avez un compte GitHub Pro**, merci de vérifier que vous utilisez nos modèles d'issue, diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md index 7a7cebf7fd..196a97f2ea 100644 --- a/content/fr/distributed-apps.md +++ b/content/fr/distributed-apps.md @@ -10,7 +10,7 @@ tags: ["architecture", "", ""] Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes et plus petites. Les applications distribuées sont généralement composées de [microservices](/microservices/) individuels qui s'occupent de différentes problématiques au sein d'une application plus large. -Dans un environnement cloud native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). +Dans un environnement Cloud Native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). ## Problème auquel il répond diff --git a/content/fr/infrastructure-as-code.md b/content/fr/infrastructure-as-code.md index de3eb2eb75..b6a123c358 100644 --- a/content/fr/infrastructure-as-code.md +++ b/content/fr/infrastructure-as-code.md @@ -15,7 +15,7 @@ habituellement au travers de scripts ou autres outils de configuration. Construire des applications d'une manière Cloud Native nécessite des infrastructures qui peuvent être duplicables et jettables. Il est également nécessaire de pouvoir [mettre à l'échelle](/scalability/) à la demande de manière automatique et répétable, potentiellement sans intervention humaine. -Le provisionnement manuel ne pouvant pas répondre aux besoins de réactivité et de passage à l'échelle des [applications cloud natives](/cloud-native-apps/). +Le provisionnement manuel ne pouvant pas répondre aux besoins de réactivité et de passage à l'échelle des [applications Cloud Natives](/cloud-native-apps/). Les changements manuels sur l'infrastructure ne sont pas reproductibles, affichent rapidement des problèmes de mise à l'échelle, et amènent des erreurs de configuration. ## Quel en est l'utilité diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index cd24b28b5f..ad4ad11727 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -33,4 +33,4 @@ L'architecture en microservices est une réponse à ces défis. La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une application plus grande sans avoir d'impact involontairement négatif sur le reste de l'application. Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcoûts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. -De nombreuses [technologies cloud native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. +De nombreuses [technologies Cloud Native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. diff --git a/content/fr/style-guide/_index.md b/content/fr/style-guide/_index.md index b12d88e9a7..45153161b5 100644 --- a/content/fr/style-guide/_index.md +++ b/content/fr/style-guide/_index.md @@ -9,7 +9,7 @@ menu: Ce guide de rédaction aide à comprendre la cible du Glossaire, la structure des définitions, le niveau requis de détails, ainsi que la manière de maintenir un style constant. -Le Glossaire Cloud Natif suit le guide de [rédaction de référence](https://github.com/cncf/foundation/blob/master/style-guide.md) du dépôt de la CNCF. +Le Glossaire Cloud Native suit le guide de [rédaction de référence](https://github.com/cncf/foundation/blob/master/style-guide.md) du dépôt de la CNCF. De plus, les règles suivantes sont appliquées: diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index 6dd5fb7348..89cd37284b 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -7,7 +7,7 @@ tags: ["fundamental", "infrastructure", "methodology"] ## Ce que c'est -La virtualisation, dans un cadre cloud native, +La virtualisation, dans un cadre Cloud Native, est l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont appelées machines virtuelles ou VMs. From d2dba3fe0333035356c1e31178f4f413a8b86de5 Mon Sep 17 00:00:00 2001 From: Guillaume BERNARD Date: Wed, 19 Jul 2023 18:31:09 +0200 Subject: [PATCH 188/295] Update content/fr/microservices-architecture.md Co-authored-by: fydrah Signed-off-by: Guillaume BERNARD --- content/fr/microservices-architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index ad4ad11727..1fe5151e01 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -33,4 +33,4 @@ L'architecture en microservices est une réponse à ces défis. La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une application plus grande sans avoir d'impact involontairement négatif sur le reste de l'application. Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcoûts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. -De nombreuses [technologies Cloud Native](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. +De nombreuses [technologies Cloud Natives](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. From a42311b407d9357adbcd7ba72655e307ca2d0ff4 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 26 Jul 2023 11:39:49 -0400 Subject: [PATCH 189/295] chore: Fix whitespace and a few trivial typos (#2250) * chore: Fix whitespace issues Signed-off-by: Adam Harvey * fix: Typo with double word Signed-off-by: Adam Harvey * chore: Typo in comment Signed-off-by: Adam Harvey --------- Signed-off-by: Adam Harvey --- CONTRIBUTING.md | 2 +- LOCALIZATION.md | 1 + README.md | 2 +- assets/json/offline-search-index.json | 2 +- content/en/container-orchestration.md | 3 +++ content/en/edge-computing.md | 2 -- spin-new-glossary.md | 3 +-- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79714f4079..c4b43e1243 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,6 +9,6 @@ Below are the guidelines for how to contribute to the code that runs the CNCF Gl ## How can I contribute? 1. **Report a bug**. If you see a technical issue with the CNCF Glossary site or something that doesn't look right, search [the existing issues](https://github.com/cncf/glossary/issues) to see if it has been reported already. If not, please [create a new issue](https://github.com/cncf/glossary/issues/new) describing the bug. Please provide all steps necessary to reproduce the bug and screenshots if applicable. -2. **Fix a bug**. Find [an issue](https://github.com/cncf/glossary/issues) you want to fix and submit a PR for approval. +2. **Fix a bug**. Find [an issue](https://github.com/cncf/glossary/issues) you want to fix and submit a PR for approval. Read [more about the code that runs the Glossary site](https://github.com/cncf/glossary/blob/main/spin-new-glossary.md) and [how to set up your own local development instance](https://github.com/cncf/glossary#setting-up-a-local-instance). To connect with our community and ask questions, please join [the #glossary channel on the CNCF slack](https://cloud-native.slack.com/archives/C02TX20MQBB). diff --git a/LOCALIZATION.md b/LOCALIZATION.md index ecce448cbb..5646f8ce30 100644 --- a/LOCALIZATION.md +++ b/LOCALIZATION.md @@ -138,6 +138,7 @@ If the team seems inactive (no response after several days), reach out to @Seokh --- # Localization team guidelines + Every localization team may have its own process of working on localizing terms. However, here are some guidelines that are common for all localization teams: 1. Only terms with the status `Completed` in the English version are ready to be localized. diff --git a/README.md b/README.md index a4a5991ff6..161a55fb27 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Committee (Business Value Subcommittee) and includes contributions from [Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), [Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/), [Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk), [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), [Katelin Ramer](https://www.linkedin.com/in/katelinramer/) and [Mike Foster](https://www.linkedin.com/in/mfosterche/?originalSubdomain=ca). -## License +## License All code contributions are under the Apache 2.0 license. Documentation is distributed under CC BY 4.0. diff --git a/assets/json/offline-search-index.json b/assets/json/offline-search-index.json index 061c4083c5..0423be6205 100644 --- a/assets/json/offline-search-index.json +++ b/assets/json/offline-search-index.json @@ -1,7 +1,7 @@ {{- $.Scratch.Add "offline-search-index" slice -}} {{- range where .Site.AllPages ".Params.exclude_search" "!=" true -}} {{/* We have to apply `htmlUnescape` again after `truncate` because `truncate` applies `html.EscapeString` if the argument is not HTML. */}} -{{/* Indvidual taxonomies can be added in the next line by add '"taxonomy-name" (.Params.taxonomy-name | default "")' to the dict (as seen for categories and tags). */}} +{{/* Individual taxonomies can be added in the next line by add '"taxonomy-name" (.Params.taxonomy-name | default "")' to the dict (as seen for categories and tags). */}} {{- $.Scratch.Add "offline-search-index" (dict "ref" .RelPermalink "title" .Title "status" (.Params.status | default "") "body" (.Plain | htmlUnescape) "excerpt" ((.Description | default .Plain) | htmlUnescape | truncate (.Site.Params.offlineSearchSummaryLength | default 70) | htmlUnescape)) -}} {{- end -}} {{- $.Scratch.Get "offline-search-index" | jsonify -}} diff --git a/content/en/container-orchestration.md b/content/en/container-orchestration.md index c1680f5f9a..c0fe7989f9 100644 --- a/content/en/container-orchestration.md +++ b/content/en/container-orchestration.md @@ -5,16 +5,19 @@ category: Concept --- ## What it is + [Container](/container/) orchestration refers to managing and automating the lifecycle of containerized applications in dynamic environments. It's executed through a container orchestrator (in most cases, [Kubernetes](/kubernetes)), which enables deployments, (auto)scaling, auto-healing, and monitoring. Orchestration is a metaphor: The orchestration tool conducts containers like a music conductor, ensuring every container (or musician) does what it should. ## Problem it addresses + Managing [microservices](/microservices), security, and network communication at scale — and [distributed systems](/distributed-systems) in general — is hard, if not impossible, to manage manually. Container orchestration allows users to automate all these management tasks. ## How it helps + Container orchestration tools allow users to determine a system's state. First, they declare how it should look like (e.g., x containers, y pods, etc.). The orchestration tool will then automatically monitor the infrastructure and correct it if its state deviates from the declared one (e.g., spin up a new container if one crashes). diff --git a/content/en/edge-computing.md b/content/en/edge-computing.md index d011297a88..977a615242 100644 --- a/content/en/edge-computing.md +++ b/content/en/edge-computing.md @@ -27,5 +27,3 @@ As described above, for edge devices to be useful, they must do at least part of This is achieved by shifting some storage and processing resources from the data center to where the data is generated: the edge device. Processed and unprocessed data is subsequently sent to the data center for further processing and storage. In short, efficiency and speed are the primary drivers of edge computing. - - diff --git a/spin-new-glossary.md b/spin-new-glossary.md index ebcaba6715..2460b04f23 100644 --- a/spin-new-glossary.md +++ b/spin-new-glossary.md @@ -31,7 +31,7 @@ Complete your local dev setup using [these instructions](https://github.com/cncf Edit `config.toml` to set title, Google Analytics, languages, copyright, social image, social links, and various other settings. -Replace favicons in in the `static/favicons` directory with your own. +Replace favicons in the `static/favicons` directory with your own. Replace `assets/icons/logo.svg` with your own logo. @@ -43,7 +43,6 @@ Edit various static copy in the `layouts` folder as needed. Replace all content in the `content/en` folder with your own glossary terms. Create a language folder for each of the translation languages you will support. Note that terms will only be listed on the site when `status: Completed` in the header of the term file. - ## Feedback buttons configuration You can configure the feedback buttons at the bottom of each page to post to your Google Analytics account. See [the instructions here](https://www.docsy.dev/docs/adding-content/feedback/#user-feedback). From 7baff6dfc09775dbae116425f4724b5f07f0760b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Wed, 26 Jul 2023 20:46:25 +0200 Subject: [PATCH 190/295] [fr] Update i18n/fr.toml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- i18n/fr.toml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/i18n/fr.toml b/i18n/fr.toml index 8432b7e7e0..9a82166697 100644 --- a/i18n/fr.toml +++ b/i18n/fr.toml @@ -18,11 +18,23 @@ other = "Rechercher sur ce site…" [ui_in] other = "dans" -# Used in sentences such as "All Tags" -[ui_all] -other = "tous" -[ui_see_all] -other = "Voir tous" +# Phrases for tags +[ui_see_all_tags] +other = "Voir tous les tags" +[ui_tag] +other = "Tag" +[ui_tags] +other = "Tags" +[ui_search_by_tags] +other = "Parcourir par Tags" +[ui_tags_intro] +other = "Nous avons catégorisé les termes du glossaire. Utilisez les filtres pour parcourir les termes par tag." +[ui_or_search_by_tags] +other = "...ou parcourir par tag" +[ui_select_all] +other = "Tout sélectionner" +[ui_deselect_all] +other = "Tout désélectionner" # Footer text [footer_all_rights_reserved] @@ -31,6 +43,8 @@ other = "Tous droits réservés" [footer_privacy_policy] other = "Politique de confidentialité" +[footer_hub_button_text] +other = "Tous les sites de la CNCF" # Post (blog, articles etc.) [post_byline_by] From ec6c5f7c00d7e5dd0c6642ba347603ee5a588bff Mon Sep 17 00:00:00 2001 From: roseyang Date: Thu, 27 Jul 2023 14:09:03 +0800 Subject: [PATCH 191/295] [tw] Add content/zh-tw/devsecops.md Signed-off-by: roseyang --- content/zh-tw/devsecops.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/zh-tw/devsecops.md diff --git a/content/zh-tw/devsecops.md b/content/zh-tw/devsecops.md new file mode 100644 index 0000000000..93bdf6f59d --- /dev/null +++ b/content/zh-tw/devsecops.md @@ -0,0 +1,25 @@ +--- +title: DevSecOps +status: Completed +category: 概念 +tags: ["方法論", "安全", ""] +--- + +## 是什麼 {#what-it-is} + +DevSecOps 一詞指的是開發、維運與安全責任的文化融合。 +它擴展了 [DevOps](/zh-tw/devops) 方法,將安全優先事項納入其中,並且對開發人員和維運人員的工作流程帶來最少的干擾,甚至不造成擾亂。 +如同 DevOps,DevSecOps 是一種文化的轉變,由採用的技術推動,並有著獨特的採用方法。 + +## 解決的問題 {#problem-it-addresses} + +DevOps 的實踐包含[持續整合](/zh-tw/continuous-integration)與[持續部署](/zh-tw/continuous-deployment),並加速應用程式的開發和發佈週期。 +可惜的是,無法充分體現所有組織利害關係人的自動化發佈流程可能會惡化現存的問題。 +一個快速發佈卻沒有考量安全需求的流程可能會降低組織的安全態勢。 + +## 如何幫助 {#how-it-helps} + +DevSecOps 關注於破除團隊間的隔閡,以及促進安全與自動化工作流程的建立。 +在選擇安全應用程式(工具、解決方案)時,組織必須善用自動化 CI/CD 工作流程和政策的落實,並且為開發者提供支持。 +該目標並非成為阻礙者,而是安全政策的落實,同時給予使用者如何使他們的專案向前推展的正確資訊。 +當 DevSecOps 被適當地實施,組織將會獲得更好的團隊溝通,並且減少安全事故和附帶成本。 \ No newline at end of file From 999a7e21608cfa539c8c66387aa453c71a2faddf Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Fri, 28 Jul 2023 15:15:50 +0100 Subject: [PATCH 192/295] aggiunto termine vertical scaling e deprecati termini , issue #1657 #1660 (#2256) * aggiunto termine vertical scaling issue #1657 Signed-off-by: Matteo Bisi * Deprecati termini issue #1660 Signed-off-by: Matteo Bisi --------- Signed-off-by: Matteo Bisi --- content/it/containers-as-a-service.md | 2 +- content/it/debugging.md | 2 +- content/it/firewall.md | 2 +- content/it/managed-services.md | 2 +- content/it/platform-as-a-service.md | 2 +- content/it/software-as-a-service.md | 2 +- content/it/version-control.md | 2 +- content/it/vertical-scaling.md | 36 +++++++++++++++++++++++++++ 8 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 content/it/vertical-scaling.md diff --git a/content/it/containers-as-a-service.md b/content/it/containers-as-a-service.md index bd72deba5e..13abf6ebe2 100644 --- a/content/it/containers-as-a-service.md +++ b/content/it/containers-as-a-service.md @@ -1,6 +1,6 @@ --- title: Containers as a Service -status: Completed +status: Deprecated category: Tecnologia tags: ["platform", "", ""] --- diff --git a/content/it/debugging.md b/content/it/debugging.md index cd3ca37513..4176cea303 100644 --- a/content/it/debugging.md +++ b/content/it/debugging.md @@ -1,6 +1,6 @@ --- title: Debugging -status: Completed +status: Deprecated category: concetto tags: ["applicazione", "", ""] --- diff --git a/content/it/firewall.md b/content/it/firewall.md index 1bc4cd1e55..d0bf247c63 100644 --- a/content/it/firewall.md +++ b/content/it/firewall.md @@ -1,6 +1,6 @@ --- title: Firewall -status: Completed +status: Deprecated category: Tecnologia tags: ["sicurezza", "", ""] --- diff --git a/content/it/managed-services.md b/content/it/managed-services.md index ae018c38b7..a5864d013a 100644 --- a/content/it/managed-services.md +++ b/content/it/managed-services.md @@ -1,6 +1,6 @@ --- title: Managed services -status: Completed +status: Deprecated category: Tecnologia --- diff --git a/content/it/platform-as-a-service.md b/content/it/platform-as-a-service.md index 744b72d5a6..5d8ed93aa9 100644 --- a/content/it/platform-as-a-service.md +++ b/content/it/platform-as-a-service.md @@ -1,6 +1,6 @@ --- title: Platform as a Service (PaaS) -status: Completed +status: Deprecated category: Tecnologia --- diff --git a/content/it/software-as-a-service.md b/content/it/software-as-a-service.md index 07e14bf353..c4a95d51e3 100644 --- a/content/it/software-as-a-service.md +++ b/content/it/software-as-a-service.md @@ -1,6 +1,6 @@ --- Title: Software as a Service (SaaS) -Status: Completed +Status: Deprecated Category: Tecnologia tags: ["fondamentali", "piattaforma", ""] --- diff --git a/content/it/version-control.md b/content/it/version-control.md index 3e3fb4d16b..0a2203c894 100644 --- a/content/it/version-control.md +++ b/content/it/version-control.md @@ -1,6 +1,6 @@ --- title: Controllo di Versione -status: Completed +status: Deprecated category: Tecnologia tags: ["metodologia", "", ""] --- diff --git a/content/it/vertical-scaling.md b/content/it/vertical-scaling.md new file mode 100644 index 0000000000..b43965e060 --- /dev/null +++ b/content/it/vertical-scaling.md @@ -0,0 +1,36 @@ +--- +title: Scalabilità verticale +status: Completed +category: Concetto +tags: ["infrastruttura", "", ""] +--- + +## Cos'è + +La scalabilità verticale, è una tecnica in cui la capacita del sistema +viene aumentata aggiungendo CPU e memoria sui singoli [nodes](/it/nodes/) quando il carico di lavoro aumenta. +Ad esempio, nel caso in cui ci sia un computer con 4GB RAM e si voglia incrementare la sua capacità a 16GB RAM, +Scalabilità verticale significa portare a 16GB RAM la memoria del sistema. +(Si prega di fare riferimento a [horizontal scaling](/it/horizontal-scaling/) per una differente modalità di scalabilità.) + +## Quali problematiche affronta + +Quando la domanda di risorse per un'applicazione cresce oltre la capacità attuale di quell'istanza dell'applicazione, +bisogna trovare un modo per rendere scalabile il sistema, cioè aggiungere capacità. +Si possono aggiungere più risorse di calcolo ai nodi esistenti (scalabilità verticale) +o più nodi al sistema ([horizontal scaling](/it/horizontal-scaling/)). +La scalabilità contribuisce alla competitività, all'efficienza, alla reputazione ed alla qualità. + + +## In che modo aiuta + +La scalabilità verticale consente di ridimensionare il server senza modificare il codice dell'applicazione. +Questa tecnica contrasta con la scalabilità orizzontale, in cui l'applicazione deve essere replicabile per scalare, potenzialmente richiedendo aggiornamenti del codice. +La scalabilità verticale aumenta la capacità di un'applicazione esistente aggiungendo risorse di calcolo, +consentendo all'app di elaborare più richieste ed eseguire più attività contemporaneamente. + + +## Termini Collegati + +* [Horizontal Scaling](/it/horizontal-scaling/) +* [Auto Scaling](/it/auto-scaling/) From 0bbfc29ca2d8895b7bb661a91bb1f33215fead74 Mon Sep 17 00:00:00 2001 From: kaiyee0 Date: Sat, 15 Jul 2023 17:15:42 +0800 Subject: [PATCH 193/295] Add content/zh-tw/function-as-a-service.md Signed-off-by: kaiyee0 --- content/zh-tw/function-as-a-service.md | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/zh-tw/function-as-a-service.md diff --git a/content/zh-tw/function-as-a-service.md b/content/zh-tw/function-as-a-service.md new file mode 100644 index 0000000000..ab60afac24 --- /dev/null +++ b/content/zh-tw/function-as-a-service.md @@ -0,0 +1,34 @@ +--- +title: 函式即服務 (FaaS) +status: Completed +category: 技術 +tags: ["基礎架構", "", ""] +--- + +## 是什麼 {#what-it-is} + +函式即服務 (FaaS) 是一種[無伺服器](/zh-tw/serverless/)的[雲端運算](/zh-tw/cloud-computing/)[服務](/zh-tw/service/), +它可以在特定事件觸發時執行程式碼, +而無需去維護常見於建置與發佈[微服務](/zh-tw/microservices/)應用程式所需的複雜基礎架構。 +在 FaaS 的運作模式下,使用者只需專注於管理自己的功能和資料,應用程式的其他管理工作則交由雲端服務提供商來處理。 +這種服務不僅讓開發者可以取得他們所需的功能以外,而且在程式碼不執行時,也無需支付額外的服務費用。 + +## 解決的問題 {#problem-it-addresses} + +在傳統的地端環境中,企業需要自行管理和維護其資料中心。 +企業必須投資於伺服器、儲存空間、軟體和其他技術外, +可能需要聘請 IT 人員或是外包商來購買、管理並升級所有的設備和使用授權。 +在這種情況下,資料中心必須配置足夠的資源以應對高峰需求,即使在工作量減少、資源閒置時也難以避免。 +反觀,若企業業務快速擴展,IT 部門可能又面臨資源無法即時提供的困境。 +在標準的[基礎架構即服務 (IaaS)](/zh-tw/infrastructure-as-a-service/) 雲端運算模型下, +用戶會預先購買特定容量,即表示你需要為保持應用程式運行所需的伺服器元件支付給公共雲端服務提供商。 +在需求增大時,用戶必須擴充伺服器容量;需求降低時,則需降低容量。 +即使應用程式並未在被使用,但運行該應用程式所需的雲端基礎架構仍要持續運作。 + +## 如何幫助 {#how-it-helps} + +FaaS 為開發者提供了一種[抽象](/zh-tw/abstraction/),使他們能夠在無需管理伺服器的情況下,可以根據事件來運行網路應用程式。 +以檔案上傳為例,這個動作可能會觸發一段自定義的程式碼,該程式碼將原始檔案轉換成多種格式。 +對於大量使用的程式碼,FaaS 的基礎架構能自動擴縮, +無需開發者花費時間和資源去設計程式碼的[可擴展性](/zh-tw/scalability/)。 +計費模式則是根據運算時間來計算,這表示企業在功能未使用時,就不必支付任何費用。 From 13397e78de2c51428f6b13ffa5afd652b701df87 Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Wed, 2 Aug 2023 10:37:20 +0100 Subject: [PATCH 194/295] Localize policy as code #1653 (#2265) * aggiunto termine vertical scaling issue #1657 Signed-off-by: Matteo Bisi * Deprecati termini issue #1660 Signed-off-by: Matteo Bisi * [it] Localize-Policy-as-Code-#1653 Signed-off-by: Matteo Bisi * Update content/it/policy-as-code.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/policy-as-code.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/policy-as-code.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/policy-as-code.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/policy-as-code.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/policy-as-code.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi --------- Signed-off-by: Matteo Bisi Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --- content/it/policy-as-code.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/it/policy-as-code.md diff --git a/content/it/policy-as-code.md b/content/it/policy-as-code.md new file mode 100644 index 0000000000..ea79ef48fc --- /dev/null +++ b/content/it/policy-as-code.md @@ -0,0 +1,28 @@ +--- +title: Policy as Code (PaC) +status: Completed +category: Concetto +tags: ["metodologia", "", ""] +draft: +--- + +## Cos'è + +Policy as code è la pratica che consente di memorizzare la definizione delle policy in uno o più file in formato leggibile e processabile da macchine. +Questa metodologia sostituisce il modello tradizionale in cui le policy sono documentate in formato leggibile da umani in documenti esterni al sistema. + +## Quali problematiche affronta + +La costruzione di applicazioni e infrastrutture è spesso vincolata a molte policy che un'organizzazione definisce, +ad esempio policy di sicurezza che vietano di memorizzare segreti nel codice sorgente, di eseguire un container con autorizzazioni di superutente +o di memorizzare alcuni dati al di fuori di una specifica regione geografica. +Per gli sviluppatori e i revisori è molto laborioso e soggetto a errori verificare manualmente le applicazioni e le infrastrutture rispetto alle policy documentate. +I processi manuali non possono soddisfare i requisiti di reattività e scalabilità delle applicazioni native del cloud. + +## In che modo aiuta + +Utilizzare Policy as Code consente la ripetibilità e riduce gli errori, a differenza di quanto avviene manualmente. +Un altro vantaggio è che il codice può essere gestito da un sistema di controllo di versione come Git. +Git crea una cronologia dei log delle modifiche, che è particolarmente utile quando qualcosa non funziona come previsto. +Consente all'utente di determinare chi ha apportato la modifica e di ripristinare una versione precedente. + From 6bfe087192071a04a40c6a68b533595a9a288dc9 Mon Sep 17 00:00:00 2001 From: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Date: Wed, 2 Aug 2023 20:10:42 +0900 Subject: [PATCH 195/295] Add 'xx.toml' entries to CODEOWNERS (#2216) Signed-off-by: Jihoon Seo --- CODEOWNERS | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index acde5d165b..c99b0b542a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -11,6 +11,7 @@ # Approvers for English content /content/en/ @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo +/i18n/en.toml @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo # These are the owners (approvers) for localization contents @@ -19,42 +20,56 @@ # Approvers for Arabic contents /content/ar/ @TarekMSayed @same7ammar @AShabana @arezk84 +/i18n/ar.toml @TarekMSayed @same7ammar @AShabana @arezk84 # Approvers for Bengali contents /content/bn/ @Arindam200 @Imtiaz1234 @mitul3737 @sajibAdhi +/i18n/bn.toml @Arindam200 @Imtiaz1234 @mitul3737 @sajibAdhi # Approvers for German contents /content/de/ @iamNoah1 @DaveVentura @CathPag @bcubk +/i18n/de.toml @iamNoah1 @DaveVentura @CathPag @bcubk # Approvers for Spanish contents /content/es/ @raelga @ramrodo @electrocucaracha @krol3 @92nqb +/i18n/es.toml @raelga @ramrodo @electrocucaracha @krol3 @92nqb # Approvers for French contents /content/fr/ @huats @fydrah @Krast76 @sestegra +/i18n/fr.toml @huats @fydrah @Krast76 @sestegra # Approvers for Hindi contents /content/hi/ @Garima-Negi @sayantani11 @anubha-v-ardhan @jayesh-srivastava +/i18n/hi.toml @Garima-Negi @sayantani11 @anubha-v-ardhan @jayesh-srivastava # Approvers for Italian contents /content/it/ @fsbaraglia @ugho16 @annalisag-spark @sistella +/i18n/it.toml @fsbaraglia @ugho16 @annalisag-spark @sistella # Approvers for Japanese contents /content/ja/ @inductor @naonishijima @kaitoii11 +/i18n/ja.toml @inductor @naonishijima @kaitoii11 # Approvers for Korean contents /content/ko/ @seokho-son @jihoon-seo @yunkon-kim +/i18n/ko.toml @seokho-son @jihoon-seo @yunkon-kim # Approvers for Portuguese contents /content/pt-br/ @edsoncelio @brunoguidone @jessicalins @MrErlison +/i18n/pt-br.toml @edsoncelio @brunoguidone @jessicalins @MrErlison # Approvers for Turkish contents /content/tr/ @aliok @halil-bugol @developer-guy @eminalemdar +/i18n/tr.toml @aliok @halil-bugol @developer-guy @eminalemdar # Approvers for Urdu contents /content/ur/ @Saim-Safdar @waleed318 +/i18n/ur.toml @Saim-Safdar @waleed318 # Approvers for Simplified Chinese contents /content/zh-cn/ @hanyuancheung @Jacob953 @Rocksnake @Submarinee +/i18n/zh-cn.toml @hanyuancheung @Jacob953 @Rocksnake @Submarinee # Approvers for Traditional Chinese contents /content/zh-tw/ @pichuang @ydFu +/i18n/zh-tw.toml @pichuang @ydFu From a915fc1541df3f0f28dca9ba80daaca9d17acd9d Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Thu, 3 Aug 2023 21:53:14 +0800 Subject: [PATCH 196/295] fix: error link - add continuous delivery & continuous deployment - fix error link Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/en/devsecops.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/devsecops.md b/content/en/devsecops.md index 66bf7de7c2..3bac304c13 100644 --- a/content/en/devsecops.md +++ b/content/en/devsecops.md @@ -14,8 +14,8 @@ Like DevOps, DevSecOps is a cultural shift, pushed by the technologies adopted, ## Problem it addresses -DevOps practices include [continuous integration](/continuous-integration/) and [continuous deployment](/continuous-delivery/) -and accelerate application development and release cycles. +DevOps practices include [continuous integration](/continuous-integration/), [continuous delivery](/continuous-delivery/), +and [continuous deployment](/continuous-deployment/) and accelerate application development and release cycles. Unfortunately, automated release processes that fail to represent all organizational stakeholders adequately can exacerbate existing issues. A process that rapidly releases new software without considering security needs From 91186aad7d4c7789722cd2d5e6da8e8702750ac5 Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Thu, 3 Aug 2023 22:17:26 +0800 Subject: [PATCH 197/295] fix: grammar "organization's" Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/en/devsecops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/devsecops.md b/content/en/devsecops.md index 3bac304c13..9a5fb969a9 100644 --- a/content/en/devsecops.md +++ b/content/en/devsecops.md @@ -19,7 +19,7 @@ and [continuous deployment](/continuous-deployment/) and accelerate application Unfortunately, automated release processes that fail to represent all organizational stakeholders adequately can exacerbate existing issues. A process that rapidly releases new software without considering security needs -can degrade an organizations’ security posture. +can degrade an organization's security posture. ## How it helps From 3a887fbe54ec0fceebf05790a0da7773b67fc9e6 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Fri, 4 Aug 2023 09:39:13 -0600 Subject: [PATCH 198/295] Enable check outdated gh action in dev-es (#2190) * Enable check outdated gh action in dev-es Signed-off-by: Victor Morales * Enable zh-tw locale code Co-authored-by: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Signed-off-by: Victor Morales * Improve discover L10N_CODE code Signed-off-by: Victor Morales --------- Signed-off-by: Victor Morales Co-authored-by: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> --- .github/workflows/check-outdated-content.yaml | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/.github/workflows/check-outdated-content.yaml b/.github/workflows/check-outdated-content.yaml index 8efe71b3c6..25ec05af5a 100644 --- a/.github/workflows/check-outdated-content.yaml +++ b/.github/workflows/check-outdated-content.yaml @@ -4,7 +4,8 @@ name: Check outdated content on: pull_request: branches: - - 'dev-ko' # add other branches or use wildcard 'dev-**' + - 'dev-ko' + - 'dev-es' paths: - 'content/en/**.md' @@ -12,10 +13,10 @@ jobs: check-outdated-content: name: Check outdated content - # if: contains(fromJSON('["dev-ko", "dev-xx"]'), github.base_ref) + if: contains(fromJSON('["dev-ko","dev-es"]'), github.base_ref) # Ref: https://docs.github.com/en/actions/learn-github-actions/expressions - if: github.base_ref == 'dev-ko' + #if: github.base_ref == 'dev-ko' # Condition to run this workflow on the upstream repository #if: github.repository == 'cncf/glossary' @@ -38,21 +39,26 @@ jobs: # Set output direcory OUTPUT_DIR="./outdated" - # Set L10n directory and code + # Set L10n code + L10N_CODE="${L10N_BRANCH//dev-/}" + echo "(DEBUG) L10N Code: ${L10N_CODE}" + + # Set L10n directory case "${L10N_BRANCH}" in - dev-ko) - L10N_DIR="content/ko/" - L10N_CODE="ko" + dev-pt) + L10N_DIR="./content/pt-br/" + ;; + dev-zh) + L10N_DIR="./content/zh-cn/" + ;; + dev-tw) + L10N_DIR="./content/zh-tw/" + ;; + *) + L10N_DIR="./content/${L10N_CODE}/" ;; - - #dev-pt) - #L10N_DIR="content/pt-br/" - #L10N_CODE="pt" - #;; esac - echo "(DEBUG) L10N Directory: ${L10N_DIR}" - echo "(DEBUG) L10N Code: ${L10N_CODE}" # Set L10N_DIR, L10N_CODE, and OUTPUT_DIR as environment variables # Ref: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable @@ -89,12 +95,12 @@ jobs: # Get the lastest branch name from 'GITHUB_REF' # The latest branch can be 'upstream/main' or 'forked/dev-ko' (rebased) LATEST_BRANCH=${GITHUB_REF#refs/} - echo "(DUBUG) LATEST_BRANCH: ${LATEST_BRANCH}" + echo "(DEBUG) LATEST_BRANCH: ${LATEST_BRANCH}" # Get the old branch from 'github.base_ref' # The old branch can be 'upstream/dev-ko' OLD_BRANCH="origin/${{github.base_ref}}" - echo "(DUBUG) OLD_BRANCH: ${OLD_BRANCH}" + echo "(DEBUG) OLD_BRANCH: ${OLD_BRANCH}" L10N_INFO_JSON=$(cat < ${OUTPUT_DIR}/${FILE_PATH} echo "Need to check if it has been changed, renamed or removed" >> ${OUTPUT_DIR}/${FILE_PATH} @@ -167,4 +173,4 @@ jobs: # content-filepath: ${{ steps.checker.outputs.output_path }} # labels: | # outdated -# lang/ko \ No newline at end of file +# lang/ko From 078f0f2b8ca21fcdaa224ba1935f3ee94d283434 Mon Sep 17 00:00:00 2001 From: Guillaume BERNARD Date: Sat, 5 Aug 2023 09:10:40 +0200 Subject: [PATCH 199/295] Create cloud-computing.md Signed-off-by: Guillaume BERNARD --- content/fr/cloud-computing.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/fr/cloud-computing.md diff --git a/content/fr/cloud-computing.md b/content/fr/cloud-computing.md new file mode 100644 index 0000000000..1e2cb60df3 --- /dev/null +++ b/content/fr/cloud-computing.md @@ -0,0 +1,29 @@ +--- +title: Cloud Computing +status: Completed +category: concept +tags: ["infrastructure", "fundamental", ""] +--- + +## Ce que c'est + +Le cloud computing, ou informatique en nuage, offre des ressources informatiques telles que de la puissance de calcul, +du réseau et de l'espace disque à la demande sur Internet, permettant aux utilisateurs d'accéder à des ressources informatiques +situées dans un emplacement physique distant. On différencie généralement le cloud privé du cloud public, +suivant si l'infrastructure cloud est exclusivement dédiée à une entreprise, ou mutualisée et ouverte au public. + +## Problème auquel il répond + +Les entreprises avaient traditionnellement deux solutions lorsqu'elles voulaient accroitre leur capacité de calcul. +Elles pouvaient soit acquérir, financer et concevoir de (nouvelles) installations pour héberger leurs serveurs physiques et leur réseau, +soit étendre et entretenir celles qui existent déjà. Le cloud computing résout ce dilemme +en permettant aux entreprises d'externaliser une partie de leurs besoins informatiques. + +## Quel en est l'utilité + +Les fournisseurs de cloud permettent aux entreprises de louer des ressources informatiques à la demande et de payer à l'utilisation, offrant deux avantages majeurs. +Premièrement, les entreprises peuvent se concentrer sur leur produit ou service sans avoir à attendre, +planifier et dépenser des ressources pour une nouvelle infrastructure physique. +Et deuxièmement, elles peuvent simplement se [mettre à l’échelle] (/scalability/) souhaitée à la demande, en fonctions de leurs besoins. +Le cloud computing permet aux entreprises d'adopter autant ou aussi peu d'infrastructure qu'elles le souhaitent. + From 832ef926e6245941cf5829db111801c85dd9a240 Mon Sep 17 00:00:00 2001 From: Yunkon Kim Date: Wed, 9 Aug 2023 19:42:50 +0900 Subject: [PATCH 200/295] Update path pattern in `.github/labeler.yml` (#2280) Signed-off-by: Yunkon Kim --- .github/labeler.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 7483f6b9ff..b24a93c7b0 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,40 +1,40 @@ lang/ar: -- content/ar/* +- content/ar/** lang/bn: -- content/bn/* +- content/bn/** lang/de: -- content/de/* +- content/de/** lang/en: -- content/en/* +- content/en/** lang/es: -- content/es/* +- content/es/** lang/fr: -- content/fr/* +- content/fr/** lang/hi: -- content/hi/* +- content/hi/** lang/it: -- content/it/* +- content/it/** lang/ja: -- content/ja/* +- content/ja/** lang/ko: -- content/ko/* +- content/ko/** lang/pt: -- content/pt-br/* +- content/pt-br/** lang/tw: -- content/zh-tw/* +- content/zh-tw/** lang/zh: -- content/zh-cn/* +- content/zh-cn/** From 6f5906effdda5879cfd8855a04a34af22170cfbb Mon Sep 17 00:00:00 2001 From: Guillaume BERNARD Date: Wed, 9 Aug 2023 14:22:21 +0200 Subject: [PATCH 201/295] Update cloud-computing.md Signed-off-by: Guillaume BERNARD --- content/fr/cloud-computing.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/fr/cloud-computing.md b/content/fr/cloud-computing.md index 1e2cb60df3..08b56ec506 100644 --- a/content/fr/cloud-computing.md +++ b/content/fr/cloud-computing.md @@ -9,21 +9,21 @@ tags: ["infrastructure", "fundamental", ""] Le cloud computing, ou informatique en nuage, offre des ressources informatiques telles que de la puissance de calcul, du réseau et de l'espace disque à la demande sur Internet, permettant aux utilisateurs d'accéder à des ressources informatiques -situées dans un emplacement physique distant. On différencie généralement le cloud privé du cloud public, -suivant si l'infrastructure cloud est exclusivement dédiée à une entreprise, ou mutualisée et ouverte au public. +situées dans un emplacement physique distant. nous différencions généralement le cloud privé du cloud public, +suivant si l'infrastructure cloud est exclusivement dédiée à une organisation, ou mutualisée et ouverte au public. ## Problème auquel il répond -Les entreprises avaient traditionnellement deux solutions lorsqu'elles voulaient accroitre leur capacité de calcul. +Les organisations avaient traditionnellement deux solutions lorsqu'elles voulaient accroitre leur capacité de calcul. Elles pouvaient soit acquérir, financer et concevoir de (nouvelles) installations pour héberger leurs serveurs physiques et leur réseau, soit étendre et entretenir celles qui existent déjà. Le cloud computing résout ce dilemme -en permettant aux entreprises d'externaliser une partie de leurs besoins informatiques. +en permettant aux organisations d'externaliser une partie de leurs besoins informatiques. ## Quel en est l'utilité -Les fournisseurs de cloud permettent aux entreprises de louer des ressources informatiques à la demande et de payer à l'utilisation, offrant deux avantages majeurs. -Premièrement, les entreprises peuvent se concentrer sur leur produit ou service sans avoir à attendre, +Les fournisseurs de cloud permettent aux organisations de louer des ressources informatiques à la demande et de payer à l'utilisation, offrant deux avantages majeurs. +Premièrement, les organisations peuvent se concentrer sur leur produit ou service sans avoir à attendre, planifier et dépenser des ressources pour une nouvelle infrastructure physique. Et deuxièmement, elles peuvent simplement se [mettre à l’échelle] (/scalability/) souhaitée à la demande, en fonctions de leurs besoins. -Le cloud computing permet aux entreprises d'adopter autant ou aussi peu d'infrastructure qu'elles le souhaitent. +Le cloud computing permet aux organisations d'adopter autant ou aussi peu d'infrastructure qu'elles le souhaitent. From 5dca1b2eb85636ba7466ee8ef19c8b2e37ea8de8 Mon Sep 17 00:00:00 2001 From: gamerslouis Date: Tue, 20 Jun 2023 08:38:36 +0000 Subject: [PATCH 202/295] Add content/zh-tw/api-gateway.md Signed-off-by: gamerslouis --- content/zh-tw/api-gateway.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/zh-tw/api-gateway.md diff --git a/content/zh-tw/api-gateway.md b/content/zh-tw/api-gateway.md new file mode 100644 index 0000000000..4972f38bd3 --- /dev/null +++ b/content/zh-tw/api-gateway.md @@ -0,0 +1,25 @@ +--- +title: API 閘道器 +status: Completed +category: 技術 +tags: ["網路", "", ""] +--- + +## 是什麼 {#what-it-is} + +[API](/zh-tw/application-programming-interface/) 閘道器是一個工具, +它聚集了多應用程式的 API,使它們可以透過單一的入口存取。 +這使得組織能夠集中處理特定的功能(如身分驗證、授權或限制應用程式之間的請求數量)。 +API 閘道器作為的公共介面,來為 API 使用者(通常是外部的)提供服務。 + +## 解決的問題 {#problem-it-addresses} + +如果您希望為外部使用者提供 API,您通常會希望有一個單一的入口點來管理所有的存取。 +此外,API 閘道器可以讓您統一套用功能到所有的流量上,而不需要修改任何應用程式的程式碼。 + +## 如何幫助 {#how-it-helps} + +API 閘道器為應用程式中的各種 API 提供了一個單一存取點, +這使得組織能夠在集中處理跨域商業邏輯或安全邏輯,也讓應用程式使用者能夠透過訪問單一地址滿足所有需求。 +API 閘道器可以透過為系統中所有Web服務的請求提供單一的存取點來簡化像安全性和[可觀測性](/zh-tw/observability/)這樣的運營問題。 +由於所有請求都流經 API 閘道器,它可以集中添加功能,如指標收集、速率限制和授權。 From 8f83ddaceb5fe6efd174cc268c76de36e4f113fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Este-Gracias?= Date: Thu, 10 Aug 2023 08:40:37 +0200 Subject: [PATCH 203/295] [FR] Fix previous merge (#2252) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- .github/settings.yml | 1 + config.toml | 17 +++++------------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index 8b5c2ef5d2..2c6e042df8 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -418,6 +418,7 @@ branches: - huats - fydrah - Krast76 + - sestegra teams: [] enforce_admins: null required_linear_history: null diff --git a/config.toml b/config.toml index 5d456828f2..17c1d79fe6 100644 --- a/config.toml +++ b/config.toml @@ -140,20 +140,13 @@ weight = 10 [languages.ur.params] description = "CNCF کلاؤڈ کی مقامی لغت کا مقصد کلاؤڈ مقامی ایپلی کیشنز کے بارے میں بات کرتے وقت استعمال ہونے والی عام اصطلاحات کے حوالے کے طور پر استعمال کرنا ہے۔" -[languages.ur] -title = "کلاؤڈ کی مقامی لغت" -description = "CNCF کلاؤڈ کی مقامی لغت کا مقصد کلاؤڈ مقامی ایپلی کیشنز کے بارے میں بات کرتے وقت استعمال ہونے والی عام اصطلاحات کے حوالے کے طور پر استعمال کرنا ہے۔" -languageName ="اردو (Urdu)" -contentDir = "content/ur" -weight = 10 - [languages.fr] title = "Glossaire Cloud Native" -description = "Le projet de Glossaire CNCF Cloud Natif a pour objectif de référencer les termes courants utilisés dans les différentes applications cloud native." languageName ="Français (French)" contentDir = "content/fr" weight = 11 - +[languages.fr.params] +description = "Le projet de Glossaire CNCF Cloud Native a pour objectif de référencer les termes courants utilisés dans les différentes applications Cloud Natives." [markup] [markup.goldmark] @@ -182,13 +175,13 @@ images = ["images/cncf-glossary-social.jpg"] # This menu appears only if you have at least one [params.versions] set. version_menu = "Releases" -# Flag used in the "version-banner" partial to decide whether to display a +# Flag used in the "version-banner" partial to decide whether to display a # banner on every page indicating that this is an archived version of the docs. # Set this flag to "true" if you want to display the banner. archived_version = false # The version number for the version of the docs represented in this doc set. -# Used in the "version-banner" partial to display a version number for the +# Used in the "version-banner" partial to display a version number for the # current doc set. version = "0.0" @@ -244,7 +237,7 @@ yes = 'Thank you! Please l no = 'Thanks for your feedback. Please tell us how we can improve.' # Adds a reading time to the top of each doc. -# If you want this feature, but occasionally need to remove the Reading time from a single page, +# If you want this feature, but occasionally need to remove the Reading time from a single page, # add "hide_readingtime: true" to the page's front matter [params.ui.readingtime] enable = false From b2daad16ad67bb32268d02164c2511a2c361dddd Mon Sep 17 00:00:00 2001 From: John Lin Date: Thu, 10 Aug 2023 14:44:56 +0800 Subject: [PATCH 204/295] Add a space in the language name of Traditional Chinese (#2282) Signed-off-by: John Lin --- config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.toml b/config.toml index f44ccaca7e..f906a40c37 100644 --- a/config.toml +++ b/config.toml @@ -133,7 +133,7 @@ weight = 10 [languages.zh-tw] title = "Cloud Native(雲原生) Glossary" description = "CNCF 雲原生 Glossary 專案旨在用作討論雲原生應用程式時常用術語的參考" -languageName ="繁體中文(Traditional Chinese)" +languageName ="繁體中文 (Traditional Chinese)" contentDir = "content/zh-tw" weight = 11 From 43ca1fd36a19221766c53f50d2460842f0f1cf0a Mon Sep 17 00:00:00 2001 From: kaiyee0 Date: Sun, 6 Aug 2023 18:29:34 +0800 Subject: [PATCH 205/295] feat: add service mesh Signed-off-by: kaiyee0 --- content/zh-tw/service-mesh.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 content/zh-tw/service-mesh.md diff --git a/content/zh-tw/service-mesh.md b/content/zh-tw/service-mesh.md new file mode 100644 index 0000000000..b8fb7cb865 --- /dev/null +++ b/content/zh-tw/service-mesh.md @@ -0,0 +1,24 @@ +--- +title: 服務網格 +status: Completed +category: 技術 +tags: ["網路", "", ""] +--- + +## 是什麼 {#what-it-is} + +在[微服務](/zh-tw/microservices/)的世界裡,應用程式被拆分成多個較小的[服務](/zh-tw/service/),而這些服務會透過網路進行通訊。 +就像您的 Wi-Fi 網路一樣,計算機的網路本質上是不可靠的、易被攻擊的,且經常速度較慢。 +服務網格透過管理服務間的流量(即通訊),並在所有服務中統一加入[可靠性](/zh-tw/reliability/)、[可觀察性](/zh-tw/observability/)和安全性功能,來解決這一系列新的挑戰。 + +## 解決的問題 {#problem-it-addresses} + +當轉移到微服務的架構後,工程師現在都必須處理數百個,甚至數千個需要通訊的服務。 +這意味著將有大量的流量會在網路上來回傳輸。 +除此之外,單一的應用程式會需要對通訊進行加密以支援監管要求、為營運團隊提供通用指標、或對於流量提出詳細的見解以協助診斷問題。 +如果這些功能被建立在單一的應用程式中,那麼每一個功能都會產生團隊間的摩擦,減緩新功能開發的速度。 + +## 如何幫助 {#how-it-helps} + +服務網格在不需要改變程式碼的情況下,為所有服務統一地增加了可靠性、可觀察性和安全性功能。 +在服務網格出現之前,這些功能必須被嵌入到每一個服務中,成為錯誤和技術債的潛在來源。 From e7a9145229bb96c387f592bf562094e9266404ef Mon Sep 17 00:00:00 2001 From: Guillaume BERNARD Date: Fri, 11 Aug 2023 14:32:57 +0200 Subject: [PATCH 206/295] Update cloud-computing.md after review Signed-off-by: Guillaume BERNARD --- content/fr/cloud-computing.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/fr/cloud-computing.md b/content/fr/cloud-computing.md index 08b56ec506..3486af7a2d 100644 --- a/content/fr/cloud-computing.md +++ b/content/fr/cloud-computing.md @@ -7,16 +7,16 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est -Le cloud computing, ou informatique en nuage, offre des ressources informatiques telles que de la puissance de calcul, -du réseau et de l'espace disque à la demande sur Internet, permettant aux utilisateurs d'accéder à des ressources informatiques -situées dans un emplacement physique distant. nous différencions généralement le cloud privé du cloud public, +Le cloud computing, ou informatique en nuage, ou encore infonuagique au Québec, offre des ressources informatiques telles que de la puissance de calcul, +du réseau et de l'espace de stockage à la demande sur Internet, permettant aux utilisateurs d'accéder à des ressources informatiques +situées dans un emplacement physique distant. Nous différencions généralement le cloud privé du cloud public, suivant si l'infrastructure cloud est exclusivement dédiée à une organisation, ou mutualisée et ouverte au public. ## Problème auquel il répond -Les organisations avaient traditionnellement deux solutions lorsqu'elles voulaient accroitre leur capacité de calcul. +Les organisations avaient traditionnellement deux solutions lorsqu'elles voulaient accroître leur capacité de calcul. Elles pouvaient soit acquérir, financer et concevoir de (nouvelles) installations pour héberger leurs serveurs physiques et leur réseau, -soit étendre et entretenir celles qui existent déjà. Le cloud computing résout ce dilemme +soit étendre et entretenir celles qui existaient déjà. Le cloud computing résout ce dilemme en permettant aux organisations d'externaliser une partie de leurs besoins informatiques. ## Quel en est l'utilité @@ -24,6 +24,6 @@ en permettant aux organisations d'externaliser une partie de leurs besoins infor Les fournisseurs de cloud permettent aux organisations de louer des ressources informatiques à la demande et de payer à l'utilisation, offrant deux avantages majeurs. Premièrement, les organisations peuvent se concentrer sur leur produit ou service sans avoir à attendre, planifier et dépenser des ressources pour une nouvelle infrastructure physique. -Et deuxièmement, elles peuvent simplement se [mettre à l’échelle] (/scalability/) souhaitée à la demande, en fonctions de leurs besoins. -Le cloud computing permet aux organisations d'adopter autant ou aussi peu d'infrastructure qu'elles le souhaitent. +Et deuxièmement, elles peuvent simplement réaliser une [mise à l'échelle ] (/scalability/) de leur infrastructure à la demande, en fonctions de leurs besoins. +Le cloud computing permet aux organisations de disposer de l'infrastructure nécessaire, en grande ou en petite quantité. From 65cac39c9e08e05fdffbd86c950bb0041debe2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 11 Aug 2023 18:35:15 +0200 Subject: [PATCH 207/295] [FR] Fix frontmatters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/observability.md | 2 +- content/fr/scalability.md | 2 +- content/fr/self-healing.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/fr/observability.md b/content/fr/observability.md index f01c47b008..85c27b81ed 100644 --- a/content/fr/observability.md +++ b/content/fr/observability.md @@ -1,6 +1,6 @@ --- title: Observabilité -status: Feedback Appreciated +status: Completed category: concept tags: ["property", "", ""] --- diff --git a/content/fr/scalability.md b/content/fr/scalability.md index 7882ee19c0..947730b1b8 100644 --- a/content/fr/scalability.md +++ b/content/fr/scalability.md @@ -2,7 +2,7 @@ title: Capacité de mise à l'échelle (Scalabilité) status: Completed category: property -tags: ["fundamentals", "", ""] +tags: ["fundamental", "property", ""] --- La capacité de mise à l'échelle (ou scalabilité) correspond à la capacité d'un système à s'agrandir. diff --git a/content/fr/self-healing.md b/content/fr/self-healing.md index 656866be58..a23a2d6c46 100644 --- a/content/fr/self-healing.md +++ b/content/fr/self-healing.md @@ -1,6 +1,6 @@ --- title: Auto-réparant -status: Feedback Appreciated +status: Completed category: property tags: ["infrastructure", "property"] --- From 7e46cfdd1b27f5805bcc2ae377dc7a35357c418d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 11 Aug 2023 19:26:33 +0200 Subject: [PATCH 208/295] [FR] Fix internal links to point on French version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/_index.md | 2 +- content/fr/api-gateway.md | 4 ++-- content/fr/application-programming-interface.md | 4 ++-- content/fr/auto-scaling.md | 8 ++++---- content/fr/bare-metal-machine.md | 12 ++++++------ content/fr/cloud-native-apps.md | 8 ++++---- content/fr/cloud-native-tech.md | 4 ++-- content/fr/cluster.md | 8 ++++---- content/fr/container-orchestration.md | 6 +++--- content/fr/containerization.md | 4 ++-- content/fr/contribute/_index.md | 4 ++-- content/fr/devops.md | 2 +- content/fr/distributed-apps.md | 8 ++++---- content/fr/distributed-systems.md | 6 +++--- content/fr/horizontal-scaling.md | 10 +++++----- content/fr/immutable-infrastructure.md | 4 ++-- content/fr/infrastructure-as-code.md | 6 +++--- content/fr/kubernetes.md | 14 +++++++------- content/fr/loosely-coupled-architecture.md | 4 ++-- content/fr/microservices-architecture.md | 10 +++++----- content/fr/monolithic-apps.md | 2 +- content/fr/nodes.md | 10 +++++----- content/fr/reliability.md | 4 ++-- content/fr/scalability.md | 10 +++++----- content/fr/service-mesh.md | 4 ++-- content/fr/service.md | 2 +- content/fr/style-guide/_index.md | 6 +++--- content/fr/tightly-coupled-architectures.md | 6 +++--- content/fr/vertical-scaling.md | 14 +++++++------- content/fr/virtual-machine.md | 4 ++-- content/fr/virtualization.md | 4 ++-- 31 files changed, 97 insertions(+), 97 deletions(-) diff --git a/content/fr/_index.md b/content/fr/_index.md index 811e42474b..44b3f2667d 100755 --- a/content/fr/_index.md +++ b/content/fr/_index.md @@ -17,7 +17,7 @@ Ce Glossaire fournit un plateforme indépendante de toute solution propriétaire Les contributions sont les bienvenues pour tous les participants adhérant au principe du projet, ainsi qu'à sa charte. Toute personne souhaitant faire une contribution peut soumettre une Issue ou ouvrir une Pull Request sur le dépôt GitHub. -S'assurer avant tout de suivre le [Guide de Rédaction](/style-guide/), de lire la [Documentation de contribution](/contribute/), ainsi que de rejoindre le canal [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) du Slack de la CNCF. +S'assurer avant tout de suivre le [Guide de Rédaction](/fr/style-guide/), de lire la [Documentation de contribution](/fr/contribute/), ainsi que de rejoindre le canal [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) du Slack de la CNCF. Il existe également un canal [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF) pour ceux qui souhaitent aider à la traduction du glossaire dans leur langage natif. ## Remerciements diff --git a/content/fr/api-gateway.md b/content/fr/api-gateway.md index bca08b37ff..67a481e30d 100644 --- a/content/fr/api-gateway.md +++ b/content/fr/api-gateway.md @@ -7,7 +7,7 @@ tags: ["networking", "", ""] ## Ce que c'est -Une passerelle d'[API](/application-programming-interface/) est un outil qui regroupe des APIs d'applications individuelles, les rendant toutes disponibles en un seul endroit. +Une passerelle d'[API](/fr/application-programming-interface/) est un outil qui regroupe des APIs d'applications individuelles, les rendant toutes disponibles en un seul endroit. Celà permet aux organisations de déplacer des fonctions clés, telles que l'authentification et l'autorisation ou la limitation du nombre de requêtes entre applications, vers un emplacement géré de manière centralisée. Une passerelle d'API fonctionne comme une interface commune pour les consommateurs d'API (souvent externes). @@ -20,5 +20,5 @@ De plus, si vous devez appliquer une fonctionnalité sur ces interactions, une p En fournissant un seul point d'accès pour diverses APIs d'applications, les passerelles d'API facilitent, pour les organisations, la mise en place de logiques métiers ou de sécurité transversales dans un emplacement centralisé. Elles permettent également aux consommateurs d'applications de se rendre à une adresse unique pour tous leurs besoins. -Une passerelle d'API peut simplifier les préoccupations opérationnelles telles que la sécurité et l'[observabilité](/observability/) en fournissant un point d'accès unique pour les requêtes vers tous les services web d'un système. +Une passerelle d'API peut simplifier les préoccupations opérationnelles telles que la sécurité et l'[observabilité](/fr/observability/) en fournissant un point d'accès unique pour les requêtes vers tous les services web d'un système. Comme toutes les requêtes transitent par la passerelle d'API, celle-ci représente un endroit unique pour ajouter des fonctionnalités telles que la collecte de métriques, la limitation du débit et l'autorisation. diff --git a/content/fr/application-programming-interface.md b/content/fr/application-programming-interface.md index 362f7747c4..1132f2e516 100644 --- a/content/fr/application-programming-interface.md +++ b/content/fr/application-programming-interface.md @@ -17,10 +17,10 @@ Les contraintes sur leurs interactions permettent de créer une communication st Au fur et à mesure que les applications deviennent plus complexes, de petites modifications du code peuvent avoir des effets drastiques sur d'autres fonctionnalités. Les applications doivent adopter une approche modulaire de leur fonctionnement si elles veulent simultanément croître et maintenir leur stabilité. Sans API, il manque un cadre pour l'interaction entre les applications. -Sans un cadre partagé, il est difficile pour les applications de [passer à l'échelle](/scalability/) et de s'intégrer. +Sans un cadre partagé, il est difficile pour les applications de [passer à l'échelle](/fr/scalability/) et de s'intégrer. ## Quel en est l'utilité Les APIs permettent aux programmes informatiques ou aux applications d'interagir et de partager des informations de manière définie et compréhensible. Elles sont les éléments constitutifs des applications modernes et elles offrent aux développeurs un moyen d'intégrer les applications entre elles. -Lorsque vous entendez parler de [microservices](/microservices/) travaillant ensemble, vous pouvez en déduire qu'ils interagissent via une API. +Lorsque vous entendez parler de [microservices](/fr/microservices/) travaillant ensemble, vous pouvez en déduire qu'ils interagissent via une API. diff --git a/content/fr/auto-scaling.md b/content/fr/auto-scaling.md index 033ce2e373..3e2fad508d 100644 --- a/content/fr/auto-scaling.md +++ b/content/fr/auto-scaling.md @@ -5,7 +5,7 @@ category: property tags: ["infrastructure", "", ""] --- -La mise à l'échelle automatique (ou autoscaling) est la capacité d'un système à s'adapter automatiquement (voir [capacité de mise à l'échelle](/scalability/)), généralement, en termes de ressources informatiques. +La mise à l'échelle automatique (ou autoscaling) est la capacité d'un système à s'adapter automatiquement (voir [capacité de mise à l'échelle](/fr/scalability/)), généralement, en termes de ressources informatiques. Avec un système permettant une mise à l'échelle automatique, les ressources sont automatiquement ajoutées en cas de besoin et peuvent être ajustées pour répondre aux demandes fluctuantes des utilisateurs. Le processus de mise à l'échelle automatique varie et peut être configuré pour s'adapter à différentes métriques, telles que la mémoire ou le temps de traitement. Les services cloud gérés sont couramment associés à cette fonctionnalité de mise à l'échelle automatique, car il y existe plus d'options et de mises en œuvre disponibles que dans la plupart des déploiements sur site. @@ -14,7 +14,7 @@ Auparavant, l'infrastructure et les applications étaient conçues en tenant com Cette architecture signifiait que beaucoup de ressources étaient sous-utilisées et inélastiques face à l'évolution de la demande des consommateurs. L'inélasticité entraînait des coûts plus élevés pour l'entreprise et des pertes d'activité causées par les pannes dues à une demande excessive. -En exploitant le cloud, la [virtualisation](/virtualization/) et la [conteneurisation](/containerization/) des applications et leurs dépendances, +En exploitant le cloud, la [virtualisation](/fr/virtualization/) et la [conteneurisation](/fr/containerization/) des applications et leurs dépendances, les organisations peuvent développer des applications qui se mettent à l'échelle selon les demandes des utilisateurs. Elles peuvent surveiller les applications et les mettre à l'échelle automatiquement, offrant ainsi une expérience utilisateur optimale. Prenons l'exemple de l'augmentation du nombre de spectateurs que Netflix connaît chaque vendredi soir. @@ -23,5 +23,5 @@ en augmentant le nombre de serveurs permettant une diffusion de plus de vidéos ## Termes liés -* [Mise à l'échelle horizontale (Horizontal Scaling)](/horizontal-scaling/) -* [Mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/) +* [Mise à l'échelle horizontale (Horizontal Scaling)](/fr/horizontal-scaling/) +* [Mise à l'échelle verticale (Vertical Scaling)](/fr/vertical-scaling/) diff --git a/content/fr/bare-metal-machine.md b/content/fr/bare-metal-machine.md index 557fd50bde..66a8766284 100644 --- a/content/fr/bare-metal-machine.md +++ b/content/fr/bare-metal-machine.md @@ -8,10 +8,10 @@ tags: ["infrastructure", "", ""] ## Ce que c'est Une machine physique, ou machine bare metal, fait référence à un ordinateur physique, plus précisément à un serveur, qui possède un et un seul système d'exploitation. -En informatique moderne, la plupart des serveurs sont des [machines virtuelles](/virtual-machine/), il est donc important de faire cette distinction. +En informatique moderne, la plupart des serveurs sont des [machines virtuelles](/fr/virtual-machine/), il est donc important de faire cette distinction. Un serveur physique est généralement un ordinateur assez gros qui intègre du matériel puissant. L'installation d'un système d'exploitation et l'exécution d'applications directement sur ce matériel physique, -sans [virtualisation](/virtualization/), est ce que l'on appelle une machine physique, ou machine bare metal. +sans [virtualisation](/fr/virtualization/), est ce que l'on appelle une machine physique, ou machine bare metal. ## Problème auquel il répond @@ -25,9 +25,9 @@ vous fournissez théoriquement les meilleures performances possibles au système Si vous devez exécuter une charge de travail qui doit avoir un accès extrêmement rapide aux ressources matérielles, une machine physique peut être la solution adéquate. -Dans le contexte des [applications Cloud Natives](/cloud-native-apps/), -vous envisagez généralement les performances en termes de [mise à l'échelle](/scalability/), pour traiter un grand nombre d'événements simultanés. -Vous pouvez utiliser pour cela la [mise à l'échelle horizontale](/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). -Mais, certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/vertical-scaling/) (ajouter plus de puissance à une machine existante) +Dans le contexte des [applications Cloud Natives](/fr/cloud-native-apps/), +vous envisagez généralement les performances en termes de [mise à l'échelle](/fr/scalability/), pour traiter un grand nombre d'événements simultanés. +Vous pouvez utiliser pour cela la [mise à l'échelle horizontale](/fr/horizontal-scaling/) (ajout de plus de machines pour augmenter la capacité de traitement). +Mais, certaines charges de travail peuvent nécessiter une [mise à l'échelle verticale](/fr/vertical-scaling/) (ajouter plus de puissance à une machine existante) et/ou une réponse extrêmement rapide du matériel. Dans ce cas, une machine physique est plus adaptée. Les machines physiques permettent également des réglages avancés au niveau du matériel physique et éventuellement des pilotes matériels pour vous aider à accomplir votre tâche. diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index 03d142f9da..1a490742fb 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -7,15 +7,15 @@ tags: ["application", "fundamental", ""] ## Ce que c'est -Les applications Cloud Natives sont des applications conçues pour tirer avantage des innovations du [cloud computing](/cloud-computing/). -Ces applications s'intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/scalability/). +Les applications Cloud Natives sont des applications conçues pour tirer avantage des innovations du [cloud computing](/fr/cloud-computing/). +Ces applications s'intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/fr/scalability/). Ce terme fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. Aujourd'hui, les applications Cloud Natives incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. ## Problème auquel il répond Traditionnellement, les environnements hébergés dans des centres de données classiques fournissent des serveurs sur mesure. -Chaque centre de données dispose de services qui [associent étroitement ](/tightly-coupled-architectures/) les applications à des environnements spécifiques, qui se basent souvent sur des infrastructures déployées à la main, par exemple des [machines virtuelles](/virtual-machine/) et des services. Cela contraint les développeurs et leurs applications à un déploiement dans ce centre de données spécifique. +Chaque centre de données dispose de services qui [associent étroitement ](/fr/tightly-coupled-architectures/) les applications à des environnements spécifiques, qui se basent souvent sur des infrastructures déployées à la main, par exemple des [machines virtuelles](/fr/virtual-machine/) et des services. Cela contraint les développeurs et leurs applications à un déploiement dans ce centre de données spécifique. Les applications qui n'ont pas été conçues pour tirer avantage des environnements Cloud ne pourront pas bénéficier de ses avantages tels que la résilience et la mise à l'échelle. Par exemple, les applications nécessitant une intervention manuelle pour démarrer correctement ne pourront pas se mettre à l'échelle automatiquement ou automatiquement redémarrées en cas d'erreur. @@ -25,7 +25,7 @@ Bien qu'il n'y ait pas de solution miracle pour qu'une application soit définie Cloud Natives présentent des points en commun. Les applications Cloud Natives sont résilientes, elles sont gérables et tirent profit de l'ensemble des services Cloud où elles sont déployées. -De nombreux services Cloud mettent à disposition un important niveau d'[observabilité](/observability/), permettant aux utilisateurs +De nombreux services Cloud mettent à disposition un important niveau d'[observabilité](/fr/observability/), permettant aux utilisateurs de détecter et de régler les problèmes avant qu'ils ne deviennent plus importants. Combiné à une automatisation robuste, elles permettent aux ingénieurs de faire des changements à fort impact de manière fréquente et prévisible avec un minimum d'effort. diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index e9d3b2d615..0d773101e7 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -8,10 +8,10 @@ tags: ["fundamental", "", ""] ## Ce que c'est Les technologies Cloud Natives, aussi référencées comme la pile des technologies Cloud Natives, sont les technologies -utilisées pour construire des [applications Cloud Natives](/cloud-native-apps/). +utilisées pour construire des [applications Cloud Natives](/fr/cloud-native-apps/). Ces technologies permettent aux organisations de développer des applications capables de se mettre à l'échelle dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides. -Tout en tirant pleinement parti des avantages du [cloud computing](/cloud-computing/). +Tout en tirant pleinement parti des avantages du [cloud computing](/fr/cloud-computing/). Elles sont conçues dès le départ pour exploiter les capacités du cloud computing ainsi que des conteneurs, des service meshes, des micro-services. Les infrastructures immuables illustrent cette approche. ## Problème auquel il répond diff --git a/content/fr/cluster.md b/content/fr/cluster.md index f81cb4e4f5..95028db062 100644 --- a/content/fr/cluster.md +++ b/content/fr/cluster.md @@ -8,16 +8,16 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est Un cluster est un groupe d'ordinateurs ou d'applications qui fonctionnent ensemble dans un but commun. -Dans un contexte Cloud Native, le terme est souvent appliqué à [Kubernetes](/kubernetes/). +Dans un contexte Cloud Native, le terme est souvent appliqué à [Kubernetes](/fr/kubernetes/). Un cluster Kubernetes est un ensemble de services (ou de charges de travail) qui s'exécutent dans leurs propres conteneurs, souvent sur des machines différentes. -L'ensemble de tous ces services [conteneurisés](/containerization/), connectés au travers du réseau, représente un cluster. +L'ensemble de tous ces services [conteneurisés](/fr/containerization/), connectés au travers du réseau, représente un cluster. ## Problème auquel il répond Un logiciel qui s'exécute sur un seul ordinateur représente un point de défaillance unique — si cet ordinateur tombe en panne, ou si accidentellement quelqu'un débranche le câble d'alimentation, alors un système critique pourrait être mis hors-ligne. -C'est pourquoi généralement les logiciels modernes sont souvent construits sous forme d'[applications distribuées](/distributed-apps/), regroupées ensemble comme un cluster. +C'est pourquoi généralement les logiciels modernes sont souvent construits sous forme d'[applications distribuées](/fr/distributed-apps/), regroupées ensemble comme un cluster. ## Quel en est l'utilité @@ -25,6 +25,6 @@ Les applications réparties en cluster s'exécutent sur plusieurs machines, éli Cependant, fabriquer des systèmes distribués est vraiment difficile. Dans les fait, c'est une discipline informatique à part entière. Le besoin en systèmes globaux et les années d'essais et d'erreurs ont mené au développement d'un nouveau genre de pile technique: -[technologies Cloud Natives](/cloud-native-tech/). +[technologies Cloud Natives](/fr/cloud-native-tech/). Ces nouvelles technologies sont les blocs de construction qui facilitent l'exploitation et la création de systèmes distribués. diff --git a/content/fr/container-orchestration.md b/content/fr/container-orchestration.md index 304636f375..6fdbf8b4d9 100644 --- a/content/fr/container-orchestration.md +++ b/content/fr/container-orchestration.md @@ -6,14 +6,14 @@ category: Concept ## Ce que c'est -L'orchestration de [Conteneurs](/container/) fait référence à la gestion et à l'automatisation du cycle de vie d'applications conteneurisées au sein d'environnements dynamiques. -Réalisée à l'aide d'un orchestrateur de conteneurs (la plupart du temps, [Kubernetes](/kubernetes)), elle permet les déploiements, le passage à l'échelle (automatique), (l'auto-)remédiation et le monitoring. +L'orchestration de [Conteneurs](/fr/container/) fait référence à la gestion et à l'automatisation du cycle de vie d'applications conteneurisées au sein d'environnements dynamiques. +Réalisée à l'aide d'un orchestrateur de conteneurs (la plupart du temps, [Kubernetes](/fr/kubernetes)), elle permet les déploiements, le passage à l'échelle (automatique), (l'auto-)remédiation et le monitoring. L'orchestration est une métaphore: L'outil d'orchestration dirige les conteneurs tel un chef d'orchestre, s'assurant que chaque conteneur (ou musicien) fait ce qu'il doit faire. ## Problème auquel il répond -Gérer manuellement des [microservices](/microservices), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/distributed-systems) en général — est compliqué, pour ne pas dire impossible. +Gérer manuellement des [microservices](/fr/microservices), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/fr/distributed-systems) en général — est compliqué, pour ne pas dire impossible. L'orchestration de conteneurs permet aux utilisateurs d'automatiser toutes ces tâches de gestion. ## Quelle en est l'utilité diff --git a/content/fr/containerization.md b/content/fr/containerization.md index a052c17bc9..8f753d7473 100644 --- a/content/fr/containerization.md +++ b/content/fr/containerization.md @@ -13,10 +13,10 @@ Du moment que le résultat est une image qui respecte ce standard, l'outil de co ## Problème auquel il répond -Avant que les conteneurs ne se répandent, les organisations s'appuyaient sur les machines virtuelles (VMs) pour orchestrer différentes applications au sein d'une unique [machine physique](/bare-metal-machine/). +Avant que les conteneurs ne se répandent, les organisations s'appuyaient sur les machines virtuelles (VMs) pour orchestrer différentes applications au sein d'une unique [machine physique](/fr/bare-metal-machine/). Les VMs sont sensiblement plus grosses que les conteneurs et nécessitent un hyperviseur pour fonctionner. À cause du stockage, des sauvegardes et du transfert de ces gros modèles de VM, la création des modèles de VM est également longue. -De plus, les VMs peuvent souffrir d'une dérive de configuration ce qui enfreint le principe de l'[immuabilité](/immutable-infrastructure/). +De plus, les VMs peuvent souffrir d'une dérive de configuration ce qui enfreint le principe de l'[immuabilité](/fr/immutable-infrastructure/). ## Quel en est l'utilité diff --git a/content/fr/contribute/_index.md b/content/fr/contribute/_index.md index 90093a50a3..60c0ce9c6c 100644 --- a/content/fr/contribute/_index.md +++ b/content/fr/contribute/_index.md @@ -60,7 +60,7 @@ Les seules exceptions sont les termes fondamentaux nécessaires pour comprendre Ci-après, un guide étape par étape pour ceux et celles qui ne sont pas familier avec Github **Si vous avez un compte GitHub Pro**, merci de vérifier que vous utilisez nos modèles d'issue, une convention de nommage appropriée, réclamé une PR sur Slack (autrement on pourrait l'avoir raté), et où trouver les modèles de fichier. -Et merci de lire le [Style Guide](/style-guide/) avant de commencer - Merci! +Et merci de lire le [Style Guide](/fr/style-guide/) avant de commencer - Merci! ### Créer une issue {#creating-an-issue} @@ -92,7 +92,7 @@ Si vous souhaitez travailler sur plusieurs termes, merci d'en finir un avant de ### Proposer un nouveau terme (créer une PR) {#submitting-a-new-term} -Avant de commencer, merci de lire le [Style Guide](/style-guide/) — il aidera à minimiser les aller/retour. +Avant de commencer, merci de lire le [Style Guide](/fr/style-guide/) — il aidera à minimiser les aller/retour. Comme mentionné dans le style guide, il est fortement recommandé de commencer par un document texte (Gdoc, Word ou autre) Une fois que le terme est prêt à être proposé, rédigez le contenu (sous forme de code)... diff --git a/content/fr/devops.md b/content/fr/devops.md index 129392f5fa..59d844fc21 100644 --- a/content/fr/devops.md +++ b/content/fr/devops.md @@ -14,7 +14,7 @@ Le DevOps fait appel à un groupe d'ingénieurs travaillant sur des petits compo ## Problème auquel il répond -Traditionnellement, dans les organisations complexes possédant des [applications monolithiques](/monolithic-apps/) [fortement couplées](/tightly-coupled-architectures/), +Traditionnellement, dans les organisations complexes possédant des [applications monolithiques](/fr/monolithic-apps/) [fortement couplées](/fr/tightly-coupled-architectures/), le travail était généralement fragmenté entre plusieurs équipes. Ce fonctionnement menait à de nombreuses passations entre les équipes et allongeait les délais de livraison. À chaque nouveau composant ou nouvelle mise à jour, le résultat était mis en file d'attente pour la prochaine équipe. diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md index 196a97f2ea..54eda06d9b 100644 --- a/content/fr/distributed-apps.md +++ b/content/fr/distributed-apps.md @@ -8,14 +8,14 @@ tags: ["architecture", "", ""] ## Ce que c'est Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes et plus petites. -Les applications distribuées sont généralement composées de [microservices](/microservices/) individuels +Les applications distribuées sont généralement composées de [microservices](/fr/microservices/) individuels qui s'occupent de différentes problématiques au sein d'une application plus large. -Dans un environnement Cloud Native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/container/) sur un [cluster](/cluster/). +Dans un environnement Cloud Native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/fr/container/) sur un [cluster](/fr/cluster/). ## Problème auquel il répond Une application s'exécutant sur un seul ordinateur représente un point de défaillance unique — si cet ordinateur tombe en panne, l'application devient indisponible. -Les applications distribuées sont souvent opposées aux [applications monolithiques](/monolithic-apps/). +Les applications distribuées sont souvent opposées aux [applications monolithiques](/fr/monolithic-apps/). Une application monolithique peut être plus difficile à mettre à l'échelle car les différents composants ne peuvent pas être mis à l'échelle indépendamment. Les applications monolithiques peuvent également devenir un frein à la vitesse de développement à mesure qu'elles grossissent, car davantage de développeurs doivent travailler sur une base de code partagée qui n'a pas toujours des limites bien définies. @@ -24,6 +24,6 @@ car davantage de développeurs doivent travailler sur une base de code partagée En divisant une application en différents éléments et en les exécutant à différents endroits, le système global peut tolérer davantage de pannes. Cela permet également à une application de tirer parti des fonctionnalités de mise à l'échelle non disponibles pour une application ayant une instance unique, -à savoir la possibilité de [mettre à l'échelle horizontalement](/horizontal-scaling/). +à savoir la possibilité de [mettre à l'échelle horizontalement](/fr/horizontal-scaling/). Cela a cependant un coût : une complexité accrue et des couts opérationnels supplémentaires — vous exécutez désormais de nombreux composants d'application au lieu d'une seule application. diff --git a/content/fr/distributed-systems.md b/content/fr/distributed-systems.md index d68b57d5bf..0baddd50c4 100644 --- a/content/fr/distributed-systems.md +++ b/content/fr/distributed-systems.md @@ -8,7 +8,7 @@ tags: ["architecture", "", ""] ## Ce que c'est Un système distribué est un ensemble de composants autonomes connectés via un réseau, et qui apparaît à ses utilisateurs comme un seul système cohérent. -La plupart du temps appelés [nœuds](/nodes/), ces composants peuvent aussi bien être des machines physiques (des ordinateurs ou des téléphones portables par exemple) que des processus logiciels. +La plupart du temps appelés [nœuds](/fr/nodes/), ces composants peuvent aussi bien être des machines physiques (des ordinateurs ou des téléphones portables par exemple) que des processus logiciels. Les nœuds sont programmés pour atteindre un objectif commun et échangent des messages via le réseau afin de collaborer. ## Problème auquel il répond @@ -18,12 +18,12 @@ Pensez à Gmail ou Netflix: il n'existe aucune machine physique suffisamment pui En connectant entre elles de multiples machines physiques, la puissance de calcul devient quasiment infinie. Sans calcul distribué, beaucoup d'applications sur lesquelles nous nous appuyons aujourd'hui ne pourraient pas exister. -Traditionnellement, les systèmes [passent à l'échelle](/scalability/) verticalement, ce qui correspond à l'ajout de processeur ou de mémoire à une seule machine. +Traditionnellement, les systèmes [passent à l'échelle](/fr/scalability/) verticalement, ce qui correspond à l'ajout de processeur ou de mémoire à une seule machine. Le passage à l'échelle vertical est chronophage, nécessite un temps d'arrêt, et atteint rapidement ses limites. ## Quel en est l'utilité -Les systèmes distribués permettent un [passage à l'échelle horizontal](/horizontal-scaling/) (par exemple en ajoutant des nœuds au système lorsque nécessaire). +Les systèmes distribués permettent un [passage à l'échelle horizontal](/fr/horizontal-scaling/) (par exemple en ajoutant des nœuds au système lorsque nécessaire). Ceci peut être automatisé, permettant ainsi au système de gérer une croissance soudaine de charge de travail (workload) ou de consommation de ressources. Un système non distribué s'expose à des risques de panne dans la mesure où, si une machine physique venait à tomber en échec, l'intégralité du système viendrait à tomber avec elle. diff --git a/content/fr/horizontal-scaling.md b/content/fr/horizontal-scaling.md index ef02267a8b..85138b5f2f 100644 --- a/content/fr/horizontal-scaling.md +++ b/content/fr/horizontal-scaling.md @@ -7,15 +7,15 @@ tags: ["infrastructure", "", ""] ## Ce que c'est -La mise à l'échelle horizontale est une technique qui consiste à augmenter la capacité d'un système en ajoutant plus de [nœuds](/nodes/) au lieu d'ajouter plus de ressources informatiques à des nœuds unitaires (ce dernier étant connu sous le nom de [mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/)). +La mise à l'échelle horizontale est une technique qui consiste à augmenter la capacité d'un système en ajoutant plus de [nœuds](/fr/nodes/) au lieu d'ajouter plus de ressources informatiques à des nœuds unitaires (ce dernier étant connu sous le nom de [mise à l'échelle verticale (Vertical Scaling)](/fr/vertical-scaling/)). Supposons que nous avons un système avec 4 Go de mémoire et que nous voulons augmenter sa capacité à 16 Go, la mise à l'échelle horizontale consiste à ajouter 4 × 4 Go de mémoire plutôt que de passer à un système avec 16 Go de mémoire. -Cette approche améliore les performances d'une application en ajoutant de nouvelles instances, ou [nœuds](/nodes/), pour mieux répartir la charge de travail. +Cette approche améliore les performances d'une application en ajoutant de nouvelles instances, ou [nœuds](/fr/nodes/), pour mieux répartir la charge de travail. En termes simples, elle vise à réduire la charge du serveur plutôt qu'à étendre la capacité du serveur unitaire. ## Problème auquel il répond -Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/scalability/) le système (ajouter de la capacité au système). +Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/fr/scalability/) le système (ajouter de la capacité au système). Nous pouvons soit ajouter plus de nœuds au système (mise à l'échelle horizontale) soit ajouter plus de ressources informatiques aux nœuds existants (mise à l'échelle verticale). ## Quel en est l'utilité @@ -27,5 +27,5 @@ Cela permet à l'application d'effectuer davantage de travail simultanément san ## Termes liés -* [Mise à l'échelle verticale (Vertical Scaling)](/vertical-scaling/) -* [Mise à l'échelle automatique (Autoscaling)](/auto-scaling/) +* [Mise à l'échelle verticale (Vertical Scaling)](/fr/vertical-scaling/) +* [Mise à l'échelle automatique (Autoscaling)](/fr/auto-scaling/) diff --git a/content/fr/immutable-infrastructure.md b/content/fr/immutable-infrastructure.md index ce396c7acd..afbc1e50bb 100644 --- a/content/fr/immutable-infrastructure.md +++ b/content/fr/immutable-infrastructure.md @@ -5,12 +5,12 @@ category: property tags: ["infrastructure", "property", ""] --- -L'infrastructure immuable fait référence à l'infrastructure informatique ([machines virtuelles](/virtual-machine/), [conteneurs](/container/), équipements réseau) qui ne peut pas être modifiée une fois déployée. +L'infrastructure immuable fait référence à l'infrastructure informatique ([machines virtuelles](/fr/virtual-machine/), [conteneurs](/fr/container/), équipements réseau) qui ne peut pas être modifiée une fois déployée. Cela peut être imposé à l'aide d'un processus automatisé qui écrase les modifications non autorisées, ou à l'aide d'un système qui, dés le départ, n'autorise aucune modification. Les conteneurs sont un bon exemple d'infrastructure immuable, car des modifications persistantes ne peuvent être apportées aux conteneurs qu'en créant une nouvelle version du conteneur ou en recréant le conteneur existant à partir de son image. En empêchant ou en identifiant les modifications non autorisées, les infrastructures immuables facilitent l'identification et la réduction des risques de sécurité. L'exploitation d'un tel système devient beaucoup plus simple, car les administrateurs peuvent faire des hypothèses à son sujet. Après tout, ils savent que personne n'a commis d'erreurs ou effectué des modifications qu'ils ont oublié de communiquer. -L'infrastructure immuable va de pair avec l'[infrastructure en tant que code](/infrastructure-as-code/), où toute l'automatisation nécessaire à la création de l'infrastructure est stockée dans un système de contrôle des versions (par exemple, Git). +L'infrastructure immuable va de pair avec l'[infrastructure en tant que code](/fr/infrastructure-as-code/), où toute l'automatisation nécessaire à la création de l'infrastructure est stockée dans un système de contrôle des versions (par exemple, Git). Cette combinaison d'immuabilité et de contrôle des versions signifie qu'il existe un journal d'audit durable de chaque modification autorisée apportée à un système. diff --git a/content/fr/infrastructure-as-code.md b/content/fr/infrastructure-as-code.md index b6a123c358..968eab8e19 100644 --- a/content/fr/infrastructure-as-code.md +++ b/content/fr/infrastructure-as-code.md @@ -14,10 +14,10 @@ habituellement au travers de scripts ou autres outils de configuration. ## Problème auquel il répond Construire des applications d'une manière Cloud Native nécessite des infrastructures qui peuvent être duplicables et jettables. -Il est également nécessaire de pouvoir [mettre à l'échelle](/scalability/) à la demande de manière automatique et répétable, potentiellement sans intervention humaine. -Le provisionnement manuel ne pouvant pas répondre aux besoins de réactivité et de passage à l'échelle des [applications Cloud Natives](/cloud-native-apps/). +Il est également nécessaire de pouvoir [mettre à l'échelle](/fr/scalability/) à la demande de manière automatique et répétable, potentiellement sans intervention humaine. +Le provisionnement manuel ne pouvant pas répondre aux besoins de réactivité et de passage à l'échelle des [applications Cloud Natives](/fr/cloud-native-apps/). Les changements manuels sur l'infrastructure ne sont pas reproductibles, affichent rapidement des problèmes de mise à l'échelle, et amènent des erreurs de configuration. ## Quel en est l'utilité -En représentant les ressources des centres de données comme les serveurs, les équilibreurs de charge, et les sous-réseaux en tant que code, celà permet aux équipes en charge de l'infrastructure d'avoir une seule source de vérité pour toutes les configurations mais aussi de gérer leurs centres de données dans un pipeline [CI](/continuous-integration/)/[CD](/continuous-delivery/), qui implémente la gestion de version et des stratégies de déploiement. +En représentant les ressources des centres de données comme les serveurs, les équilibreurs de charge, et les sous-réseaux en tant que code, celà permet aux équipes en charge de l'infrastructure d'avoir une seule source de vérité pour toutes les configurations mais aussi de gérer leurs centres de données dans un pipeline [CI](/fr/continuous-integration/)/[CD](/fr/continuous-delivery/), qui implémente la gestion de version et des stratégies de déploiement. diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index a94613bacf..cfda648c98 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -8,28 +8,28 @@ tags: ["infrastructure", "fundamental", ""] ## Ce que c'est Kubernetes, souvent abrégé en k8s, est un orchestrateur de conteneurs open source. -Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gère des applications à travers un [système distribué](/distributed-systems/). +Il automatise le cycle de vie des applications conteneurisées sur des infrastructures modernes, fonctionnant comme un "Système d'exploitation de centre de données" qui gère des applications à travers un [système distribué](/fr/distributed-systems/). -Kubernetes planifie la création de [conteneurs](/container/) sur les [nœuds](/nodes/) d'un [cluster](/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications conteneurisées. +Kubernetes planifie la création de [conteneurs](/fr/container/) sur les [nœuds](/fr/nodes/) d'un [cluster](/fr/cluster/), regroupant plusieurs ressources d'infrastructure tel qu'un répartiteur de charge (load balancer), du stockage persistent, etc. pour exécuter des applications conteneurisées. Kubernetes permet l'automatisation et l'extensibilité, permettant aux utilisateurs de déployer des applications de manière déclarative (voir ci-dessous) et reproductible. -Kubernetes est extensible via ses [API](/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. +Kubernetes est extensible via ses [API](/fr/application-programming-interface/), permettant aux utilisateurs expérimentés de Kubernetes de rajouter des possibilités d'automatisation en accord avec leurs besoins. ## Problème auquel il répond -L'automatisation de l'infrastructure et la gestion de configuration déclarative sont des concepts importants depuis longtemps, mais ils sont devenus omniprésents depuis que le [cloud computing](/cloud-computing/) a gagné en popularité. +L'automatisation de l'infrastructure et la gestion de configuration déclarative sont des concepts importants depuis longtemps, mais ils sont devenus omniprésents depuis que le [cloud computing](/fr/cloud-computing/) a gagné en popularité. À mesure que la demande de ressources de calcul augmente et que les organisations ont besoin de plus de capacités avec moins d'ingénieurs, les nouvelles technologies et les méthodes de travail doivent répondre à cette demande. ## Quel en est l'utilité -Comme pour les outils traditionnels d'[infrastructure en tant que code](/infrastructure-as-code/), Kubernetes aide à l'automatisation, mais a l'avantage de fonctionner avec des conteneurs. -Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/virtual-machine/) ou physiques. +Comme pour les outils traditionnels d'[infrastructure en tant que code](/fr/infrastructure-as-code/), Kubernetes aide à l'automatisation, mais a l'avantage de fonctionner avec des conteneurs. +Les conteneurs sont plus résistants aux écarts de configuration que les [machines virtuelles](/fr/virtual-machine/) ou physiques. De plus, Kubernetes fonctionne de manière déclarative, cela veut dire qu'au lieu que des opérateurs demandent à la machine de faire quelque chose, ils décrivent — souvent via un manifeste (p. ex., YAML) — à quoi l'infrastructure devrait ressembler. Kubernetes s'occupe ensuite du "comment". Il en résulte que Kubernetes est extrêmement compatible avec l'infrastructure en tant que code. -Kubernetes s'[auto-répare](/self-healing/) également. +Kubernetes s'[auto-répare](/fr/self-healing/) également. L'état actuel du cluster correspond toujours à l'état désiré par l'opérateur. Si Kubernetes détecte une déviation par rapport à ce qui est décrit dans les fichiers manifestes, un contrôleur Kubernetes va s'en occuper et le corriger. Bien que l'infrastructure utilisée par Kubernetes puisse être en constante évolution, Kubernetes s'adapte constamment et automatiquement aux changements et s'assure qu'elle correspond à l'état souhaité. diff --git a/content/fr/loosely-coupled-architecture.md b/content/fr/loosely-coupled-architecture.md index 8d884dcfa0..34bf738a8d 100644 --- a/content/fr/loosely-coupled-architecture.md +++ b/content/fr/loosely-coupled-architecture.md @@ -7,8 +7,8 @@ tags: ["fundamental", "architecture", "property"] L'architecture faiblement couplée est un type d'architecture où les différents composants d'une application sont construits indépendamment les uns des autres (c'est le paradigme opposé -des [architectures fortement couplées](/tightly-coupled-architectures/)). -Chaque composant, parfois identifié comme un [microservice](/microservices/), est construit pour effectuer une tâche spécifique d'une manière qui lui permet d'être utilisé par d'autres services. +des [architectures fortement couplées](/fr/tightly-coupled-architectures/)). +Chaque composant, parfois identifié comme un [microservice](/fr/microservices/), est construit pour effectuer une tâche spécifique d'une manière qui lui permet d'être utilisé par d'autres services. Cette approche est souvent plus longue à mettre en œuvre que l'architecture fortement couplée mais, elle a plusieurs avantages en particulier lorsque l'application change d'échelle. diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index 1fe5151e01..972657899e 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -6,13 +6,13 @@ tags: ["architecture", "fundamental", ""] ## Ce que c'est -Une architecture en microservices est une approche architecturale qui divise les applications en (micro)[services](/service/) distincts et indépendants, chaque service étant focalisé sur une fonctionnalité spécifique. +Une architecture en microservices est une approche architecturale qui divise les applications en (micro)[services](/fr/service/) distincts et indépendants, chaque service étant focalisé sur une fonctionnalité spécifique. Ces services fonctionnent en étroite collaboration, et l'utilisateur final a l'impression d'utiliser un seul service. Prenons Netflix comme exemple. Son interface vous permet d'accéder, de rechercher et de prévisualiser des vidéos. Ces fonctionnalités sont probablement alimentées par de plus petits services, chacun gérant une fonctionnalité spécifique, telle que l'authentification, la recherche et l'exécution des prévisualisations dans votre navigateur. -Cette approche architecturale permet aux développeurs de déployer de nouvelles fonctionnalités ou de mettre à jour des fonctionnalités beaucoup plus rapidement que si elles étaient toutes fortement couplées, comme dans une [application monolithique](/monolithic-apps/) (voir ci-dessous). +Cette approche architecturale permet aux développeurs de déployer de nouvelles fonctionnalités ou de mettre à jour des fonctionnalités beaucoup plus rapidement que si elles étaient toutes fortement couplées, comme dans une [application monolithique](/fr/monolithic-apps/) (voir ci-dessous). ## Problème auquel il répond @@ -21,10 +21,10 @@ L'augmentation de la demande pour une fonctionnalité particulière n'augmentera Revenons à notre exemple Netflix. Disons qu'après une grosse campagne marketing, Netflix connaît un gros pic d'inscriptions, mais l'utilisation du streaming est restée plus ou moins stable dans les premières heures de la journée. L'augmentation du nombre d'inscriptions exige une plus grande capacité de la part de la fonctionnalité d'inscription. -Traditionnellement (approche monolithique), l'ensemble de l'application devrait être [mise à l'échelle](/scalability/) pour s'adapter à la demande - une utilisation très inefficace des ressources. +Traditionnellement (approche monolithique), l'ensemble de l'application devrait être [mise à l'échelle](/fr/scalability/) pour s'adapter à la demande - une utilisation très inefficace des ressources. Les architectures monolithiques font parfois tomber les développeurs dans des pièges de conception. -Étant donné que tout le code se retrouve au même endroit, il est plus facile de rendre ce code [étroitement couplé](/tightly-coupled-architectures/) et plus difficile d'appliquer le principe de séparation des responsabilités. +Étant donné que tout le code se retrouve au même endroit, il est plus facile de rendre ce code [étroitement couplé](/fr/tightly-coupled-architectures/) et plus difficile d'appliquer le principe de séparation des responsabilités. Les monolithes exigent également souvent que les développeurs comprennent l'ensemble du code avant d'y faire des modifications. L'architecture en microservices est une réponse à ces défis. @@ -33,4 +33,4 @@ L'architecture en microservices est une réponse à ces défis. La séparation des fonctionnalités en différents microservices facilite leur déploiement, leur mise à jour et leur mise à l'échelle de manière indépendante. Cela permet également à différentes équipes de travailler simultanément sur une petite partie d'une application plus grande sans avoir d'impact involontairement négatif sur le reste de l'application. Bien qu'une architecture en microservices résolve de nombreux problèmes, elle crée également des surcoûts opérationnels - le nombre d'éléments que vous devez déployer et gérer augmente considérablement. -De nombreuses [technologies Cloud Natives](/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. +De nombreuses [technologies Cloud Natives](/fr/cloud-native-tech/) visent à faciliter le déploiement et la gestion des microservices. diff --git a/content/fr/monolithic-apps.md b/content/fr/monolithic-apps.md index a52f706657..1c663863f3 100644 --- a/content/fr/monolithic-apps.md +++ b/content/fr/monolithic-apps.md @@ -14,7 +14,7 @@ Avec plus de développeurs qui travaillent sur la même base de code, la probabi ## Problème auquel il répond -Transformer une application en [microservices](/microservices/) augmente la charge de travail - comme il y a plus de choses à tester, déployer et à maintenir opérationel. +Transformer une application en [microservices](/fr/microservices/) augmente la charge de travail - comme il y a plus de choses à tester, déployer et à maintenir opérationel. Au début du cycle de développement d'un produit il peut être avantageux de repousser cette complexité et de construire une application monolithique jusqu'à ce que le produit soit reconnu comme un succès. ## Quelle en est l'utilité diff --git a/content/fr/nodes.md b/content/fr/nodes.md index 6329cef34d..c3ef2624a8 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -10,19 +10,19 @@ tags: ["infrastructure", "fundamental", ""] Un nœud est un ordinateur qui travaille de concert avec d'autres ordinateurs, ou nœuds, pour accomplir une tâche commune. Prenons par exemple votre ordinateur portable, votre modem et votre imprimante. Ils sont tous connectés via votre réseau wifi, communiquant et collaborant ensemble, chacun représentant un nœud. -En [cloud computing](/cloud-computing/), un nœud peut être un ordinateur physique, -un ordinateur virtuel, appelé [VM](/virtual-machine/), ou encore un [conteneur](/container/). +En [cloud computing](/fr/cloud-computing/), un nœud peut être un ordinateur physique, +un ordinateur virtuel, appelé [VM](/fr/virtual-machine/), ou encore un [conteneur](/fr/container/). ## Problème auquel il répond Bien qu'une application puisse s'exécuter sur une seule machine, comme beaucoup le font encore, cela comporte certains risques. En particulier, une défaillance du système sous-jacent va perturber l'application. -Pour résoudre ce problème, les développeurs ont commencé à créer des [applications distribuées](/distributed-apps/) où chaque processus s'exécute sur son propre nœud. -Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'un groupe formant un [cluster](/cluster/), c'est-à-dire un groupe de nœuds qui travaillent ensemble pour atteindre un objectif commun. +Pour résoudre ce problème, les développeurs ont commencé à créer des [applications distribuées](/fr/distributed-apps/) où chaque processus s'exécute sur son propre nœud. +Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'un groupe formant un [cluster](/fr/cluster/), c'est-à-dire un groupe de nœuds qui travaillent ensemble pour atteindre un objectif commun. ## Quel en est l'utilité Un nœud vous fournit une unité de calcul distincte (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. -Dans une plate-forme ou une application [cloud native](/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. +Dans une plate-forme ou une application [cloud native](/fr/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. Idéalement, les nœuds individuels sont indifférenciés, c'est-à-dire que tout nœud d'un type particulier est indiscernable de tout autre nœud du même type. \ No newline at end of file diff --git a/content/fr/reliability.md b/content/fr/reliability.md index 2658220581..6fbc85e1fc 100644 --- a/content/fr/reliability.md +++ b/content/fr/reliability.md @@ -6,6 +6,6 @@ tags: ["fundamental", "property", ""] --- Du point de vue Cloud Native, la fiabilité fait référence à la capacité d'un système à réagir face aux pannes. -Si nous disposons d'un [système distribué](/distributed-systems/) qui continue de fonctionner alors que l'infrastructure change et que des composants unitaires tombent en panne, alors il est fiable. +Si nous disposons d'un [système distribué](/fr/distributed-systems/) qui continue de fonctionner alors que l'infrastructure change et que des composants unitaires tombent en panne, alors il est fiable. En revanche, s'il tombe facilement en panne et que les opérateurs doivent intervenir manuellement pour le maintenir en état de marche, alors il n'est pas fiable. -L'objectif des [applications Cloud Natives](/cloud-native-apps/) est de créer des systèmes intrinsèquement fiables. +L'objectif des [applications Cloud Natives](/fr/cloud-native-apps/) est de créer des systèmes intrinsèquement fiables. diff --git a/content/fr/scalability.md b/content/fr/scalability.md index 947730b1b8..ee2fb373de 100644 --- a/content/fr/scalability.md +++ b/content/fr/scalability.md @@ -7,15 +7,15 @@ tags: ["fundamental", "property", ""] La capacité de mise à l'échelle (ou scalabilité) correspond à la capacité d'un système à s'agrandir. C'est à dire à augmenter la capacité d'un système à faire ce qu'il est supposé faire. -Par exemple, un [cluster](/cluster/) [Kubernetes](/kubernetes/) change d'echelle en augmentant -ou en réduisant le nombre d'applications [conteneurisées](/containerization/), +Par exemple, un [cluster](/fr/cluster/) [Kubernetes](/fr/kubernetes/) change d'echelle en augmentant +ou en réduisant le nombre d'applications [conteneurisées](/fr/containerization/), mais cette scalabilité dépend de plusieurs facteurs. -Combien de [nœuds](/nodes/) possède-t-il, combien de [conteneurs](/container/) peut gérer chaque nœud, +Combien de [nœuds](/fr/nodes/) possède-t-il, combien de [conteneurs](/fr/container/) peut gérer chaque nœud, et combien d'enregistrements et d'opérations le plan de contrôle (control plane) peut-il supporter ? Un système extensible permet de rajouter simplement plus de capacité. On différencie deux types d'extension. -D'un coté, il y a la [mise à l'échelle horizontale](/horizontal-scaling/) qui ajoute des nœuds pour supporter l'augmentation de charge. -À l'opposé, il y a la [mise à l'échelle verticale](/vertical-scaling/) où les nœuds individuels sont rendus plus performants pour permettre plus de transactions +D'un coté, il y a la [mise à l'échelle horizontale](/fr/horizontal-scaling/) qui ajoute des nœuds pour supporter l'augmentation de charge. +À l'opposé, il y a la [mise à l'échelle verticale](/fr/vertical-scaling/) où les nœuds individuels sont rendus plus performants pour permettre plus de transactions (i.e. en ajoutant plus de mémoire ou de CPU à une machine individuelle). Un système extensible est capable de changer facilement pour satisfaire les besoins des utilisateurs. diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index e705315ab9..b9c73560a4 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -7,11 +7,11 @@ tags: ["networking", "", ""] ## Ce que c'est -Dans un monde de [microservices](/microservices/), les applications sont découpées en plusieurs petits services qui communiquent via +Dans un monde de [microservices](/fr/microservices/), les applications sont découpées en plusieurs petits services qui communiquent via le réseau. Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiables, piratables et souvent lents. Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoutent de la -[fiabilité](/reliability/), de l'[observabilité](/observability/) et des fonctionnalités liées à la sécurité de manière uniforme pour tous +[fiabilité](/fr/reliability/), de l'[observabilité](/fr/observability/) et des fonctionnalités liées à la sécurité de manière uniforme pour tous les services. ## Problème auquel il répond diff --git a/content/fr/service.md b/content/fr/service.md index b525b35496..68e1297854 100644 --- a/content/fr/service.md +++ b/content/fr/service.md @@ -9,4 +9,4 @@ Notez bien qu'en informatique, le mot service a plusieurs significations. Dans cette définition, nous nous concentrerons sur la plus traditionnelle : service comme dans microservice. La manière dont les services diffèrent des microservices, voire s'ils diffèrent, est subtil et différentes personnes peuvent avoir des opinions différentes. Pour une définition générale, nous les considérerons équivalents. -Veuillez vous référer à la définition des [microservices](/microservices/). +Veuillez vous référer à la définition des [microservices](/fr/microservices/). diff --git a/content/fr/style-guide/_index.md b/content/fr/style-guide/_index.md index 45153161b5..5b914765d6 100644 --- a/content/fr/style-guide/_index.md +++ b/content/fr/style-guide/_index.md @@ -143,7 +143,7 @@ vision du *quand* et *pourquoi* du concept que vous expliquez. Lorsqu'utilisé dans vos définitions, toujours **rediriger vers des termes existant du Glossaire** (uniquement la première mention du terme doit-être redirigée). -**Exemple**: référez vous à la section "Ce que c'est" de la définition d'un [service mesh](/service-mesh/). +**Exemple**: référez vous à la section "Ce que c'est" de la définition d'un [service mesh](/fr/service-mesh/). Cette dernière fait référence aux définitions de micro-services, service, fiabilité, et observabilité. De plus, elle utilise un exemple de la vie réelle en comparant les enjeux des réseaux dans un environnement micro-services (un concept auquel un non-technique peut difficilement s'identifier) à une problématique de réseau wifi (ce que toute personne possédant un ordinateur peut comprendre). Lorsque cela est possible, tentez de faire cette connexion. @@ -155,7 +155,7 @@ Aussi, assurez-vous d'effectuer une vérification orthographique avant de soumet Afin d'éviter qu'un autre contributeur soumette une PR concernant le terme sur lequel vous travaillez, assurez-vous de vous approprier un ticket (ou d'en créer un) et qu'il vous soit assigné. -Plus d'information sur la documentation de [Comment contribuer](/contribute/). +Plus d'information sur la documentation de [Comment contribuer](/fr/contribute/). Avant de démarrer, veillez à lire quelques termes du Glossaire afin de vous approprier le niveau de détails et de difficulté, ainsi que de l'utilisation judicieuse des exemples. @@ -164,7 +164,7 @@ ainsi que de l'utilisation judicieuse des exemples. Notez que nous ne sommes actuellement que 3 mainteneurs, effectuant ce travail sur notre temps personnel. Occasionnellement, nous serons capables de revoir les termes rapidement; en d'autres occasions, il est possible que cela prenne plus de temps - merci de votre patience. -Si vous avez des questions, n'hésitez pas à nous contacter sur le canal Slack #glossary (pour savoir où et comment le trouver, référez-vous à la section de [Comment contribuer](/contribute/)). +Si vous avez des questions, n'hésitez pas à nous contacter sur le canal Slack #glossary (pour savoir où et comment le trouver, référez-vous à la section de [Comment contribuer](/fr/contribute/)). Notre but est de faire du Glossaire la meilleure des ressources possible. Une fois que vous aurez soumis votre PR, il est possible que nous demandions une ou plusieurs révisions. diff --git a/content/fr/tightly-coupled-architectures.md b/content/fr/tightly-coupled-architectures.md index 62e711addc..d86a89a2b4 100644 --- a/content/fr/tightly-coupled-architectures.md +++ b/content/fr/tightly-coupled-architectures.md @@ -6,7 +6,7 @@ tags: ["fundamental", "architecture", "property"] --- L'architecture fortement couplée est un type d'architecture où un nombre de composants d'application sont interdépendants -(le paradigme opposé est les [architectures faiblement couplées](/loosely-coupled-architecture/)). +(le paradigme opposé est les [architectures faiblement couplées](/fr/loosely-coupled-architecture/)). Celà signifie qu'un changement dans un composant aura sûrement un impact sur les autres composants. Souvent plus simples à mettre en oeuvre que les architectures faiblement couplées, elles peuvent mettre un système à risque par rapport aux erreurs en cascade. @@ -14,7 +14,7 @@ Elles ont également tendance à nécessiter des déploiements synchronisés des ce qui peut devenir un frein à la productivité des développeurs. Les architectures fortement couplées sont une manière assez traditionnelle de construction des applications. -Bien qu'elles ne soient pas nécessairement conformes avec les meilleures pratiques de développement de [microservices](/microservices/) +Bien qu'elles ne soient pas nécessairement conformes avec les meilleures pratiques de développement de [microservices](/fr/microservices/) elles peuvent être utiles dans des circonstances spécifiques. Elles ont tendances à être plus rapides et plus simples à mettre en oeuvre et -à la manière des [applications monolithiques](/monolithic-apps/) elles peuvent accélérer le cycle de développement initial. +à la manière des [applications monolithiques](/fr/monolithic-apps/) elles peuvent accélérer le cycle de développement initial. diff --git a/content/fr/vertical-scaling.md b/content/fr/vertical-scaling.md index 3d7c4a91e0..01e614a0f7 100644 --- a/content/fr/vertical-scaling.md +++ b/content/fr/vertical-scaling.md @@ -7,14 +7,14 @@ tags: ["infrastructure", "", ""] ## Ce que c'est -La mise à l'échelle verticale, également connue sous le nom de "mise à l'échelle vers le haut et vers le bas", est une technique qui consiste à augmenter la capacité d'un système en ajoutant des processeurs et de la mémoire à chaque [nœud](/nodes/) unitaire à mesure que la charge de travail augmente. -Supposons que vous avez un ordinateur avec 4 Go de mémoire et que vous voulez augmenter sa capacité à 16 Go, la mise à l'échelle verticale consiste à passer à un système avec 16 Go de mémoire. (Veuillez vous référer à la [mise à l'échelle horizontale](/horizontal-scaling/) pour une approche différente de mise à l'échelle.) +La mise à l'échelle verticale, également connue sous le nom de "mise à l'échelle vers le haut et vers le bas", est une technique qui consiste à augmenter la capacité d'un système en ajoutant des processeurs et de la mémoire à chaque [nœud](/fr/nodes/) unitaire à mesure que la charge de travail augmente. +Supposons que vous avez un ordinateur avec 4 Go de mémoire et que vous voulez augmenter sa capacité à 16 Go, la mise à l'échelle verticale consiste à passer à un système avec 16 Go de mémoire. (Veuillez vous référer à la [mise à l'échelle horizontale](/fr/horizontal-scaling/) pour une approche différente de mise à l'échelle.) ## Problème auquel il répond -Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/scalability/) le système (ajouter de la capacité au système). -Nous pouvons soit ajouter plus de ressources informatiques aux nœuds existants (mise à l'échelle verticale), soit ajouter plus de nœuds au système ([mise à l'échelle horizontale](/horizontal-scaling/)). -La [capacité de mise à l'échelle](/scalability/) contribue à la compétitivité, à l'efficacité, à la réputation et à la qualité. +Lorsque la demande d'une application dépasse la capacité actuelle de l'instance de cette application, nous devons trouver un moyen de [mettre à l'échelle](/fr/scalability/) le système (ajouter de la capacité au système). +Nous pouvons soit ajouter plus de ressources informatiques aux nœuds existants (mise à l'échelle verticale), soit ajouter plus de nœuds au système ([mise à l'échelle horizontale](/fr/horizontal-scaling/)). +La [capacité de mise à l'échelle](/fr/scalability/) contribue à la compétitivité, à l'efficacité, à la réputation et à la qualité. ## Quel en est l'utilité @@ -24,5 +24,5 @@ La mise à l'échelle verticale augmente la capacité d'une application existant ## Termes liés -* [Mise à l'échelle horizontale (Horizontal Scaling)](/horizontal-scaling/) -* [Mise à l'échelle automatique (Auto Scaling)](/auto-scaling/) +* [Mise à l'échelle horizontale (Horizontal Scaling)](/fr/horizontal-scaling/) +* [Mise à l'échelle automatique (Auto Scaling)](/fr/auto-scaling/) diff --git a/content/fr/virtual-machine.md b/content/fr/virtual-machine.md index c756c2aed3..73a22049c8 100644 --- a/content/fr/virtual-machine.md +++ b/content/fr/virtual-machine.md @@ -9,14 +9,14 @@ tags: ["fundamental", "infrastructure", ""] Une machine virtuelle (VM) est un ordinateur et son système d'exploitation qui n'est pas lié à un matériel particulier. -Les VMs s'appuient sur la [virtualisation](/virtualization/) pour découper un unique ordinateur physique en plusieurs ordinateurs virtuels. +Les VMs s'appuient sur la [virtualisation](/fr/virtualization/) pour découper un unique ordinateur physique en plusieurs ordinateurs virtuels. Cette séparation permet aux entités et aux fournisseurs d'infrastructure de facilement créer et détruire des VMs sans impacter l'infrastructure sous-jacente. ## Problème auquel il répond Les machines virtuelles tirent parti de la virtualisation. -Lorsqu'une [machine physique](/bare-metal-machine/) est liée à un unique système d'exploitation, +Lorsqu'une [machine physique](/fr/bare-metal-machine/) est liée à un unique système d'exploitation, la manière donc les ressources peuvent être utilisées est en quelque sorte limitée. De plus, lorsqu'un système d'exploitation est lié à une unique machine physique, sa disponibilité est directement liée à ce matériel. diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index 89cd37284b..364cce5e49 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -11,9 +11,9 @@ La virtualisation, dans un cadre Cloud Native, est l'exécution de plusieurs systèmes d'exploitation isolés sur un même ordinateur physique, aussi appelé serveur. Ces systèmes d'exploitation isolés et leurs ressources de calcul dédiées (processeur, mémoire et réseau) sont appelées machines virtuelles ou VMs. -Lorsque nous parlons d'une [machine virtuelle](/virtual-machine/), nous parlons d'un ordinateur défini par logiciel. +Lorsque nous parlons d'une [machine virtuelle](/fr/virtual-machine/), nous parlons d'un ordinateur défini par logiciel. C'est-à-dire quelque chose qui ressemble et se comporte comme un vrai ordinateur, mais partage son matériel avec d'autres machines virtuelles. -Le [cloud computing](/cloud-computing/) fonctionne principalement grâce à la virtualisation. +Le [cloud computing](/fr/cloud-computing/) fonctionne principalement grâce à la virtualisation. Par exemple, lorsque vous louez un "ordinateur" auprès d'AWS, cet ordinateur est en fait une machine virtuelle. ## Problème auquel il répond From bce0ae95fcf8505e254fdefe4b133b7bd56484cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 11 Aug 2023 20:10:22 +0200 Subject: [PATCH 209/295] [FR] Fix broken links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/application-programming-interface.md | 2 +- content/fr/container-orchestration.md | 2 +- content/fr/distributed-apps.md | 2 +- content/fr/loosely-coupled-architecture.md | 2 +- content/fr/monolithic-apps.md | 2 +- content/fr/service-mesh.md | 2 +- content/fr/service.md | 2 +- content/fr/tightly-coupled-architectures.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/content/fr/application-programming-interface.md b/content/fr/application-programming-interface.md index 1132f2e516..dc7b88768c 100644 --- a/content/fr/application-programming-interface.md +++ b/content/fr/application-programming-interface.md @@ -23,4 +23,4 @@ Sans un cadre partagé, il est difficile pour les applications de [passer à l' Les APIs permettent aux programmes informatiques ou aux applications d'interagir et de partager des informations de manière définie et compréhensible. Elles sont les éléments constitutifs des applications modernes et elles offrent aux développeurs un moyen d'intégrer les applications entre elles. -Lorsque vous entendez parler de [microservices](/fr/microservices/) travaillant ensemble, vous pouvez en déduire qu'ils interagissent via une API. +Lorsque vous entendez parler de [microservices](/fr/microservices-architecture/) travaillant ensemble, vous pouvez en déduire qu'ils interagissent via une API. diff --git a/content/fr/container-orchestration.md b/content/fr/container-orchestration.md index 6fdbf8b4d9..8439d1110d 100644 --- a/content/fr/container-orchestration.md +++ b/content/fr/container-orchestration.md @@ -13,7 +13,7 @@ L'outil d'orchestration dirige les conteneurs tel un chef d'orchestre, s'assuran ## Problème auquel il répond -Gérer manuellement des [microservices](/fr/microservices), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/fr/distributed-systems) en général — est compliqué, pour ne pas dire impossible. +Gérer manuellement des [microservices](/fr/microservices-architecture), la sécurité, et la communication réseaux à grande échelle — et des [systèmes distribués](/fr/distributed-systems) en général — est compliqué, pour ne pas dire impossible. L'orchestration de conteneurs permet aux utilisateurs d'automatiser toutes ces tâches de gestion. ## Quelle en est l'utilité diff --git a/content/fr/distributed-apps.md b/content/fr/distributed-apps.md index 54eda06d9b..27f3b7a924 100644 --- a/content/fr/distributed-apps.md +++ b/content/fr/distributed-apps.md @@ -8,7 +8,7 @@ tags: ["architecture", "", ""] ## Ce que c'est Une application distribuée est une application dont les fonctionnalités sont découpées en plusieurs parties indépendantes et plus petites. -Les applications distribuées sont généralement composées de [microservices](/fr/microservices/) individuels +Les applications distribuées sont généralement composées de [microservices](/fr/microservices-architecture/) individuels qui s'occupent de différentes problématiques au sein d'une application plus large. Dans un environnement Cloud Native, ces composants individuels s'exécutent généralement en tant que [conteneurs](/fr/container/) sur un [cluster](/fr/cluster/). diff --git a/content/fr/loosely-coupled-architecture.md b/content/fr/loosely-coupled-architecture.md index 34bf738a8d..5872dbfd51 100644 --- a/content/fr/loosely-coupled-architecture.md +++ b/content/fr/loosely-coupled-architecture.md @@ -8,7 +8,7 @@ tags: ["fundamental", "architecture", "property"] L'architecture faiblement couplée est un type d'architecture où les différents composants d'une application sont construits indépendamment les uns des autres (c'est le paradigme opposé des [architectures fortement couplées](/fr/tightly-coupled-architectures/)). -Chaque composant, parfois identifié comme un [microservice](/fr/microservices/), est construit pour effectuer une tâche spécifique d'une manière qui lui permet d'être utilisé par d'autres services. +Chaque composant, parfois identifié comme un [microservice](/fr/microservices-architecture/), est construit pour effectuer une tâche spécifique d'une manière qui lui permet d'être utilisé par d'autres services. Cette approche est souvent plus longue à mettre en œuvre que l'architecture fortement couplée mais, elle a plusieurs avantages en particulier lorsque l'application change d'échelle. diff --git a/content/fr/monolithic-apps.md b/content/fr/monolithic-apps.md index 1c663863f3..f1ef39dcb2 100644 --- a/content/fr/monolithic-apps.md +++ b/content/fr/monolithic-apps.md @@ -14,7 +14,7 @@ Avec plus de développeurs qui travaillent sur la même base de code, la probabi ## Problème auquel il répond -Transformer une application en [microservices](/fr/microservices/) augmente la charge de travail - comme il y a plus de choses à tester, déployer et à maintenir opérationel. +Transformer une application en [microservices](/fr/microservices-architecture/) augmente la charge de travail - comme il y a plus de choses à tester, déployer et à maintenir opérationel. Au début du cycle de développement d'un produit il peut être avantageux de repousser cette complexité et de construire une application monolithique jusqu'à ce que le produit soit reconnu comme un succès. ## Quelle en est l'utilité diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index b9c73560a4..9bbc6f3fa8 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -7,7 +7,7 @@ tags: ["networking", "", ""] ## Ce que c'est -Dans un monde de [microservices](/fr/microservices/), les applications sont découpées en plusieurs petits services qui communiquent via +Dans un monde de [microservices](/fr/microservices-architecture/), les applications sont découpées en plusieurs petits services qui communiquent via le réseau. Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiables, piratables et souvent lents. Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoutent de la diff --git a/content/fr/service.md b/content/fr/service.md index 68e1297854..5a7760a366 100644 --- a/content/fr/service.md +++ b/content/fr/service.md @@ -9,4 +9,4 @@ Notez bien qu'en informatique, le mot service a plusieurs significations. Dans cette définition, nous nous concentrerons sur la plus traditionnelle : service comme dans microservice. La manière dont les services diffèrent des microservices, voire s'ils diffèrent, est subtil et différentes personnes peuvent avoir des opinions différentes. Pour une définition générale, nous les considérerons équivalents. -Veuillez vous référer à la définition des [microservices](/fr/microservices/). +Veuillez vous référer à la définition des [microservices](/fr/microservices-architecture/). diff --git a/content/fr/tightly-coupled-architectures.md b/content/fr/tightly-coupled-architectures.md index d86a89a2b4..14b557371c 100644 --- a/content/fr/tightly-coupled-architectures.md +++ b/content/fr/tightly-coupled-architectures.md @@ -14,7 +14,7 @@ Elles ont également tendance à nécessiter des déploiements synchronisés des ce qui peut devenir un frein à la productivité des développeurs. Les architectures fortement couplées sont une manière assez traditionnelle de construction des applications. -Bien qu'elles ne soient pas nécessairement conformes avec les meilleures pratiques de développement de [microservices](/fr/microservices/) +Bien qu'elles ne soient pas nécessairement conformes avec les meilleures pratiques de développement de [microservices](/fr/microservices-architecture/) elles peuvent être utiles dans des circonstances spécifiques. Elles ont tendances à être plus rapides et plus simples à mettre en oeuvre et à la manière des [applications monolithiques](/fr/monolithic-apps/) elles peuvent accélérer le cycle de développement initial. From d9383037abd054dcf713eb556c11d45684054cbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 11 Aug 2023 20:34:55 +0200 Subject: [PATCH 210/295] [FR] Add missing links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 2 +- content/fr/cloud-computing.md | 2 +- content/fr/infrastructure-as-code.md | 2 +- content/fr/service-mesh.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md index af549e9e63..6986ff3efe 100644 --- a/content/fr/abstraction.md +++ b/content/fr/abstraction.md @@ -5,7 +5,7 @@ category: Property tags: ["fundamental", "", ""] --- -Dans le contexte informatique, une abstraction est une représentation qui masque les détails spécifiques à un consommateur de services (un consommateur étant un programme informatique ou un humain), rendant un système plus générique, et ainsi facilement compréhensible. +Dans le contexte informatique, une abstraction est une représentation qui masque les détails spécifiques à un consommateur de [services](/fr/service/) (un consommateur étant un programme informatique ou un humain), rendant un système plus générique, et ainsi facilement compréhensible. Le système d'exploitation de votre ordinateur portable en est un bon exemple. Il masque tous les détails du fonctionnement de votre ordinateur. Vous n'avez pas besoin d'avoir une compréhension approfondie du processeur, de la mémoire et du fonctionnement des programmes, vous utilisez simplement le système d'exploitation et ce dernier s'occupe des détails. diff --git a/content/fr/cloud-computing.md b/content/fr/cloud-computing.md index 3486af7a2d..eb90b5ab18 100644 --- a/content/fr/cloud-computing.md +++ b/content/fr/cloud-computing.md @@ -24,6 +24,6 @@ en permettant aux organisations d'externaliser une partie de leurs besoins infor Les fournisseurs de cloud permettent aux organisations de louer des ressources informatiques à la demande et de payer à l'utilisation, offrant deux avantages majeurs. Premièrement, les organisations peuvent se concentrer sur leur produit ou service sans avoir à attendre, planifier et dépenser des ressources pour une nouvelle infrastructure physique. -Et deuxièmement, elles peuvent simplement réaliser une [mise à l'échelle ] (/scalability/) de leur infrastructure à la demande, en fonctions de leurs besoins. +Et deuxièmement, elles peuvent simplement réaliser une [mise à l'échelle](/fr/scalability/) de leur infrastructure à la demande, en fonctions de leurs besoins. Le cloud computing permet aux organisations de disposer de l'infrastructure nécessaire, en grande ou en petite quantité. diff --git a/content/fr/infrastructure-as-code.md b/content/fr/infrastructure-as-code.md index 968eab8e19..c09ddfb28a 100644 --- a/content/fr/infrastructure-as-code.md +++ b/content/fr/infrastructure-as-code.md @@ -20,4 +20,4 @@ Les changements manuels sur l'infrastructure ne sont pas reproductibles, affiche ## Quel en est l'utilité -En représentant les ressources des centres de données comme les serveurs, les équilibreurs de charge, et les sous-réseaux en tant que code, celà permet aux équipes en charge de l'infrastructure d'avoir une seule source de vérité pour toutes les configurations mais aussi de gérer leurs centres de données dans un pipeline [CI](/fr/continuous-integration/)/[CD](/fr/continuous-delivery/), qui implémente la gestion de version et des stratégies de déploiement. +En représentant les ressources des centres de données comme les serveurs, les équilibreurs de charge, et les sous-réseaux en tant que code, celà permet aux équipes en charge de l'infrastructure d'avoir une seule source de vérité pour toutes les configurations mais aussi de gérer leurs centres de données dans un pipeline [CI](/continuous-integration/)/[CD](/continuous-delivery/), qui implémente la gestion de version et des stratégies de déploiement. diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index 9bbc6f3fa8..2216433527 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -7,7 +7,7 @@ tags: ["networking", "", ""] ## Ce que c'est -Dans un monde de [microservices](/fr/microservices-architecture/), les applications sont découpées en plusieurs petits services qui communiquent via +Dans un monde de [microservices](/fr/microservices-architecture/), les applications sont découpées en plusieurs petits [services](/fr/service/) qui communiquent via le réseau. Exactement comme votre réseau wifi, les réseaux informatiques sont intrinsèquement non fiables, piratables et souvent lents. Les services mesh répondent à cette problématique en gérant le trafic (i.e., la communication) entre les services et ajoutent de la From 46504ef8e1d49a0a122a55e4acf5b6f42ce712cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Fri, 11 Aug 2023 21:03:12 +0200 Subject: [PATCH 211/295] [FR] Fix general errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/auto-scaling.md | 2 +- content/fr/cloud-native-apps.md | 2 +- content/fr/container-orchestration.md | 2 +- content/fr/nodes.md | 2 +- content/fr/scalability.md | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/fr/auto-scaling.md b/content/fr/auto-scaling.md index 3e2fad508d..930602b992 100644 --- a/content/fr/auto-scaling.md +++ b/content/fr/auto-scaling.md @@ -12,7 +12,7 @@ Les services cloud gérés sont couramment associés à cette fonctionnalité de Auparavant, l'infrastructure et les applications étaient conçues en tenant compte de l'utilisation maximale du système. Cette architecture signifiait que beaucoup de ressources étaient sous-utilisées et inélastiques face à l'évolution de la demande des consommateurs. -L'inélasticité entraînait des coûts plus élevés pour l'entreprise et des pertes d'activité causées par les pannes dues à une demande excessive. +L'inélasticité entraînait des coûts plus élevés pour l'organisation et des pertes d'activité causées par les pannes dues à une demande excessive. En exploitant le cloud, la [virtualisation](/fr/virtualization/) et la [conteneurisation](/fr/containerization/) des applications et leurs dépendances, les organisations peuvent développer des applications qui se mettent à l'échelle selon les demandes des utilisateurs. diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index 1a490742fb..00bba70478 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -10,7 +10,7 @@ tags: ["application", "fundamental", ""] Les applications Cloud Natives sont des applications conçues pour tirer avantage des innovations du [cloud computing](/fr/cloud-computing/). Ces applications s'intègrent facilement avec leurs architectures cloud respectives, en tirant avantage des ressources proposées par le Cloud et de leur capacité de [mise à l'échelle](/fr/scalability/). Ce terme fait aussi référence aux applications qui tirent avantage d'infrastructure pilotée par le cloud computing. -Aujourd'hui, les applications Cloud Natives incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux entreprises. +Aujourd'hui, les applications Cloud Natives incluent les applications qui fonctionnent dans le centre de données des fournisseurs de cloud ainsi que les applications qui tournent sur des plateformes hébergées dans les centres de données internes aux organisations. ## Problème auquel il répond diff --git a/content/fr/container-orchestration.md b/content/fr/container-orchestration.md index 8439d1110d..7c4073e43a 100644 --- a/content/fr/container-orchestration.md +++ b/content/fr/container-orchestration.md @@ -19,6 +19,6 @@ L'orchestration de conteneurs permet aux utilisateurs d'automatiser toutes ces t ## Quelle en est l'utilité Les outils d'orchestration de conteneurs permettent aux utilisateurs de déterminer l'état d'un système. -Tout d'abord, on déclare tel qu'il devrait être (i.e. x conteneurs, y pods, etc...). +Tout d'abord, vous déclarez tel qu'il devrait être (i.e. x conteneurs, y pods, etc...). L'outil d'orchestration va ensuite automatiquement surveiller l'infrastructure et la corriger si son état dévie de l'état déclaré (i.e. ajouter un nouveau conteneur si un autre est tombé en panne). Cette automatisation simplifie nombre des tâches complexes et hautement manuelles qui sont réalisées autrement par les équipes d'ingénieurie, comme l'approvisionnement, le déploiement, la scalabilité (vers le haut ou le bas), la répartition de charge parmi d'autres activités. diff --git a/content/fr/nodes.md b/content/fr/nodes.md index c3ef2624a8..e966918522 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -23,6 +23,6 @@ Ainsi, les nœuds exécutent des applications ou des processus dans le cadre d'u ## Quel en est l'utilité Un nœud vous fournit une unité de calcul distincte (mémoire, processeur, réseau) que vous pouvez attribuer à un cluster. -Dans une plate-forme ou une application [cloud native](/fr/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. +Dans une plate-forme ou une application [Cloud Native](/fr/cloud-native-tech/), un nœud représente une unité unique qui peut effectuer un travail. Idéalement, les nœuds individuels sont indifférenciés, c'est-à-dire que tout nœud d'un type particulier est indiscernable de tout autre nœud du même type. \ No newline at end of file diff --git a/content/fr/scalability.md b/content/fr/scalability.md index ee2fb373de..f0e5011c63 100644 --- a/content/fr/scalability.md +++ b/content/fr/scalability.md @@ -6,7 +6,7 @@ tags: ["fundamental", "property", ""] --- La capacité de mise à l'échelle (ou scalabilité) correspond à la capacité d'un système à s'agrandir. -C'est à dire à augmenter la capacité d'un système à faire ce qu'il est supposé faire. +C'est-à-dire à augmenter la capacité d'un système à faire ce qu'il est supposé faire. Par exemple, un [cluster](/fr/cluster/) [Kubernetes](/fr/kubernetes/) change d'echelle en augmentant ou en réduisant le nombre d'applications [conteneurisées](/fr/containerization/), mais cette scalabilité dépend de plusieurs facteurs. @@ -14,7 +14,7 @@ Combien de [nœuds](/fr/nodes/) possède-t-il, combien de [conteneurs](/fr/conta et combien d'enregistrements et d'opérations le plan de contrôle (control plane) peut-il supporter ? Un système extensible permet de rajouter simplement plus de capacité. -On différencie deux types d'extension. +Nous différencions deux types d'extension. D'un coté, il y a la [mise à l'échelle horizontale](/fr/horizontal-scaling/) qui ajoute des nœuds pour supporter l'augmentation de charge. À l'opposé, il y a la [mise à l'échelle verticale](/fr/vertical-scaling/) où les nœuds individuels sont rendus plus performants pour permettre plus de transactions (i.e. en ajoutant plus de mémoire ou de CPU à une machine individuelle). From a5f97cdbb801ab08e730cf94fb7650419014c777 Mon Sep 17 00:00:00 2001 From: John Lin Date: Mon, 14 Aug 2023 15:35:39 +0800 Subject: [PATCH 212/295] [tw] Localize Shift Left for Traditional Chinese (#2281) Signed-off-by: John Lin --- content/zh-tw/shift-left.md | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 content/zh-tw/shift-left.md diff --git a/content/zh-tw/shift-left.md b/content/zh-tw/shift-left.md new file mode 100644 index 0000000000..b646989dd8 --- /dev/null +++ b/content/zh-tw/shift-left.md @@ -0,0 +1,39 @@ +--- +title: 向左移 +status: Completed +category: 概念 +tags: ["方法論", "", ""] +--- + +## 是什麼 {#what-it-is} + +如果我們將將軟體開發週期想像成一條從左到右依序執行的線, +「向左移」中的「左」指的便是週期中較早的階段。 +向左移是在軟體開發生命週期中的早期階段就進行測試、安全性或開發實踐等, +而避免等到週期的末期才進行的一種實踐。 + +儘管最初是用來指稱早期測試的過程, +但現在向左移也可以應用於軟體開發和 [DevOps](/zh-tw/devops/) 的其他方面,如安全性和部署。 + +## 解決的問題 {#problem-it-addresses} + +如果在開發週期後期或部署後才發現安全問題、錯誤和軟體缺陷, +修復它們可能會變得更加困難且昂貴, +尤其是如果該軟體已經部署到正式環境中。 + +## 如何幫助 {#how-it-helps} + +透過在軟體開發中採用向左移的思維, +團隊可以在整個開發生命週期中進行測試和加強安全性。 +由於測試和安全性的責任由開發團隊共同承擔, +從軟體工程師到品質保證再到維運, +每個人都在確保應用程式的穩定性和安全性。 + +此外,向左移開啟了持續改進的可能性,並且採用了[敏捷式](/zh-tw/agile-software-development/)而不是瀑布式的開發方法。 +團隊可以進行小規模的迭代改進,並儘早識別問題。 +這種方法讓工程師可以提早在設計和架構階段, +就採用安全可靠的開發實踐。 +在整個開發週期中進行測試可以減少軟體發布前所需的測試時間。 + +許多軟體工具和 SaaS 解決方案都有助於團隊朝著向左移前進。 +但向左移也可以透過改進團隊內部的流程和文化變革來實施。 From 8ec031703898e743fc52d0565f18a18ec50b68af Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Sun, 6 Aug 2023 16:38:12 +0800 Subject: [PATCH 213/295] [tw] Localize 'Continuous Delivery' Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/zh-tw/continuous-delivery.md | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 content/zh-tw/continuous-delivery.md diff --git a/content/zh-tw/continuous-delivery.md b/content/zh-tw/continuous-delivery.md new file mode 100644 index 0000000000..245feca4e3 --- /dev/null +++ b/content/zh-tw/continuous-delivery.md @@ -0,0 +1,36 @@ +--- +title: 持續交付 (CD) +status: Completed +category: 概念 +tags: ["應用程式", "方法論", ""] +--- + +## 是什麼 {#what-it-is} + +持續交付,通常縮寫為 CD,是一套將原始碼變更自動部署到驗收環境中的實踐, +(或者,在持續部署的情況下,部署到正式環境中)。 +CD 關鍵是包括確定軟體在部署前 +得到充分測試的程式,並提供一種在必要時退回修改的方法。 +持續整合(CI)是實現持續交付的第一步 +(也就是說,在測試和部署之前,變更必須乾淨地合併)。 + +## 解決的問題 {#problem-it-addresses} + +大規模部署具有 [可靠性](/zh-tw/reliability/) 的更新會成為一個問題。 +理想情況下,我們會更頻繁地部署,為終端使用者提供更好的價值。 +然而,手動操作會使每一個變化都轉變為高額的交易成本。 +過去,為了避免上述成本,企業發布的頻率較低, +在一次的部署中包含更多的變更,同時也會增加出錯的風險。 + +## 如何幫助 {#how-it-helps} + +CD 策略建立了一個完全自動化的生產路徑, +使用各種部署策略測試和部署軟體, +如 [金絲雀部署](/zh-tw/canary-deployment/) 或 [藍綠部署](/zh-tw/blue-green-deployment) 來進行發布。 +這使得開發人員可以頻繁地部署程式碼,讓他們放心地確保新的修訂版已經過測試。 +通常情況下,CD 策略中使用基於主幹的開發方式,而不是功能分支或拉取要求。 + +## 相關術語 {#related-terms} + +* [持續整合](/zh-tw/continuous-integration/) +* [持續部署](/zh-tw/continuous-deployment/) From fd4764d0a5a598304fee580121b1e6a15ac5bb72 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Fri, 11 Aug 2023 00:32:20 +0800 Subject: [PATCH 214/295] [tw] Add content/zh-tw/pod.md Signed-off-by: HungWei Chiu --- content/zh-tw/pod.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 content/zh-tw/pod.md diff --git a/content/zh-tw/pod.md b/content/zh-tw/pod.md new file mode 100644 index 0000000000..2f688c022b --- /dev/null +++ b/content/zh-tw/pod.md @@ -0,0 +1,33 @@ +--- +title: Pod +status: Completed +category: 概念 +tags: ["基礎設施", "基本原理", ""] +--- + +## 是什麼 {#what-it-is} + +Pod 是 [Kubernetes](/zh-tw/kubernetes/) 環境中最基本的可部署單位。 +它代表部署和管理容器化應用程式的必要組件。 +每個 Pod 包含一個應用程式實例,並且可以由一個或是多個[容器](/zh-tw/container/) 所組成。 +Kubernetes 將 Pod 視為大規模部署的一部分進行管理,並且可根據需求[垂直](/zh-tw/vertical-scaling/)或是[水平](/zh-tw/horizontal-scaling/)地擴展 Pod 的規模。 + +## 解決的問題 {#problem-it-addresses} + +雖然容器通常作為獨立的單位運行以及控制特定的工作負載, +但是某些情況下,容器間需要以緊密耦合的方式進行互動與被控制。 + +如果將這些密切相關的容器單獨管理,則會導致冗余的管理任務出現。 +舉例來說,操作者必須反覆地確保這些容器彼此的部署狀態以確保他們保持在一起。 +此外這些密切相關的容器其生命週期必須一致同步的被處理,但是卻只能各別單獨管理。 + +## 如何幫助 {#how-it-helps} + +Pod 將緊密關係的容器們打包成一個單一的單位,此舉大幅度的簡化了容器操作。 +譬如,輔助用容器通常都會伴隨主要容器一起使用已加入額外功能或是設定全域設定。 +範例包含將基本設定給注入或是套用到主要容器的容器, +以 sidecar 來處理網路流量與路由相關的模式(參見 [服務網格](/zh-tw/service-mesh/)), +或是幫忙收集其他容器日誌的容器。 + +記憶體和 CPU 配置可以在 Pod 層級去定義,使得容器們可以彈性的方式去共享資源或是針對每個容器去設定。 + From 0c57b10be0467a9da988288bfee4f77a82c22ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Mon, 14 Aug 2023 21:11:34 +0200 Subject: [PATCH 215/295] [FR] Localize tags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/abstraction.md | 2 +- content/fr/agile-software-development.md | 2 +- content/fr/api-gateway.md | 2 +- content/fr/application-programming-interface.md | 2 +- content/fr/cloud-computing.md | 2 +- content/fr/cloud-native-apps.md | 2 +- content/fr/cloud-native-tech.md | 2 +- content/fr/cluster.md | 2 +- content/fr/container.md | 2 +- content/fr/devops.md | 2 +- content/fr/idempotence.md | 2 +- content/fr/immutable-infrastructure.md | 2 +- content/fr/infrastructure-as-code.md | 2 +- content/fr/kubernetes.md | 2 +- content/fr/loosely-coupled-architecture.md | 2 +- content/fr/microservices-architecture.md | 2 +- content/fr/monolithic-apps.md | 2 +- content/fr/nodes.md | 2 +- content/fr/observability.md | 2 +- content/fr/reliability.md | 2 +- content/fr/scalability.md | 2 +- content/fr/self-healing.md | 2 +- content/fr/service-mesh.md | 2 +- content/fr/service.md | 2 +- content/fr/tightly-coupled-architectures.md | 2 +- content/fr/virtual-machine.md | 2 +- content/fr/virtualization.md | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/content/fr/abstraction.md b/content/fr/abstraction.md index 6986ff3efe..89245cfbc4 100644 --- a/content/fr/abstraction.md +++ b/content/fr/abstraction.md @@ -2,7 +2,7 @@ title: Abstraction status: Completed category: Property -tags: ["fundamental", "", ""] +tags: ["fondamental", "", ""] --- Dans le contexte informatique, une abstraction est une représentation qui masque les détails spécifiques à un consommateur de [services](/fr/service/) (un consommateur étant un programme informatique ou un humain), rendant un système plus générique, et ainsi facilement compréhensible. diff --git a/content/fr/agile-software-development.md b/content/fr/agile-software-development.md index 84f9d63530..e1356610b8 100644 --- a/content/fr/agile-software-development.md +++ b/content/fr/agile-software-development.md @@ -2,7 +2,7 @@ title: Développement Agile de logiciels status: Completed category: concept -tags: ["methodology", "", ""] +tags: ["méthodologie", "", ""] --- ## Ce que c'est diff --git a/content/fr/api-gateway.md b/content/fr/api-gateway.md index 67a481e30d..9ea41b7d69 100644 --- a/content/fr/api-gateway.md +++ b/content/fr/api-gateway.md @@ -2,7 +2,7 @@ title: Passerelle d'API (API Gateway) status: Completed category: technology -tags: ["networking", "", ""] +tags: ["réseau", "", ""] --- ## Ce que c'est diff --git a/content/fr/application-programming-interface.md b/content/fr/application-programming-interface.md index dc7b88768c..8e9faef426 100644 --- a/content/fr/application-programming-interface.md +++ b/content/fr/application-programming-interface.md @@ -2,7 +2,7 @@ title: Interface de Programmation d'Application (API) status: Completed category: technology -tags: ["architecture", "fundamental", ""] +tags: ["architecture", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/cloud-computing.md b/content/fr/cloud-computing.md index eb90b5ab18..779d1140f3 100644 --- a/content/fr/cloud-computing.md +++ b/content/fr/cloud-computing.md @@ -2,7 +2,7 @@ title: Cloud Computing status: Completed category: concept -tags: ["infrastructure", "fundamental", ""] +tags: ["infrastructure", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/cloud-native-apps.md b/content/fr/cloud-native-apps.md index 00bba70478..681d9437ba 100644 --- a/content/fr/cloud-native-apps.md +++ b/content/fr/cloud-native-apps.md @@ -2,7 +2,7 @@ title: Applications Cloud Natives status: Completed category: concept -tags: ["application", "fundamental", ""] +tags: ["application", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/cloud-native-tech.md b/content/fr/cloud-native-tech.md index 0d773101e7..501c83fb53 100644 --- a/content/fr/cloud-native-tech.md +++ b/content/fr/cloud-native-tech.md @@ -2,7 +2,7 @@ title: Technologies Cloud Natives status: Completed category: Concept -tags: ["fundamental", "", ""] +tags: ["fondamental", "", ""] --- ## Ce que c'est diff --git a/content/fr/cluster.md b/content/fr/cluster.md index 95028db062..ced7e68ff9 100644 --- a/content/fr/cluster.md +++ b/content/fr/cluster.md @@ -2,7 +2,7 @@ title: Cluster status: Completed category: Concept -tags: ["infrastructure", "fundamental", ""] +tags: ["infrastructure", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/container.md b/content/fr/container.md index 971636c17a..76ced13b29 100644 --- a/content/fr/container.md +++ b/content/fr/container.md @@ -2,7 +2,7 @@ title: Conteneurs status: Completed category: technology -tags: ["application", "fundamental", ""] +tags: ["application", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/devops.md b/content/fr/devops.md index 59d844fc21..5141cd7e41 100644 --- a/content/fr/devops.md +++ b/content/fr/devops.md @@ -2,7 +2,7 @@ title: DevOps status: Completed category: concept -tags: ["methodology", "", ""] +tags: ["méthodologie", "", ""] --- diff --git a/content/fr/idempotence.md b/content/fr/idempotence.md index cc20e3deda..8589c6512f 100644 --- a/content/fr/idempotence.md +++ b/content/fr/idempotence.md @@ -2,7 +2,7 @@ title: Idempotence status: Completed category: Property -tags: ["property", "", ""] +tags: ["propriété", "", ""] --- En mathématiques ou en informatique, l'idempotence décrit une opération qui aboutit toujours au même résultat, diff --git a/content/fr/immutable-infrastructure.md b/content/fr/immutable-infrastructure.md index afbc1e50bb..c89b953d65 100644 --- a/content/fr/immutable-infrastructure.md +++ b/content/fr/immutable-infrastructure.md @@ -2,7 +2,7 @@ title: Infrastructure immuable status: Completed category: property -tags: ["infrastructure", "property", ""] +tags: ["infrastructure", "propriété", ""] --- L'infrastructure immuable fait référence à l'infrastructure informatique ([machines virtuelles](/fr/virtual-machine/), [conteneurs](/fr/container/), équipements réseau) qui ne peut pas être modifiée une fois déployée. diff --git a/content/fr/infrastructure-as-code.md b/content/fr/infrastructure-as-code.md index c09ddfb28a..5c3311a43f 100644 --- a/content/fr/infrastructure-as-code.md +++ b/content/fr/infrastructure-as-code.md @@ -2,7 +2,7 @@ title: Infrastructure en tant que code status: Completed category: concept -tags: ["infrastructure", "methodology", ""] +tags: ["infrastructure", "méthodologie", ""] --- ## Ce que c'est diff --git a/content/fr/kubernetes.md b/content/fr/kubernetes.md index cfda648c98..4ca9953bba 100644 --- a/content/fr/kubernetes.md +++ b/content/fr/kubernetes.md @@ -2,7 +2,7 @@ title: Kubernetes status: Completed category: technology -tags: ["infrastructure", "fundamental", ""] +tags: ["infrastructure", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/loosely-coupled-architecture.md b/content/fr/loosely-coupled-architecture.md index 5872dbfd51..eb352d9095 100644 --- a/content/fr/loosely-coupled-architecture.md +++ b/content/fr/loosely-coupled-architecture.md @@ -2,7 +2,7 @@ title: Architecture Faiblement Couplée status: Completed category: Property -tags: ["fundamental", "architecture", "property"] +tags: ["fondamental", "architecture", "propriété"] --- L'architecture faiblement couplée est un type d'architecture où les différents composants diff --git a/content/fr/microservices-architecture.md b/content/fr/microservices-architecture.md index 972657899e..23ca0e22b6 100644 --- a/content/fr/microservices-architecture.md +++ b/content/fr/microservices-architecture.md @@ -1,7 +1,7 @@ --- title: Architecture en Microservices status: Completed -tags: ["architecture", "fundamental", ""] +tags: ["architecture", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/monolithic-apps.md b/content/fr/monolithic-apps.md index f1ef39dcb2..6548b2ca25 100644 --- a/content/fr/monolithic-apps.md +++ b/content/fr/monolithic-apps.md @@ -2,7 +2,7 @@ title: Applications Monolithiques status: Completed category: concept -tags: ["architecture", "fundamental", ""] +tags: ["architecture", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/nodes.md b/content/fr/nodes.md index e966918522..7eeb3f3a13 100644 --- a/content/fr/nodes.md +++ b/content/fr/nodes.md @@ -2,7 +2,7 @@ title: Nœud status: Completed category: Concept -tags: ["infrastructure", "fundamental", ""] +tags: ["infrastructure", "fondamental", ""] --- ## Ce que c'est diff --git a/content/fr/observability.md b/content/fr/observability.md index 85c27b81ed..7763ec83db 100644 --- a/content/fr/observability.md +++ b/content/fr/observability.md @@ -2,7 +2,7 @@ title: Observabilité status: Completed category: concept -tags: ["property", "", ""] +tags: ["propriété", "", ""] --- L'observabilité est une propriété des systèmes qui définit le degré auquel le système peut générer des informations exploitables. diff --git a/content/fr/reliability.md b/content/fr/reliability.md index 6fbc85e1fc..e658543ffc 100644 --- a/content/fr/reliability.md +++ b/content/fr/reliability.md @@ -2,7 +2,7 @@ title: Fiabilité status: Completed category: property -tags: ["fundamental", "property", ""] +tags: ["fondamental", "propriété", ""] --- Du point de vue Cloud Native, la fiabilité fait référence à la capacité d'un système à réagir face aux pannes. diff --git a/content/fr/scalability.md b/content/fr/scalability.md index f0e5011c63..7d65f97c3b 100644 --- a/content/fr/scalability.md +++ b/content/fr/scalability.md @@ -2,7 +2,7 @@ title: Capacité de mise à l'échelle (Scalabilité) status: Completed category: property -tags: ["fundamental", "property", ""] +tags: ["fondamental", "propriété", ""] --- La capacité de mise à l'échelle (ou scalabilité) correspond à la capacité d'un système à s'agrandir. diff --git a/content/fr/self-healing.md b/content/fr/self-healing.md index a23a2d6c46..dc8ef98754 100644 --- a/content/fr/self-healing.md +++ b/content/fr/self-healing.md @@ -2,7 +2,7 @@ title: Auto-réparant status: Completed category: property -tags: ["infrastructure", "property"] +tags: ["infrastructure", "propriété"] --- diff --git a/content/fr/service-mesh.md b/content/fr/service-mesh.md index 2216433527..bdbcd0e3f9 100644 --- a/content/fr/service-mesh.md +++ b/content/fr/service-mesh.md @@ -2,7 +2,7 @@ title: Maillage de services (Service Mesh) status: Completed category: technology -tags: ["networking", "", ""] +tags: ["réseau", "", ""] --- ## Ce que c'est diff --git a/content/fr/service.md b/content/fr/service.md index 5a7760a366..1b13a59d07 100644 --- a/content/fr/service.md +++ b/content/fr/service.md @@ -2,7 +2,7 @@ title: Service status: Completed category: concept -tags: ["application", "fundamental", ""] +tags: ["application", "fondamental", ""] --- Notez bien qu'en informatique, le mot service a plusieurs significations. diff --git a/content/fr/tightly-coupled-architectures.md b/content/fr/tightly-coupled-architectures.md index 14b557371c..4705edbabb 100644 --- a/content/fr/tightly-coupled-architectures.md +++ b/content/fr/tightly-coupled-architectures.md @@ -2,7 +2,7 @@ title: Architectures Fortement Couplées status: Completed category: Property -tags: ["fundamental", "architecture", "property"] +tags: ["fondamental", "architecture", "propriété"] --- L'architecture fortement couplée est un type d'architecture où un nombre de composants d'application sont interdépendants diff --git a/content/fr/virtual-machine.md b/content/fr/virtual-machine.md index 73a22049c8..3157c8bf28 100644 --- a/content/fr/virtual-machine.md +++ b/content/fr/virtual-machine.md @@ -2,7 +2,7 @@ title: Machine Virtuelle status: Completed category: Technology -tags: ["fundamental", "infrastructure", ""] +tags: ["fondamental", "infrastructure", ""] --- ## Ce que c'est diff --git a/content/fr/virtualization.md b/content/fr/virtualization.md index 364cce5e49..4db94c2323 100644 --- a/content/fr/virtualization.md +++ b/content/fr/virtualization.md @@ -2,7 +2,7 @@ title: Virtualisation status: completed category: technology -tags: ["fundamental", "infrastructure", "methodology"] +tags: ["fondamental", "infrastructure", "méthodologie"] --- ## Ce que c'est From 25554372daa1233da1102e87628fa4b1303b59e9 Mon Sep 17 00:00:00 2001 From: akshat sharma Date: Tue, 15 Aug 2023 15:30:22 +0530 Subject: [PATCH 216/295] [EN] add Runtime (#2033) * [EN] New Term- Runtime Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Nate W. Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Nate W. Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Nate W. Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Jorge O. Castro Signed-off-by: Noah Ispas * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Jorge O. Castro * fix: cut out examples Signed-off-by: Jorge O. Castro * fix: add section on the problem it addresses Signed-off-by: Jorge O. Castro * Update runtime.md removed empty lines Signed-off-by: Noah Ispas * Update content/en/runtime.md Signed-off-by: Noah Ispas * Update content/en/runtime.md Signed-off-by: Noah Ispas * Update runtime.md Fix spelling, the rest depends on this landing: https://github.com/cncf/glossary/pull/2244 Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Jorge O. Castro * add cgroups, namespaces, and orchestrator to wordlist Signed-off-by: Jorge O. Castro * Update content/en/runtime.md Signed-off-by: Nate W * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Nate W * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Nate W * Update content/en/runtime.md Co-authored-by: Nate W Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Akshat Sharma * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Noah Ispas * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Noah Ispas * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Noah Ispas * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update runtime.md Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/runtime.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Noah Ispas * Update content/en/runtime.md Co-authored-by: Noah Ispas Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> --------- Signed-off-by: Akshat Sharma Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Noah Ispas Signed-off-by: Jorge O. Castro Signed-off-by: Nate W Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Co-authored-by: Nate W. Co-authored-by: Noah Ispas Co-authored-by: Jorge O. Castro --- content/en/runtime.md | 37 +++++++++++++++++++++++++++++++++++++ wordlist.txt | 5 +++++ 2 files changed, 42 insertions(+) create mode 100644 content/en/runtime.md diff --git a/content/en/runtime.md b/content/en/runtime.md new file mode 100644 index 0000000000..5ab304cad1 --- /dev/null +++ b/content/en/runtime.md @@ -0,0 +1,37 @@ +--- +title: Runtime +status: Completed +category: concept +tags: ["application", "", ""] +--- + +## What it is + +A runtime, in general, executes a piece of software. +It is an [abstraction](/abstraction/) of the underlying operating system that translates the program's commands into respective actions for the operating system. + +In the context of [cloud native](/cloud-native-apps/), _runtime_ generally refers to container runtime. +A container runtime specifically implements the [Open Container Initiative](https://opencontainers.org/) specification to ensure consistent handling around different container orchestration technologies. + +## Problem it addresses + +Without the abstraction of a container runtime, the application would have to deal with all the mechanics of each operating system, increasing the complexity of running the app. + +## How it helps +Container runtimes are a necessary component of container orchestrators such as Kubernetes. +They handle the container lifecycle, which does mainly three things. +First, it defines how container images are specified and how the runtime can retrieve them. +Second, they handle how these images are unpacked, layered, mounted, and executed. +Furthermore, runtimes manage hardware resources taking care of all these operating system-level actions. +These include resource allocation and isolation. +Over time, different container runtime products evolved, leading to the OCI Specification, +which became the standard for container runtimes. + +Introducing this standard allows end users to combine any OCI-compliant runtime with any OCI-compliant container orchestrator (like Kubernetes). + +## Related terms + +- [Cloud Native](https://glossary.cncf.io/cloud-native-apps/) +- [Containerization](https://glossary.cncf.io/containerization/) +- [Container Orchestration](https://glossary.cncf.io/container-orchestration/) +- [Microservices Architecture](https://glossary.cncf.io/microservices-architecture/) diff --git a/wordlist.txt b/wordlist.txt index 33778f283f..53d4a71a84 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -29,6 +29,8 @@ cd cdn changelog chatbot +cgroup +cgroups cio cka ckad @@ -131,12 +133,15 @@ mkdn mtls multitenancy multitenant +namespace +namespaces navbar observability oci oliveira opencontainers orchestrator +orchestrators overdemand overprivileged paas From 3783ad7679a23bd5c2920326791bf8a0151102b9 Mon Sep 17 00:00:00 2001 From: Maryam Tavakkoli Date: Thu, 17 Aug 2023 18:13:03 +0300 Subject: [PATCH 217/295] [EN] add eBPF (#2050) * [EN] Add new term (eBPF) Resolves #1448 Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update ebpf.md Added semantic line breaks Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: MaryamTavakkoli * Apply suggested editions Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Maryam Tavakkoli Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Maryam Tavakkoli Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Maryam Tavakkoli Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Maryam Tavakkoli Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Maryam Tavakkoli Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Nate W. Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Nate W. Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Nate W. Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Nate W. Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Nate W. Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Nate W. Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update wordlist.txt Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Noah Ispas Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Noah Ispas Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Noah Ispas Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Noah Ispas Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update ebpf.md Signed-off-by: Maryam Tavakkoli * Update wordlist.txt Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Maryam Tavakkoli * Update content/en/ebpf.md Signed-off-by: Noah Ispas * Update wordlist.txt Signed-off-by: Noah Ispas * Update wordlist.txt Signed-off-by: Noah Ispas --------- Signed-off-by: Maryam Tavakkoli Signed-off-by: MaryamTavakkoli Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Noah Ispas Co-authored-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Co-authored-by: Nate W. Co-authored-by: Noah Ispas --- content/en/ebpf.md | 41 +++++++++++++++++++++++++++++++++++++++++ wordlist.txt | 4 ++++ 2 files changed, 45 insertions(+) create mode 100644 content/en/ebpf.md diff --git a/content/en/ebpf.md b/content/en/ebpf.md new file mode 100644 index 0000000000..e46eaef503 --- /dev/null +++ b/content/en/ebpf.md @@ -0,0 +1,41 @@ +--- +title: eBPF +status: Completed +category: architecture +--- + +## What it is + +eBPF, or extended Berkeley Packet Filter, is a technology that allows small, sandboxed programs or scripts to run in the kernel space of a Linux system without having to change the kernel's source code or load Linux kernel modules. + +A Linux system has two spaces: the kernel and the user space. +The kernel represents the operating system's core and is the only part +with unlimited access to the hardware. + +Applications reside in the user space, and when they need higher permissions, +they send a request to the kernel. +For applications that require more flexibility, such as direct hardware +access, the kernel can be extended via what is known as the "Linux +kernel modules" approach. This approach extends the kernel's default functionality, + allowing applications deeper access to the underlying components. + However, this approach also introduces security risks, making eBPF an attractive alternative. + +## Problem it addresses +Typically, applications run in the user space, and if the application requires some privileges from the kernel (e.g., to access some hardware), +it requests it from the kernel via a so-called "system call." +In most cases, this approach works just fine. However, there are instances where developers require more flexibility for low-level system access. +Observability, security, and networking features are good examples. +To achieve that, we can use Linux kernel modules, extending the kernel base without modifying the kernel source code. +While there are benefits to using Linux kernel modules, it also introduces security risks. +Because they operate within the kernel space, Linux kernel modules can crash the kernel, and when the kernel crashes, so does the entire machine. +Additionally, kernel modules have elevated privileges and direct access to system resources. And if not properly secured, attackers can exploit these. + +## How it helps +eBPF provides a more controlled and contained environment for executing user-defined programs than Linux Kernel modules. +It runs in a sandboxed environment within the kernel, providing isolation and mitigating risk. +If a vulnerability or flaw is exploited in an eBPF program, its impact is generally limited to the sandboxed environment. +Moreover, before an eBPF program can start running in the kernel, it has to pass some verifications. +The verifier component checks the eBPF program for potential safety violations, +such as out-of-bounds memory access, infinite loops, and unauthorized kernel functions. +This way, it ensures the program won't enter an infinite loop and cause a kernel crash. +These safety controls make eBPF a more secure option to run applications in the Linux kernel than the Linux kernel modules. diff --git a/wordlist.txt b/wordlist.txt index 53d4a71a84..3e2eeb12c4 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -68,6 +68,7 @@ digitalocean dockerfile dockerhub docstrings +eBPF edumco emoji engineerbetter @@ -169,6 +170,7 @@ runtime runtimeerror runtimes saas +sandboxed saneheaders sbates scalability @@ -205,6 +207,8 @@ unencrypted utf valueerror vcs +verifications +verifier virtualized virtualizing vm From 4a131a2a5464e056e47ac9d253d1e575377571b1 Mon Sep 17 00:00:00 2001 From: gamerslouis <32395144+gamerslouis@users.noreply.github.com> Date: Sun, 20 Aug 2023 14:59:56 +0800 Subject: [PATCH 218/295] Update content/zh-tw/abstraction.md (#2154) Add content/zh-tw/abstraction.md Signed-off-by: gamerslouis Co-authored-by: Phil Huang --- content/zh-tw/abstraction.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 content/zh-tw/abstraction.md diff --git a/content/zh-tw/abstraction.md b/content/zh-tw/abstraction.md new file mode 100644 index 0000000000..64d2db5035 --- /dev/null +++ b/content/zh-tw/abstraction.md @@ -0,0 +1,20 @@ +--- +title: 抽象 +status: Completed +category: 特性 +tags: ["基本原理", "", ""] +--- + +在計算機的背景中,抽象是一種表示方式,它將細節隱藏起來, +讓[服務](/zh-tw/service/)的使用者(包括電腦程式和人類)能夠更容易理解系統並使其更通用。 +一個很好的例子是您的筆記型電腦的作業系統(OS)。 +它抽象化您的計算機運作的所有細節。 +您不需要了解 CPU、記憶體以及程式如何運作, +您只需操作作業系統,作業系統會處理這些細節。 +所有細節都被隱藏在作業系統的「幕後」或抽象之後。 + +系統通常具有多個抽象層。 +這顯著簡化了開發過程。 +在程式設計時,開發人員建立與特定抽象層兼容的元件, +而不需要擔心底層的具體細節及差異。 +不論底層是什麼,只要與抽象層兼容,元件就能在系統中運作。 From f88f414a36935ee15ec42d0131a291634a7a57f7 Mon Sep 17 00:00:00 2001 From: Rafael Natali <40840504+rafaelmnatali@users.noreply.github.com> Date: Sun, 20 Aug 2023 14:43:13 +0100 Subject: [PATCH 219/295] add pt-br/continuous-deployment (#2298) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add pt-br/continuous-deployment Signed-off-by: Rafael Natali * update link to entrega continua Signed-off-by: Rafael Natali * update o que é section Signed-off-by: Rafael Natali --------- Signed-off-by: Rafael Natali --- content/pt-br/continuous-deployment.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/pt-br/continuous-deployment.md diff --git a/content/pt-br/continuous-deployment.md b/content/pt-br/continuous-deployment.md new file mode 100644 index 0000000000..cec0ebfb24 --- /dev/null +++ b/content/pt-br/continuous-deployment.md @@ -0,0 +1,23 @@ +--- +title: Implantaçāo Contínua +status: Completed +category: conceito +tags: ["aplicação", "metodologia", ""] +--- + +## O que é + +Implantação contínua (continuous deployment - CD), vai um passo além da entrega contínua ao implantar o software finalizado diretamente na produção. A implantação contínua anda de mãos dadas com a [entrega contínua](/pt-br/continuous-delivery/) e é frequentemente referida como _CI/CD_. O processo de CI testa se as alterações feitas em um determinado aplicativo são válidas, e o processo de CD implanta automaticamente as mudanças de código através dos ambientes de uma organização, desde teste até a produção. + +## Problema relacionado + +Lançar novas versões de software pode ser um processo trabalhoso e propenso a erros. Além disso, muitas vezes é algo que as organizações só desejam fazer com pouca frequência para evitar incidentes de produção e reduzir a quantidade de tempo em que os engenheiros precisam estar disponíveis fora do horário comercial regular. Modelos tradicionais de implantação de software deixam as organizações em um ciclo vicioso em que o processo de lançamento de software não atende às necessidades organizacionais de estabilidade e velocidade de recursos. + +## Como isso ajuda + +Automatizando o ciclo de lançamento e forçando as organizações a lançar na produção com mais frequência, a CD faz pelo time de operações o que a CI fez pelos times de desenvolvimento. Especificamente, ela obriga os times de operações a automatizar as partes dolorosas e propensas a erros das implantações de produção, reduzindo o risco geral. Isso também torna as organizações mais aptas a aceitar e se adaptar às mudanças de produção, o que resulta em maior estabilidade. + +## Termos relacionados + +* [Integração Contínua](/pt-br/continuous-integration/) +* [Entrega Contínua (CD)](/pt-br/continuous-delivery/) \ No newline at end of file From 1f50060333d3a05bd66983c3ff3ea5f51a9b8fef Mon Sep 17 00:00:00 2001 From: John Lin Date: Sun, 20 Aug 2023 08:19:30 +0800 Subject: [PATCH 220/295] Improve the transaltion for "How it helps" for Traditional Chinese The file content/zh-tw/style-guide/_index.md was not updated because it's out of sync with the English version. It should be updated in another PR. Signed-off-by: John Lin --- content/zh-tw/canary-deployment.md | 2 +- content/zh-tw/cloud-computing.md | 2 +- content/zh-tw/cloud-native-tech.md | 2 +- content/zh-tw/cluster.md | 4 ++-- content/zh-tw/container-orchestration.md | 2 +- content/zh-tw/container.md | 4 ++-- content/zh-tw/continuous-delivery.md | 2 +- content/zh-tw/continuous-integration.md | 2 +- content/zh-tw/devops.md | 2 +- content/zh-tw/devsecops.md | 4 ++-- content/zh-tw/function-as-a-service.md | 2 +- content/zh-tw/pod.md | 2 +- content/zh-tw/service-mesh.md | 2 +- content/zh-tw/shift-left.md | 2 +- content/zh-tw/zero-trust-architecture.md | 4 ++-- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/content/zh-tw/canary-deployment.md b/content/zh-tw/canary-deployment.md index 845092af50..05993e5b67 100644 --- a/content/zh-tw/canary-deployment.md +++ b/content/zh-tw/canary-deployment.md @@ -21,7 +21,7 @@ tags: ["方法論", "應用程式", ""] 無論測試策略有多嚴謹,總是會在正式環境中會發現一些錯誤。 將 100% 流量從應用程式的一個版本完全切換到另一個版本,可能會導致更嚴重的失敗。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 金絲雀部署讓企業在大量流量轉移到新版本以前,可以查看新版本軟體在實際場景中使用的情形。 這種策略讓企業能夠最大限度地減少停機時間,並在新部署出現問題時快速退回上個版本。 diff --git a/content/zh-tw/cloud-computing.md b/content/zh-tw/cloud-computing.md index 92f932b2e8..94dff84e85 100644 --- a/content/zh-tw/cloud-computing.md +++ b/content/zh-tw/cloud-computing.md @@ -13,6 +13,6 @@ tags: ["方法論", "基礎設施", ""] 普遍來說,當組織需要擴展其運算資源時,會面臨兩個主要挑戰:一方面是購買、支援和設計新的設施來托管物理伺服器和網路,另一方面則是擴充和維護現有設施。透過雲端運算,組織能夠透過外包部分的運算需求以解決這些考驗。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 雲端供應商讓組織可以按需租用計算資源並根據使用情況付費,從而帶來兩大優勢。第一是組織可以專注於產品或服務,無需等待、計劃和投入資源於新的物理基礎設施。其次,組織可以根據實際需求隨時[擴充](/zh-tw/scalability/)其運算資源。透過雲端運算,組織可以彈性選擇所需的基礎設施,以適應不斷變化的需求。 diff --git a/content/zh-tw/cloud-native-tech.md b/content/zh-tw/cloud-native-tech.md index 8c9f7f6d40..2da40e6f18 100644 --- a/content/zh-tw/cloud-native-tech.md +++ b/content/zh-tw/cloud-native-tech.md @@ -18,7 +18,7 @@ tags: ["基本原理", "", ""] 但從高層次上看,它們解決了一組主要的挑戰:傳統 IT 操作模型的缺點。 挑戰包括難以創建可擴展、容錯、自我修復的應用程式,以及低效的資源利用率,等等。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 雖然每種技術都解決了非常具體的問題,但作為一組,雲原生技術使鬆散耦合的系統具有彈性、可管理和可觀察性。 結合堅強的自動化,它們允許工程師頻繁且可預測地進行高影響的更改,並減少不必要的工作。 diff --git a/content/zh-tw/cluster.md b/content/zh-tw/cluster.md index 60d4239a56..330eb6ad79 100644 --- a/content/zh-tw/cluster.md +++ b/content/zh-tw/cluster.md @@ -17,7 +17,7 @@ tags: ["基礎架構", "架構", ""] 在單一計算機上執行的軟體若出現單點故障 - 如那台計算機當機、或者有人意外拔掉電源線,那麼某些關鍵的業務系統可能會被離線。 這就是為什麼現代軟體通常被建構成 [分散式應用程式](/zh-tw/distributed-apps/),並集結為叢集的原因。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 雖然分散式叢集應用程式執行在多台機器上,消除了單點故障,但是建構分散式系統確實很困難。事實上,它是資訊工程中的一門獨立學科。 -汲取全球級別系統的需求以及多年的反覆試驗下,最終促成了一種新的技術棧的發展: [雲原生技術](/zh-tw/cloud-native-tech/)。這些新技術是使得建構分散式系統更容易操作和建立的元件。 \ No newline at end of file +汲取全球級別系統的需求以及多年的反覆試驗下,最終促成了一種新的技術棧的發展: [雲原生技術](/zh-tw/cloud-native-tech/)。這些新技術是使得建構分散式系統更容易操作和建立的元件。 diff --git a/content/zh-tw/container-orchestration.md b/content/zh-tw/container-orchestration.md index e8f1596dcc..22b09d3041 100644 --- a/content/zh-tw/container-orchestration.md +++ b/content/zh-tw/container-orchestration.md @@ -17,7 +17,7 @@ category: 概念 雖然困難但並非不可能。 而容器協調能讓用戶自動化所有這些管理任務。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 容器協調工作允許使用決定系統的狀態。 首先,這些工具會宣告系統應具備的狀態 (例如 x 個容器、 y 個 Pod 等等)。 diff --git a/content/zh-tw/container.md b/content/zh-tw/container.md index 9902d64169..a6e6af6d6f 100644 --- a/content/zh-tw/container.md +++ b/content/zh-tw/container.md @@ -19,7 +19,7 @@ tags: ["應用程式", "基本原理", ""] 而這些資源都是為了執行一個單獨應用程式。 另外,無論是作業系統的維護、升級或啟動都是額外工作負擔的來源。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 容器可共享相同的作業系統和機器資源, 分散作業系統的資源消耗,並有效率的使用實體機器的資源。 @@ -29,4 +29,4 @@ tags: ["應用程式", "基本原理", ""] 然而容器也伴隨著一定的限制。 由於容器共享相同的作業系統,因此行程的安全性可能會較其他替代方案差。 容器還需要限制共享資源的使用。 -為了保證資源利用,管理員必須約束和限制記憶體與 CPU 使用率,避免讓其他的應用程式執行效率低落。 \ No newline at end of file +為了保證資源利用,管理員必須約束和限制記憶體與 CPU 使用率,避免讓其他的應用程式執行效率低落。 diff --git a/content/zh-tw/continuous-delivery.md b/content/zh-tw/continuous-delivery.md index 245feca4e3..021d400255 100644 --- a/content/zh-tw/continuous-delivery.md +++ b/content/zh-tw/continuous-delivery.md @@ -22,7 +22,7 @@ CD 關鍵是包括確定軟體在部署前 過去,為了避免上述成本,企業發布的頻率較低, 在一次的部署中包含更多的變更,同時也會增加出錯的風險。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} CD 策略建立了一個完全自動化的生產路徑, 使用各種部署策略測試和部署軟體, diff --git a/content/zh-tw/continuous-integration.md b/content/zh-tw/continuous-integration.md index a2e7b4635e..f8ddc7e02c 100644 --- a/content/zh-tw/continuous-integration.md +++ b/content/zh-tw/continuous-integration.md @@ -20,7 +20,7 @@ CI 是 [持續交付](/zh-tw/continuous-delivery/)(CD)的前置工作。 此外,由於多位開發人員在同一個專案上工作, 任何日常任務,如測試和計算程式碼品質,都需要每位開發人員重複執行,浪費了時間。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 每當開發人員提交修改時,CI 軟體會自動檢查程式碼更動是否合併得很乾淨。 使用 CI 伺服器來執行程式碼品質檢查、測試甚至部署,這幾乎是一種普遍存在的做法。 diff --git a/content/zh-tw/devops.md b/content/zh-tw/devops.md index 78bc0bb1b2..c355b9b23b 100644 --- a/content/zh-tw/devops.md +++ b/content/zh-tw/devops.md @@ -23,7 +23,7 @@ DevOps 要求工程團隊專注在更小的元件,而非一次處理整個功 假設此時程式碼無法運行,追查問題根因就會是一件非常困難的事情。 而 DevOps 顛覆了上述這種開發方式。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 讓一個團隊可以擁有應用程式完整的生命週期,可帶來交接次數最小化、降低部署到正式環境的風險、擁有更好的程式碼品質(如果團隊也負起程式碼在正式環境運行的責任), 並且因為團隊擁有更多的自主權與所有權而提高了員工滿意度。 diff --git a/content/zh-tw/devsecops.md b/content/zh-tw/devsecops.md index 93bdf6f59d..04f983e97e 100644 --- a/content/zh-tw/devsecops.md +++ b/content/zh-tw/devsecops.md @@ -17,9 +17,9 @@ DevOps 的實踐包含[持續整合](/zh-tw/continuous-integration)與[持續部 可惜的是,無法充分體現所有組織利害關係人的自動化發佈流程可能會惡化現存的問題。 一個快速發佈卻沒有考量安全需求的流程可能會降低組織的安全態勢。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} DevSecOps 關注於破除團隊間的隔閡,以及促進安全與自動化工作流程的建立。 在選擇安全應用程式(工具、解決方案)時,組織必須善用自動化 CI/CD 工作流程和政策的落實,並且為開發者提供支持。 該目標並非成為阻礙者,而是安全政策的落實,同時給予使用者如何使他們的專案向前推展的正確資訊。 -當 DevSecOps 被適當地實施,組織將會獲得更好的團隊溝通,並且減少安全事故和附帶成本。 \ No newline at end of file +當 DevSecOps 被適當地實施,組織將會獲得更好的團隊溝通,並且減少安全事故和附帶成本。 diff --git a/content/zh-tw/function-as-a-service.md b/content/zh-tw/function-as-a-service.md index ab60afac24..c2981e4c43 100644 --- a/content/zh-tw/function-as-a-service.md +++ b/content/zh-tw/function-as-a-service.md @@ -25,7 +25,7 @@ tags: ["基礎架構", "", ""] 在需求增大時,用戶必須擴充伺服器容量;需求降低時,則需降低容量。 即使應用程式並未在被使用,但運行該應用程式所需的雲端基礎架構仍要持續運作。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} FaaS 為開發者提供了一種[抽象](/zh-tw/abstraction/),使他們能夠在無需管理伺服器的情況下,可以根據事件來運行網路應用程式。 以檔案上傳為例,這個動作可能會觸發一段自定義的程式碼,該程式碼將原始檔案轉換成多種格式。 diff --git a/content/zh-tw/pod.md b/content/zh-tw/pod.md index 2f688c022b..7f1da8f09c 100644 --- a/content/zh-tw/pod.md +++ b/content/zh-tw/pod.md @@ -21,7 +21,7 @@ Kubernetes 將 Pod 視為大規模部署的一部分進行管理,並且可根 舉例來說,操作者必須反覆地確保這些容器彼此的部署狀態以確保他們保持在一起。 此外這些密切相關的容器其生命週期必須一致同步的被處理,但是卻只能各別單獨管理。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} Pod 將緊密關係的容器們打包成一個單一的單位,此舉大幅度的簡化了容器操作。 譬如,輔助用容器通常都會伴隨主要容器一起使用已加入額外功能或是設定全域設定。 diff --git a/content/zh-tw/service-mesh.md b/content/zh-tw/service-mesh.md index b8fb7cb865..a145040799 100644 --- a/content/zh-tw/service-mesh.md +++ b/content/zh-tw/service-mesh.md @@ -18,7 +18,7 @@ tags: ["網路", "", ""] 除此之外,單一的應用程式會需要對通訊進行加密以支援監管要求、為營運團隊提供通用指標、或對於流量提出詳細的見解以協助診斷問題。 如果這些功能被建立在單一的應用程式中,那麼每一個功能都會產生團隊間的摩擦,減緩新功能開發的速度。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 服務網格在不需要改變程式碼的情況下,為所有服務統一地增加了可靠性、可觀察性和安全性功能。 在服務網格出現之前,這些功能必須被嵌入到每一個服務中,成為錯誤和技術債的潛在來源。 diff --git a/content/zh-tw/shift-left.md b/content/zh-tw/shift-left.md index b646989dd8..2cbea0a865 100644 --- a/content/zh-tw/shift-left.md +++ b/content/zh-tw/shift-left.md @@ -21,7 +21,7 @@ tags: ["方法論", "", ""] 修復它們可能會變得更加困難且昂貴, 尤其是如果該軟體已經部署到正式環境中。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 透過在軟體開發中採用向左移的思維, 團隊可以在整個開發生命週期中進行測試和加強安全性。 diff --git a/content/zh-tw/zero-trust-architecture.md b/content/zh-tw/zero-trust-architecture.md index 726fbae4cd..11eed10034 100644 --- a/content/zh-tw/zero-trust-architecture.md +++ b/content/zh-tw/zero-trust-architecture.md @@ -19,7 +19,7 @@ tags: ["安全性", "", ""] 如果攻擊者取得了對信任裝置的存取權限,因為攻擊者已經在受信任的網路邊界內,他就可以在系統中自由移動,並且獲得系統賦予該裝置的信任與權限,進而使系統容易遭受攻擊。 不過在零信任的架構下,因為信任被移除了,攻擊者在進入系統的下一個環節前,都必須先通過驗證,所以進而減少了攻擊面。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} 採用零信任架構的主要好處就是減少了攻擊面,讓系統變得更安全。 -從企業系統中移除信任,就可以讓攻擊者必須通過更多更強的安全閘門,才能獲得對系統其他區域的存取權限。 \ No newline at end of file +從企業系統中移除信任,就可以讓攻擊者必須通過更多更強的安全閘門,才能獲得對系統其他區域的存取權限。 From 53016cae530473fa58a95256030c6f2dccc6d139 Mon Sep 17 00:00:00 2001 From: John Lin Date: Thu, 10 Aug 2023 23:17:47 +0800 Subject: [PATCH 221/295] Use a more common translation for "Cloud Native" in Traditional Chinese This PR didn't update the translation for Cloud Native in these files, because these files are not sync with the latest English version: - content/zh-tw/style-guide/_index.md - content/zh-tw/_index.md Separate PR should be submitted for the above files. Signed-off-by: John Lin --- config.toml | 4 ++-- content/zh-tw/cloud-native-tech.md | 12 ++++++------ content/zh-tw/cluster.md | 4 ++-- content/zh-tw/contribute/_index.md | 16 ++++++++-------- content/zh-tw/contributor-ladder/_index.md | 2 +- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/config.toml b/config.toml index f906a40c37..2f6759a533 100644 --- a/config.toml +++ b/config.toml @@ -131,8 +131,8 @@ contentDir = "content/ur" weight = 10 [languages.zh-tw] -title = "Cloud Native(雲原生) Glossary" -description = "CNCF 雲原生 Glossary 專案旨在用作討論雲原生應用程式時常用術語的參考" +title = "Cloud Native(雲端原生) Glossary" +description = "CNCF 雲端原生 Glossary 專案旨在用作討論雲端原生應用程式時常用術語的參考" languageName ="繁體中文 (Traditional Chinese)" contentDir = "content/zh-tw" weight = 11 diff --git a/content/zh-tw/cloud-native-tech.md b/content/zh-tw/cloud-native-tech.md index 2da40e6f18..041e4acb1c 100644 --- a/content/zh-tw/cloud-native-tech.md +++ b/content/zh-tw/cloud-native-tech.md @@ -1,25 +1,25 @@ --- -title: 雲原生技術 +title: 雲端原生技術 status: Completed category: 概念 tags: ["基本原理", "", ""] --- -## 什麼是雲原生技術 {#what-it-is} +## 什麼是雲端原生技術 {#what-it-is} -雲原生技術,也稱為雲原生技術棧,是用於構建[雲原生應用程式](/zh-tw/cloud-native-apps/)的技術。 +雲端原生技術,也稱為雲端原生技術棧,是用於構建[雲端原生應用程式](/zh-tw/cloud-native-apps/)的技術。 這些技術使組織能夠在現代和動態環境中構建和運行可擴展的應用程式,例如公有、私有和混合雲,同時充分利用[雲計算](/zh-tw/cloud-computing/)的好處。 它們從頭開始設計,以利用雲計算和容器,服務網格、微服務和不可變基礎架構的能力。 ## 解決的問題 {#problem-it-addresses} -雲原生技術棧有許多不同的技術類別,解決了各種挑戰。 +雲端原生技術棧有許多不同的技術類別,解決了各種挑戰。 如果您查看 [CNCF Cloud Native Landscape](https://landscape.cncf.io/),您將看到它涉及許多不同領域。 但從高層次上看,它們解決了一組主要的挑戰:傳統 IT 操作模型的缺點。 挑戰包括難以創建可擴展、容錯、自我修復的應用程式,以及低效的資源利用率,等等。 ## 如何幫助我們 {#how-it-helps} -雖然每種技術都解決了非常具體的問題,但作為一組,雲原生技術使鬆散耦合的系統具有彈性、可管理和可觀察性。 +雖然每種技術都解決了非常具體的問題,但作為一組,雲端原生技術使鬆散耦合的系統具有彈性、可管理和可觀察性。 結合堅強的自動化,它們允許工程師頻繁且可預測地進行高影響的更改,並減少不必要的工作。 -雲原生技術棧有助於實現雲原生系統的期望特性。 +雲端原生技術棧有助於實現雲端原生系統的期望特性。 diff --git a/content/zh-tw/cluster.md b/content/zh-tw/cluster.md index 330eb6ad79..4a8a2eb650 100644 --- a/content/zh-tw/cluster.md +++ b/content/zh-tw/cluster.md @@ -8,7 +8,7 @@ tags: ["基礎架構", "架構", ""] ## 是什麼 {#what-it-is} 一座叢集是指一組由計算機或應用程式為實現共同目標而協同工作。 -在雲原生計算的背景之下,這個詞彙通常用於 [Kubernetes](/zh-tw/kubernetes/)。 +在雲端原生計算的背景之下,這個詞彙通常用於 [Kubernetes](/zh-tw/kubernetes/)。 一座 Kubernetes 叢集是一組執行在它們自己的容器中的服務 (或工作負載),通常在不同的機器上執行。 所有這些通過網路連接的 [容器化](/zh-tw/containerization/) 服務集合代表一座叢集。 @@ -20,4 +20,4 @@ tags: ["基礎架構", "架構", ""] ## 如何幫助我們 {#how-it-helps} 雖然分散式叢集應用程式執行在多台機器上,消除了單點故障,但是建構分散式系統確實很困難。事實上,它是資訊工程中的一門獨立學科。 -汲取全球級別系統的需求以及多年的反覆試驗下,最終促成了一種新的技術棧的發展: [雲原生技術](/zh-tw/cloud-native-tech/)。這些新技術是使得建構分散式系統更容易操作和建立的元件。 +汲取全球級別系統的需求以及多年的反覆試驗下,最終促成了一種新的技術棧的發展: [雲端原生技術](/zh-tw/cloud-native-tech/)。這些新技術是使得建構分散式系統更容易操作和建立的元件。 diff --git a/content/zh-tw/contribute/_index.md b/content/zh-tw/contribute/_index.md index 72f8061387..5fba72fdc3 100644 --- a/content/zh-tw/contribute/_index.md +++ b/content/zh-tw/contribute/_index.md @@ -19,7 +19,7 @@ menu: ## CNCF Glossary 概述 -該 Glossary 的目標是簡化複雜的雲原生領域,使其更容易被人們理解和使用。 +該 Glossary 的目標是簡化複雜的雲端原生領域,使其更容易被人們理解和使用。 Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.com/cncf/glossary) 中, 您可以在那裡找到有關 Glossary 的[議題](https://github.com/cncf/glossary/issues)、拉取請求(([PRs](https://github.com/cncf/glossary/pulls))和 @@ -27,14 +27,14 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co ## 誰可以貢獻? -您如何參與此專案取決於您的雲原生專業知識水準。 +您如何參與此專案取決於您的雲端原生專業知識水準。 簡化複雜的概念需要對該主題有深入的了解。 因此,要貢獻新術語,您必須精通該主題。 -貢獻者通常是在這些技術上工作了一段時間的工程師或專注於雲原生的學者。 +貢獻者通常是在這些技術上工作了一段時間的工程師或專注於雲端原生的學者。 -專業知識是必需的,因為用簡單的話語解釋複雜的概念 _真的_ 很難。而且,儘管易於理解的結果可能看起來很簡單,但達到所需的簡單性需要雲原生專家之間的努力和協作。 +專業知識是必需的,因為用簡單的話語解釋複雜的概念 _真的_ 很難。而且,儘管易於理解的結果可能看起來很簡單,但達到所需的簡單性需要雲端原生專家之間的努力和協作。 -如果您尚未成為雲原生專家但仍想貢獻,我們建議與專家合作。 +如果您尚未成為雲端原生專家但仍想貢獻,我們建議與專家合作。 一旦專家確信術語準確描述概念,您就可以做出第一個 Glossary 貢獻。 本地化是初學者可以為 Glossary 提供有價值貢獻的地方。 @@ -92,8 +92,8 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co 您可以提出新術語供他人研究,或自己創建新定義。 不管哪種方式,您都需要從[新增議題](#creating-an-issue)開始。 -每個新術語必須符合 [CNCF的雲原生定義](https://github.com/cncf/toc/blob/main/DEFINITION.md)才能被添加到 glossary 中。 -唯一的例外是理解雲原生概念所需的基礎術語。 +每個新術語必須符合 [CNCF的雲端原生定義](https://github.com/cncf/toc/blob/main/DEFINITION.md)才能被添加到 glossary 中。 +唯一的例外是理解雲端原生概念所需的基礎術語。 以下是對於不熟悉 GitHub 的人的逐步指南。 **如果您是 GitHub 專家**,請掃描本指南以獲取有關以下主題的足夠資訊: @@ -118,7 +118,7 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co ### 緊急處理您的議題 {#triaging-your-issue} 接下來,維護者將會進行緊急處理。這意味著他們將評估該術語是否應該成為 Glossary 的一部分。 -並不是每個術語都會被批准。若要納入 Glossary,它們應該是建立且廣泛使用的雲原生概念。 +並不是每個術語都會被批准。若要納入 Glossary,它們應該是建立且廣泛使用的雲端原生概念。 請讓維護者知道您已在 Slack 上提出新術語並標記 _@Catherine Paganini_、_@Seokho Son_、_@Jihoon Seo_ 和/或 _@iamnoah_,以便他們不會錯過。 如果您想編寫定義,請讓維護者知道,他們會指派它給您。 diff --git a/content/zh-tw/contributor-ladder/_index.md b/content/zh-tw/contributor-ladder/_index.md index 7bf5d14e1e..822a834411 100644 --- a/content/zh-tw/contributor-ladder/_index.md +++ b/content/zh-tw/contributor-ladder/_index.md @@ -7,7 +7,7 @@ menu: weight: 10 --- -嗨!👋 感謝您對貢獻 CNCF 雲原生 Glossary 專案感到興趣。 +嗨!👋 感謝您對貢獻 CNCF 雲端原生 Glossary 專案感到興趣。 無論您貢獻新術語、協助本地化 Glossary 成為您的母語, 或者想要幫助他人入門,都有很多方式成為此社群的活躍成員。 本文檔概述了專案中的不同貢獻者角色以及隨之而來的職責和權限。 From 112aa43e217f1365b22c2317d91276b56d79067d Mon Sep 17 00:00:00 2001 From: John Lin Date: Sat, 19 Aug 2023 00:32:05 +0800 Subject: [PATCH 222/295] [tw] Localize Virtualization for Traditional Chinese Signed-off-by: John Lin --- content/zh-tw/virtualization.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/zh-tw/virtualization.md diff --git a/content/zh-tw/virtualization.md b/content/zh-tw/virtualization.md new file mode 100644 index 0000000000..ce85fe1aa2 --- /dev/null +++ b/content/zh-tw/virtualization.md @@ -0,0 +1,31 @@ +--- +title: 虛擬化 +status: completed +category: 技術 +tags: ["基本原理", "基礎設施", "方法論"] +--- + +## 是什麼 {#what-it-is} + +在雲端原生運算中, +虛擬化指的是將一台實體計算機(有時稱為伺服器), +使其能夠運行多個獨立作業系統的方法。 +這些獨立的作業系統以及它們專屬的運算資源(CPU、記憶體和網路)被稱為虛擬機器或 VM。 +當我們提到[虛擬機器](/zh-tw/virtual-machine/)時,在講的其實是由軟體定義的計算機。 +這種計算機在外觀上和與行為上都像是真實的計算機,但實際上它會與其他虛擬機器共用硬體資源。 +[雲端運算](/zh-tw/cloud-computing/) 主要是由虛擬化技術所驅動。 +舉例來說, +你可以從 AWS 租用一台「計算機」, +但實際上它是一台虛擬機器。 + +## 解決的問題 {#problem-it-addresses} + +虛擬化解決了多個問題, +比方說它允許更多應用程式在同一台實體機器上運行, +而且還能將它們相互隔離以確保安全性。 + +## 如何幫助我們 {#how-it-helps} + +在虛擬機器上運行的應用程式並不知道它們正在共用一台實體計算機。 +虛擬化還能讓資料中心的使用者在數分鐘內啟動一台新的「計算機」(其實是虛擬機器), +而無需擔心增加新的計算機到資料中心所帶來的實體限制。 From fabc064713ce50b8d0216e215fe65621b2ec0072 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Wed, 23 Aug 2023 12:45:06 -0500 Subject: [PATCH 223/295] [tw] Add content/zh-tw/observability.md (#2313) Signed-off-by: HungWei Chiu --- content/zh-tw/observability.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 content/zh-tw/observability.md diff --git a/content/zh-tw/observability.md b/content/zh-tw/observability.md new file mode 100644 index 0000000000..29aac9e9c4 --- /dev/null +++ b/content/zh-tw/observability.md @@ -0,0 +1,17 @@ +--- +title: 可觀測性 +status: Completed +category: 概念 +tags: ["屬性", "", ""] +--- + +可觀察性是一個系統屬性,其定義了系統能夠產生可執行見解的程度。 +它允許使用者從這些外部輸出去理解系統狀態並採取行動來修正。 + +計算機系統通過觀察低階信號(例如 CPU 時間、記憶體、磁碟空間)以及更高階和業務信號(包括 API 回應時間、錯誤、每秒交易次數等)進行衡量。 +這些可觀察的系統通過專業工具,即所謂的可觀察性工具,進行**觀察**(或監控)。 +這些工具的列表可以在 [Cloud Native Landscape 的可觀察性部分](https://landscape.cncf.io/card-mode?category=observability-and-analysis&grouping=category) 中查看。 + +可觀察的系統向操作人員提供有意義且可執行的資料,使他們能夠達到更有利的結果 (更快的意外應變,開發者生產力提升)並減少繁瑣作業與停機時間。 + +因此,系統的可觀察性程度將顯著影響其維運和開發成本。 From cc6ca16e6a3bfd8f87ff3f04e95cc0056792c8f3 Mon Sep 17 00:00:00 2001 From: ydFu Date: Tue, 22 Aug 2023 14:41:39 +0800 Subject: [PATCH 224/295] [tw]Update DevSecOps for Traditional Chinese Co-authored-by: pohsien324 Co-authored-by: yylin1 Signed-off-by: ydFu --- content/zh-tw/devsecops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/devsecops.md b/content/zh-tw/devsecops.md index 04f983e97e..279c962ca0 100644 --- a/content/zh-tw/devsecops.md +++ b/content/zh-tw/devsecops.md @@ -13,7 +13,7 @@ DevSecOps 一詞指的是開發、維運與安全責任的文化融合。 ## 解決的問題 {#problem-it-addresses} -DevOps 的實踐包含[持續整合](/zh-tw/continuous-integration)與[持續部署](/zh-tw/continuous-deployment),並加速應用程式的開發和發佈週期。 +DevOps 的實踐包含[持續整合](/zh-tw/continuous-integration)、[持續交付](/zh-tw/continuous-delivery/)和[持續部署](/zh-tw/continuous-deployment),並加速應用程式的開發和發佈週期。 可惜的是,無法充分體現所有組織利害關係人的自動化發佈流程可能會惡化現存的問題。 一個快速發佈卻沒有考量安全需求的流程可能會降低組織的安全態勢。 From 8424b7ae2e157d981831e02b523866a6800432fc Mon Sep 17 00:00:00 2001 From: gamerslouis Date: Sat, 17 Jun 2023 17:05:38 +0000 Subject: [PATCH 225/295] Add content/zh-tw/agile-software-development.md Signed-off-by: gamerslouis --- content/zh-tw/agile-software-development.md | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 content/zh-tw/agile-software-development.md diff --git a/content/zh-tw/agile-software-development.md b/content/zh-tw/agile-software-development.md new file mode 100644 index 0000000000..2c608e5795 --- /dev/null +++ b/content/zh-tw/agile-software-development.md @@ -0,0 +1,27 @@ +--- +title: 敏捷軟體開發 +status: Completed +category: 概念 +tags: ["方法論", "", ""] +--- + +## 是什麼 {#what-it-is} + +敏捷軟體開發是一系列強調迭代開發週期和自我組織團隊的實踐方法。 +與僅在專案結束時才生成價值的瀑布式專案相比, +敏捷軟體開發著重於價值的持續、增量式的交付,並對過程本身進行漸進式的改善。 + +## 解決的問題 {#problem-it-addresses} + +在軟體專案中,定義、傳達和理解所有利害關係人的需求非常困難,甚至是不可能的。 +然而,客戶希望他們的軟體專案能有高品質,在預算、時程及專案範圍內交付。 +相較於於瀑布式策略,敏捷軟體開發的週期特性使其能持續適應需求,並且能更快地適應其他所有情況。 + +## 如何幫助我們 {#how-it-helps} + +敏捷軟體開發包含了傳統(瀑布式)策略的所有階段, +如需求工程、規劃、開發、審核、測試和交付。 +最大的不同在於,整個軟體專案的時間跨度被切分為多個迭代, +每個迭代都包含所有這些階段。 +在每個迭代結束後,開發團隊可以與客戶一起審查創造的價值,並對需求進行調整以達到最終目標。 +此外,開發團隊還會反思需要採取哪些行動來改進過程本身。 From 7fcf7d9b75f760d7a2ebc4728411db5137c49292 Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Mon, 28 Aug 2023 10:58:41 +0100 Subject: [PATCH 226/295] Localize continuous deployment #1649 (#2284) * aggiunto termine vertical scaling issue #1657 Signed-off-by: Matteo Bisi * Deprecati termini issue #1660 Signed-off-by: Matteo Bisi * IT localize continuous deployemnt #1649 Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-deployment.md Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Matteo Bisi --------- Signed-off-by: Matteo Bisi Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/continuous-deployment.md | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 content/it/continuous-deployment.md diff --git a/content/it/continuous-deployment.md b/content/it/continuous-deployment.md new file mode 100644 index 0000000000..1f50975230 --- /dev/null +++ b/content/it/continuous-deployment.md @@ -0,0 +1,37 @@ +--- +title: Continuous Deployment (CD) +status: Completed +category: Concetto +tags: ["metodologia", "applicazione", ""] +--- + +## Cos'è + +Il Continuous deployment, o Distribuzione Continua, spesso abbreviato CD, è il passo successivo di [continuous delivery](/it/continuous-delivery/), o +ed esegue l'installazione del sofware finito direttamente in produzione. +Il continuous deployment (CD) va di pari passo con la [continuous integration](/it/continuous-integration/) (CI), +e il processo nel suo insieme viene spesso indicato come CI/CD. +La fase di CI verifica se le modifiche apportate a una determinata applicazione sono valide, +ed la fase CD distribuisce automaticamente le modifiche al codice attraverso i vari ambienti di un'organizzazione, dai test alla produzione. + +## Quali problematiche affronta + +Il rilascio di nuove versioni di software può essere un processo laborioso e soggetto a errori; +peraltro, spesso le organizzazioni vogliono affrontarlo non troppo frequentemente per evitare incidenti in produzione +e ridurre il numero di volte in cui i tecnici devono essere disponibili al di fuori del normale orario lavorativo. +I modelli tradizionali di distribuzione del software portano le organizzazioni in un circolo vizioso +in cui il processo di rilascio del software non soddisfa le esigenze organizzative in termini di velocità di rilascio +di correzzioni applicative e nel rilascio delle nuove funzionalità. + +## In che modo aiuta + +Automatizzando il ciclo di rilascio e costringendo le organizzazioni a rilasciare in produzione più frequentemente, +il CD fa per i team operativi quello che il CI ha fatto per i team di sviluppo. +In particolare, obbliga i team operativi ad automatizzare le parti complesse e soggette a errori dei deployment in produzione, +riducendo il rischio complessivo. +Inoltre, migliora la capacità delle organizzazioni di accettare e adattarsi ai cambiamenti in produzione, portando conseguentemente a una maggiore stabilità. + +## Termini correlati + +* [Continuous Integration](/it/continuous-integration/) +* [Continuous Delivery](/it/continuous-delivery/) From a7b74659152b721911c14fd7405a76e46f099f7d Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Tue, 29 Aug 2023 08:29:02 +0100 Subject: [PATCH 227/295] Localize pod #2192 (#2264) * aggiunto termine vertical scaling issue #1657 Signed-off-by: Matteo Bisi * Deprecati termini issue #1660 Signed-off-by: Matteo Bisi * [it] Localize Pod #2192 Signed-off-by: Matteo Bisi * Update content/it/pod.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/pod.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/pod.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/pod.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/pod.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/pod.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi --------- Signed-off-by: Matteo Bisi Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --- content/it/pod.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 content/it/pod.md diff --git a/content/it/pod.md b/content/it/pod.md new file mode 100644 index 0000000000..1ccedce064 --- /dev/null +++ b/content/it/pod.md @@ -0,0 +1,33 @@ +--- +title: Pod +status: Completed +category: Concetto +tags: ["infrastruttura", "fondamenti", ""] +--- + +## Cos'è + +In un ambiente [Kubernetes](/it/kubernetes/), un pod è la più piccola unità di base di un'applicazione; +rappresenta un blocco di costruzione essenziale per l'installazione e la gestione di applicazioni containerizzate. +Ogni pod contiene una singola istanza applicativa, e può contenere uno o più [container](/it/container/). +Kubernetes gestisce i pod come parte di un deployment e se necessario può eseguire lo scaling [verticale](/it/vertical-scaling/) o [orizzontale](/it/horizontal-scaling/) dei pod. + +## Quali problematiche affronta + +Sebbene i container agiscano generalmente come unità indipendenti che eseguono e controllano un particolare carico di lavoro, +ci sono casi in cui i container devono interagire ed essere controllati in modo strettamente accoppiato. + +Se ciascuno di questi container strettamente correlati fosse gestito individualmente, si verrebbero a creare attività di gestione ridondanti. +Ad esempio, l'operatore dovrebbe ripetutamente verificare il posizionamento dei container correlati per assicurarsi che rimangano insieme. +Sebbene i cicli di vita di questi container correlati debbano essere sincronizzati, possono essere gestiti solo individualmente. + +## In che modo aiuta + +I pod raggruppano i container strettamente legati in un'unica unità, semplificando notevolmente le operazioni sui container. +Ad esempio, i container ausiliari vengono spesso utilizzati insieme al container principale per aggiungere funzionalità aggiuntive o per impostare configurazioni globali. +Esempi possono includere container che iniettano e applicano impostazioni di base al container principale, +sidecar (container) che gestiscono il routing del traffico di rete per il container principale (vedi [service mesh](/it/service-mesh/)), +o container che raccolgono i log di altri determinati container. + + +L'allocazione di memoria e CPU può essere definita a livello di pod, consentendo ai container all'interno di condividere le risorse in modo flessibile, o per container. From 29e31a92b7544abd09ff49af97300984e7d9d814 Mon Sep 17 00:00:00 2001 From: John Lin Date: Wed, 30 Aug 2023 09:29:01 +0800 Subject: [PATCH 228/295] Avoid mentioning the solution in problem section for Virtual Machine According to the style guide, the section of "Problem it addresses" should focus on the problem, not the solution. Therefore, I think it makes sense not to mention virtual machine and virtualization in that section. Signed-off-by: John Lin --- content/en/virtual-machine.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/virtual-machine.md b/content/en/virtual-machine.md index 4bf854f535..0c03841df5 100644 --- a/content/en/virtual-machine.md +++ b/content/en/virtual-machine.md @@ -15,7 +15,6 @@ easily create and destroy VMs without impacting the underlying hardware. ## Problem it addresses -Virtual machines take advantage of virtualization. When a [bare metal](/bare-metal-machine/) machine is bound to a single operating system, how well the machine's resources can be used is somewhat limited. Also, when an operating system is bound to a single physical machine, From a920a3809f016d86c9443c6bb92f0b5fa69eac45 Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Mon, 4 Sep 2023 10:23:02 +0100 Subject: [PATCH 229/295] Localize continuous integration #1650 (#2287) * aggiunto termine vertical scaling issue #1657 Signed-off-by: Matteo Bisi * Deprecati termini issue #1660 Signed-off-by: Matteo Bisi * IT localize continuous integration #1650 Signed-off-by: Matteo Bisi * Update content/it/continuous-integration.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi * Update content/it/continuous-integration.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: Matteo Bisi --------- Signed-off-by: Matteo Bisi Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --- content/it/continuous-integration.md | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/it/continuous-integration.md diff --git a/content/it/continuous-integration.md b/content/it/continuous-integration.md new file mode 100644 index 0000000000..a2f4ce81d3 --- /dev/null +++ b/content/it/continuous-integration.md @@ -0,0 +1,34 @@ +--- +title: Continuous integration (CI) +status: Completed +category: Concetto +tags: ["metodologia", "applicazione", ""] +--- + +## Cos'è + +Continuous integration, spesso abbreviato CI, è la pratica di integrare le modifiche al codice il più regolarmente possibile. +La CI è il prerequisito per la [continuous delivery](/it/continuous-delivery/) (CD). +Tradizionalmente, il processo di CI inizia quando le modifiche al codice vengono committate in un sistema di controllo del codice sorgente (Git, Mercurial o Subversion) +e termina con un artefatto testato pronto per essere consumato da un sistema di CD. + +## Quali problematiche affronta + +I software sono spesso estesi e complessi, con numerosi sviluppatori che li mantengono e aggiornano. +Lavorando in parallelo su diverse parti del sistema, +gli sviluppatori potrebbero apportare modifiche in conflitto e danneggiare inavvertitamente il lavoro l'uno dell'altro. +Inoltre, con più sviluppatori che lavorano allo stesso progetto, +qualsiasi attività quotidiana come il test e la misura della qualità del codice dovrebbe essere ripetuta da ogni sviluppatore, sprecando tempo. + +## In che modo aiuta + +La CI controlla automaticamente che le modifiche al codice si inseriscano in modo pulito ogni volta che uno sviluppatore finalizza una modifica. +È una pratica molto diffusa utilizzare il server CI per eseguire controlli di qualità del codice, test e persino installazioni. +In questo modo, diventa una concreta implementazione del controllo qualità all'interno dei team. +Il processo di CI consente ai team di software di identificare chiaramente ogni commit di codice come un fallimento o come un valido candidato + al rilascio in produzione. + +## Termini correlati + +* [Continuous Delivery](/it/continuous-delivery/) +* [Continuous Deployment](/it/continuous-deployment/) From 80f57b938f6a91dc6414e44b471d3ff2aaae2178 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:09:59 +0200 Subject: [PATCH 230/295] [it] Localizzazione Serverless (#2246) * Added Serverless Italian localization Signed-off-by: Paolo * Apply suggestions from code review Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/serverless.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 content/it/serverless.md diff --git a/content/it/serverless.md b/content/it/serverless.md new file mode 100644 index 0000000000..53f2323e5f --- /dev/null +++ b/content/it/serverless.md @@ -0,0 +1,35 @@ +--- +Title: Serverless +Status: Completed +Category: Tecnologia +tags: ["architettura", "", ""] +--- + +## Cos'è + +Il serverless è un modello di sviluppo cloud native che permette +di costruire ed eseguire applicazioni senza la necessità di gestire i server. +I server sono comunque presenti nel serverless, ma sono [astratti](/it/abstraction/) dallo sviluppo dell'applicazione. +Un cloud provider gestisce regolarmente il provisioning, la manutenzione e la [scalabilità](/it/scalability/) dell'infrastruttura server. +I team di sviluppo possono semplicemente impacchettare codice in[container](/it/container/) per la distribuzione. +Una volta distribuite, le applicazioni serverless rispondono alla domanda e [scalano automaticamente](/it/vertical-scaling/) in base alle necessità. +Le offerte serverless proposte dai fornitori di cloud pubblico sono generalmente misurate on-demand attraverso un modello di esecuzione basato sugli eventi. +Di conseguenza, quando una funzione serverless non è in esecuzione, non ha costi. + +## Quali problematiche affronta + +In un modello standard di [cloud computing](/it/cloud-computing/) di tipo [Infrastructure-as-a-Service (IaaS)](/it/infrastructure-as-a-service/), +gli utenti acquistano in anticipo unità di capacità, ovvero pagano un fornitore di cloud pubblico per avere componenti server sempre attivi che mantengano in esecuzione le applicazioni. +È compito dell'utente scalare verso l'alto la capacity del server nei momenti di traffico elevato +e di scalarla verso il basso quando non è più necessaria. +L'infrastruttura cloud necessaria per eseguire l'applicazione rimane attiva anche quando l'applicazione non viene utilizzata. + +## In che modo aiuta + +Con un'architettura serverless, invece, le applicazioni vegnono avviate soltanto quando serve. +Quando un evento attiva l'esecuzione del codice dell'applicazione, il fornitore di cloud pubblico alloca delle risorse per quel codice in modo dinamico. +L'utente smette di pagare nel momento in cui il codice finisce di essere eseguito. +Oltre ai benefici legati al costo e all'efficienza, +il serverless libera gli sviluppatori dalle attività ripetitive e secondarie legate alla scalabilità dell'applicazione e al provisioning del server. +Grazie al serverless, attività ripetitive come la gestione del sistema operativo e dei file di sistema, le patch di sicurezza, +il bilanciamento, la gestione della capacità, la scalabilità, il logging e il monitoraggio vengono tutte demandate al fornitore di servizi cloud. From 9e7c07c964ce71e8d0710c3cb61a6a1a8f137b9e Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:27:42 +0200 Subject: [PATCH 231/295] [it] Localizzazione termine RBAC (#2063) * Added RBAC italian localization Signed-off-by: Paolo * Update content/it/role-based-access-control.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/role-based-access-control.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/it/role-based-access-control.md diff --git a/content/it/role-based-access-control.md b/content/it/role-based-access-control.md new file mode 100644 index 0000000000..fe86ef57c9 --- /dev/null +++ b/content/it/role-based-access-control.md @@ -0,0 +1,25 @@ +--- +title: Role-Based Access Control (RBAC) +status: Completed +category: Concetto +--- + +## Cos'è + +Il Role-based access control (RBAC - Controllo degli accessi basato sul ruolo) è un metodo per regolare l'accesso a sistemi e risorse basato sui ruoli dei singoli utenti all'interno di un'organizzazione. +Ogni funzione aziendale ha un ruolo specifico e determinati permessi. +Per esempio, un membro del team di marketing potrebbe avere i permessi per vedere le trattative in corso (permesso di *lettura*), ma non sarà in grado di modificarle (permesso di *scrittura*). +I team di vendita e di marketing hanno permessi diversi in base ai loro ruoli, da cui RBAC, e lo stesso vale per i ruoli all'interno dei team di sviluppo. + +## Quali problematiche affronta + +Gestire individualmente i permessi di accesso di molti utenti tra le risorse e i dati di diversi sistemi può essere complicato. +Ogni utente, infatti, può aver bisogno di accedere a un diverso insieme di risorse. +Poniamo il caso di un'organizzazione con 500 sviluppatori (utenti) e 300 risorse con diversi livelli di permessi (lettura, scrittura e nessun accesso). L'amministratore deve assicurarsi che ciascun utente abbia i corretti permessi per tutte le 300 risorse. +RBAC semplifica il processo fornendo controlli di accesso predefiniti basati su raggruppamenti dei ruoli. + +## In che modo aiuta + +RBAC fornisce un controllo granulare sui permessi all'interno dei sistemi software. +A seconda dei loro ruoli, i membri del team possono modificare una sezione, visualizzarla soltanto, o non avervi alcun accesso. +Questa assegnazione granulare dei permessi permette ai membri del team con diversi ruoli di lavorare allo stesso sistema minimizzando i rischi. From f1f6214eee01471c97fea95e6ddc856b912e36a7 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:53:03 +0200 Subject: [PATCH 232/295] [it] Localizzazione termine Zero Trust Architecture (#2159) * Added Zero Trust Architecture Italian localization Signed-off-by: Paolo * Integrated comments Signed-off-by: Paolo --------- Signed-off-by: Paolo Co-authored-by: Paolo --- content/it/zero-trust-architecture.md | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 content/it/zero-trust-architecture.md diff --git a/content/it/zero-trust-architecture.md b/content/it/zero-trust-architecture.md new file mode 100644 index 0000000000..b0c8f8d135 --- /dev/null +++ b/content/it/zero-trust-architecture.md @@ -0,0 +1,36 @@ +--- +title: Architettura Zero Trust +status: Completed +category: Concetto +tags: ["sicurezza", "", ""] +--- + +## Cos'è + +L'architettura Zero trust prevede di progettare e implementare sistemi IT con un approccio +nel quale la fiducia è completamente rimossa. +Il principio fondamentale è "non fidarsi mai, verificare sempre": prima di comunicare con altri componenti di un sistema, +i dispositivi o i sistemi stessi attuano delle verifiche. +Oggi accade spesso che internamente ad un network aziendale i sistemi e i dispositivi possano comunicare liberamente tra loro +poiché si trovano all'interno del confine considerato affidabile del perimetro del network aziendale. +Un'architettura Zero trust applica l'approccio opposto, nel quale anche all'interno del perimetro del network +i componenti del sistema debbano superare delle verifiche, prima che possa avvenire un qualsiasi tipo di comunicazione. + +## Quali problematiche affronta + +Con l'approccio tradizionale che si fonda sulla fiducia, secondo la quale si ritengono affidabili i sistemi e i dispositivi all'interno del perimetro del network aziendale, +si basa sull'assunto che siccome c'è fiducia, non c'è da preoccuparsi. +Un'architettura Zero trust, invece, considera la fiducia una vulnerabilità. +Nel caso in cui un agente malevolo abbia ottenuto l'accesso a un dispositivo considerato affidabile, +a seconda del livello di fiducia e accesso che abbia quel determinato dispositivo, +il sistema è vulnerabile ad un attacco +in quanto l'agente malevolo è all'interno del perimetro del network "affidabile", ed è in grado di spostarsi lateralmente in tutto il sistema. +In un'architettura Zero trust la fiducia è rimossa, riducendo così la superficie di attacco +in quanto un eventuale intruso è costretto ad essere verificato prima di poter procedere ulteriormente all'interno del sistema. + +## In che modo aiuta + +Il principale beneficio dell'adozione di un'architettura Zero trust consiste in una maggiore sicurezza +grazie alla riduzione della superficie d'attacco. +Rimuovere la fiducia da un sistema aziendale aumenta il numero e l'efficacia dei controlli di sicurezza +che un intruso deve superare per ottenere l'accesso ad altre aree del sistema. From 426d044bc6c72c5366e8a021af9889e0cc1f5e28 Mon Sep 17 00:00:00 2001 From: John Lin Date: Tue, 5 Sep 2023 00:51:49 +0800 Subject: [PATCH 233/295] [tw] Localize Kubernetes for Traditional Chinese (#2308) Signed-off-by: John Lin --- content/zh-tw/kubernetes.md | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 content/zh-tw/kubernetes.md diff --git a/content/zh-tw/kubernetes.md b/content/zh-tw/kubernetes.md new file mode 100644 index 0000000000..f9f47ee4f7 --- /dev/null +++ b/content/zh-tw/kubernetes.md @@ -0,0 +1,51 @@ +--- +title: Kubernetes +status: Completed +category: 技術 +tags: ["基礎設施", "基本原理", ""] +--- + +## 是什麼 {#what-it-is} + +Kubernetes (通常縮寫為 K8s)是一個開源的容器協調工具。 +它可以在現代基礎設施上自動管理容器化應用程式的生命週期, +就像一個能夠在[分散式系統](/zh-tw/distributed-systems/)中管理應用程式的「資料中心作業系統」。 + +Kubernetes 會在[叢集](/zh-tw/cluster/)的[節點](/zh-tw/nodes/)間對[容器](/zh-tw/container/)們進行排程, +並結合多個基礎設施上的資源, +例如負載平衡器、持久性儲存空間等等, +來執行容器化的應用程式。 + +Kubernetes 具有自動化和可擴展的特性, +讓使用者能夠以可重現的宣告式設定來部署應用程式(請見下文)。 +經驗豐富的 Kubernetes 從業人員可以根據其需求, +透過它的 [API](/zh-tw/application-programming-interface/) 來利用其自動化功能進行擴展。 + +## 解決的問題 {#problem-it-addresses} + +長期以來,基礎設施自動化和宣告式設定管理一直是重要的概念, +但隨著[雲端運算](/zh-tw/cloud-computing/)的普及,這些概念變得更加地迫切。 +隨著對運算資源的需求增加, +組織需要更多的維運能力,同時又要更少的工程師數量, +因此新的技術和工作方式便變得不可或缺。 + +## 如何幫助我們 {#how-it-helps} + +Kubernetes 與傳統[基礎設施即程式碼](/zh-tw/infrastructure-as-code/)的工具類似,都有助於自動化, +但 Kubernetes 具有使用容器的優勢。 +因此比[虛擬機器](/zh-tw/virtual-machine/)或實體機器更不容易出現組態漂移。 + +此外,Kubernetes 是透過宣告式設定來運作的, +這意味著操作者並非告訴機器應該要執行什麼指令, +而是描述基礎設施應該要長什麼樣子; +通常是透過清單檔案(例如 YAML)的形式來進行描述。 +然後,Kubernetes 便會自行完成「如何達成這個樣子」的部分。 +這使得 Kubernetes 能很好地相容於「基礎設施即程式碼」。 + +Kubernetes 還具有[自我修復](/zh-tw/self-healing/)的功能。 +叢集的實際狀態將始終與維運者所期望的狀態相符。 +當 Kubernetes 偵測到與清單檔案描述不符的情況時, +Kubernetes 控制器便會修復這個問題。 +雖然 Kubernetes 使用的基礎設施可能會不斷地變化, +但 Kubernetes 會自動不斷地隨之改變, +以確保與期望的狀態保持一致。 From 1cc1cf88ab6019ae6a3a675656e3ea13b20b3901 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 17:49:38 +0100 Subject: [PATCH 234/295] Bump actions/checkout from 3 to 4 (#2351) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-outdated-content.yaml | 2 +- .github/workflows/es-spellcheck.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-outdated-content.yaml b/.github/workflows/check-outdated-content.yaml index 25ec05af5a..3b4014a680 100644 --- a/.github/workflows/check-outdated-content.yaml +++ b/.github/workflows/check-outdated-content.yaml @@ -67,7 +67,7 @@ jobs: echo "OUTPUT_DIR=${OUTPUT_DIR}" >> $GITHUB_ENV - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 # fetch all history for all tags and branches diff --git a/.github/workflows/es-spellcheck.yml b/.github/workflows/es-spellcheck.yml index d9ed4be5c9..46f07bf985 100644 --- a/.github/workflows/es-spellcheck.yml +++ b/.github/workflows/es-spellcheck.yml @@ -23,7 +23,7 @@ jobs: name: Run PySpelling tool to verify spanish spelling issues runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check word list sort run: | set -o errexit diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index b648add9a3..296d54e7aa 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -22,7 +22,7 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: GitHub Spellcheck Action uses: rojopolis/spellcheck-github-actions@0.33.1 From a572c3bdcca5e82f9bf3d80e98851921f2423f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodolfo=20Mart=C3=ADnez=20Vega?= Date: Tue, 5 Sep 2023 10:52:54 -0600 Subject: [PATCH 235/295] [ES] updated content/es/service-mesh.md (#2342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * This change fix a typo and includes the English term just for reference as we have done it previously with other concepts. * Add "meshes" word to the .wordlist.txt Signed-off-by: Rodolfo Martínez Vega --- content/es/.wordlist.txt | 1 + content/es/service-mesh.md | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/content/es/.wordlist.txt b/content/es/.wordlist.txt index 22e7f38794..e7892aec55 100644 --- a/content/es/.wordlist.txt +++ b/content/es/.wordlist.txt @@ -180,6 +180,7 @@ md menu Mercurial mesh +meshes methodology microservicio microservicios diff --git a/content/es/service-mesh.md b/content/es/service-mesh.md index 14c4430ddc..756d674528 100644 --- a/content/es/service-mesh.md +++ b/content/es/service-mesh.md @@ -1,5 +1,5 @@ --- -title: Malla de Servicios +title: Malla de Servicios (Service Mesh) status: Completed category: Tecnología tags: ["networking", "", ""] @@ -7,9 +7,9 @@ tags: ["networking", "", ""] ## ¿Qué es? -En un mundo de [arquitectura de microservicios](/es/microservices-architecture/)], las aplicaciones se dividen en múltiples [servicios](/es/service/) que se comunican a través de una red. +En un mundo de [arquitectura de microservicios](/es/microservices-architecture/), las aplicaciones se dividen en múltiples [servicios](/es/service/) que se comunican a través de una red. Al igual que las redes de wifi, las redes de computadoras son poco confiables, proclives a ser atacadas y en muchos casos lentas. -Las mallas de servicios afrontan estos nuevos desafíos mediante el manejo de tráfico (por ejemplo la comunicación) entre servicios y +Las mallas de servicios (Service meshes) afrontan estos nuevos desafíos mediante el manejo de tráfico (por ejemplo la comunicación) entre servicios y agregando [fiabilidad](/es/reliability/), [observabilidad](/es/observability/) e implementaciones de seguridad a todos los servicios. ## Problema que aborda From 4f563407238dc818d729f2732b2cf52c1334c1aa Mon Sep 17 00:00:00 2001 From: Mohit Bisht Date: Tue, 5 Sep 2023 22:33:25 +0530 Subject: [PATCH 236/295] Update serverless.md (#2317) Made several improvements to the CNCF glossary content for accuracy and clarity. Signed-off-by: Mohit Bisht --- content/en/serverless.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/en/serverless.md b/content/en/serverless.md index 7ea7dfa7b1..6ae8db19a1 100644 --- a/content/en/serverless.md +++ b/content/en/serverless.md @@ -9,12 +9,12 @@ tags: ["architecture", "", ""] Serverless is a cloud native development model that allows developers to build and run applications without having to manage servers. -There are still servers in serverless, but they are [abstracted](/abstraction/) away from app development. +While servers do still exist within the serverless paradigm, they are [abstracted](/abstraction/) away from the application development process. A cloud provider handles the routine work of provisioning, maintaining, and [scaling](/scalability/) the server infrastructure. -Developers can simply package their code in [containers](/container/) for deployment. +Developers can conveniently package their code into [containers](/container/) for deployment. Once deployed, serverless apps respond to demand and automatically scale up and down as needed. Serverless offerings from public cloud providers are usually metered on-demand through an event-driven execution model. -As a result, when a serverless function is sitting idle, it doesn’t cost anything. +Consequently, when a serverless function is in an idle state, there are no associated costs. ## Problem it addresses @@ -22,11 +22,11 @@ Under a standard [Infrastructure-as-a-Service (IaaS)](/infrastructure-as-a-servi users pre-purchase units of capacity, meaning you pay a public cloud provider for always-on server components to run your apps. It’s the user’s responsibility to scale up server capacity during times of high demand and to scale down when that capacity is no longer needed. -The cloud infrastructure necessary to run an app is active even when the app isn’t being used. +The cloud infrastructure required to operate an application remains active even when the application is not in use. ## How it helps -With serverless architecture, by contrast, apps are launched only as needed. +Contrasting with traditional approaches, the serverless architecture launches applications only when they are needed. When an event triggers app code to run, the public cloud provider dynamically allocates resources for that code. The user stops paying when the code finishes executing. In addition to the cost and efficiency benefits, From 996973bff450bca57163e08bc084e7698fb9a7cb Mon Sep 17 00:00:00 2001 From: Jossemar Cordero Date: Tue, 5 Sep 2023 11:52:23 -0600 Subject: [PATCH 237/295] [ES] Update term reference links (#2353) Since not all the glossary terms were available at the same time, contributors deferred from referencing terms in Spanish. Now, that we have the majority of terms translated we need to double check we are using the correct references. For the record, this can be easily spotted with the following grep expression: grep -PHnro "\[.*?\].*?\(/.*?\)" content/es | grep -v '(/es/' It will capture and display all the reference links that are not using the Spanish terms. PS: I omitted SaaS since it got deprecated and its removal was already done in the main branch. Signed-off-by: Jonnatan Jossemar Cordero --- content/es/auto-scaling.md | 4 ++-- content/es/bare-metal-machine.md | 4 ++-- content/es/cloud-computing.md | 2 +- content/es/cloud-native-apps.md | 6 +++--- content/es/container-image.md | 4 ++-- content/es/continuous-delivery.md | 2 +- content/es/devops.md | 2 +- content/es/horizontal-scaling.md | 4 ++-- content/es/hypervisor.md | 4 ++-- content/es/immutable-infrastructure.md | 2 +- content/es/infrastructure-as-a-service.md | 2 +- content/es/infrastructure-as-code.md | 6 +++--- content/es/kubernetes.md | 2 +- content/es/loosely-coupled-architecture.md | 2 +- content/es/microservices-architecture.md | 2 +- content/es/mutual-transport-layer-security.md | 2 +- content/es/nodes.md | 2 +- content/es/platform-as-a-service.md | 2 +- content/es/scalability.md | 2 +- content/es/stateful-apps.md | 2 +- content/es/style-guide/_index.md | 2 +- 21 files changed, 30 insertions(+), 30 deletions(-) diff --git a/content/es/auto-scaling.md b/content/es/auto-scaling.md index f2c1155f25..90469bd970 100644 --- a/content/es/auto-scaling.md +++ b/content/es/auto-scaling.md @@ -5,7 +5,7 @@ category: Propiedad tags: ["infrastructure", "", ""] --- -El autoescalado es la habilidad de un sistema para [escalar](/scalability) automáticamente, en términos de recursos computacionales. +El autoescalado es la habilidad de un sistema para [escalar](/es/scalability) automáticamente, en términos de recursos computacionales. Con un sistema de autoescalado, los recursos son agregados automáticamente cuando se necesitan y pueden escalar para cumplir con la demanda fluctuante de los usuarios. El proceso de autoescalado varía y es configurable para escalar basado en diferentes métricas, como son la memoria o el uso de CPU. Los servicios gestionados en la nube son los que están asociados típicamente con esta funcionalidad de autoescalado @@ -15,7 +15,7 @@ Anteriormente, la infraestructura y las aplicaciones eran diseñadas para consid Esta arquitectura implicaba que había más recursos que eran desaprovechados o con cambios rígidos frente a la demanda de los usuarios. La rigidez en este caso, incrementa el coste y puede suponer una pérdida de negocios debido a problemas de capacidad. -Aprovechando la nube, la [virtualización](/virtualization) y la [contenerización](/es/containerization/) de aplicaciones y sus dependencias, +Aprovechando la nube, la [virtualización](/es/virtualization) y la [contenerización](/es/containerization/) de aplicaciones y sus dependencias, las organizaciones pueden construir aplicaciones que escalan de manera acorde a la demanda de los usuarios. Se pueden monitorear la demanda de las aplicaciones y de manera automática escalar las mismas, proporcionando una experiencia al usuario final óptima. Tomemos el ejemplo del aumento de la audiencia de Netflix todos los viernes por la noche. diff --git a/content/es/bare-metal-machine.md b/content/es/bare-metal-machine.md index 1c960d9b6f..2e1e12e18a 100644 --- a/content/es/bare-metal-machine.md +++ b/content/es/bare-metal-machine.md @@ -11,7 +11,7 @@ Bare metal se refiere a una computadora física, más específicamente un servid La distinción es importante en la informática moderna porque muchos, si no es que la mayoría, de los servidores son [máquinas virtuales](/es/virtual-machine/). Un servidor físico suele ser una computadora bastante grande con un potente hardware incorporado. La instalación de un sistema operativo y la ejecución de aplicaciones directamente en ese hardware físico, -sin [virtualización](/virtualization/), se conoce como ejecución "bare metal". +sin [virtualización](/es/virtualization/), se conoce como ejecución "bare metal". ## Problema que aborda @@ -29,6 +29,6 @@ bare metal puede ser la solución adecuada. En el contexto de las [aplicaciones nativas para la nube](/es/cloud-native-apps/), generalmente pensamos en el rendimiento en términos de [escalabilidad](/es/scalability/) para una gran cantidad de eventos simultáneos, que pueden mitigarse mediante el [escalado horizontal](/es/horizontal-scaling/) (agregando más máquinas a su grupo de recursos). -Sin embargo, algunas cargas de trabajo pueden requerir [escalado vertical](/vertical-scaling/) (agregar más potencia a una máquina física existente) +Sin embargo, algunas cargas de trabajo pueden requerir [escalado vertical](/es/vertical-scaling/) (agregar más potencia a una máquina física existente) y/o una respuesta extremadamente rápida de hardware físico, en cuyo caso se adapta mejor el bare metal. Bare metal también le permite ajustar el hardware físico y posiblemente incluso los controladores de hardware para ayudarlo a realizar su tarea. diff --git a/content/es/cloud-computing.md b/content/es/cloud-computing.md index 2ccf2460bd..a02a604dd0 100644 --- a/content/es/cloud-computing.md +++ b/content/es/cloud-computing.md @@ -23,5 +23,5 @@ La computación en la nube permite a las organizaciones subcontratar una parte d Los proveedores de la nube ofrecen a las organizaciones la capacidad de alquilar recursos informáticos bajo demanda y pagar por el uso. Esto permite dos innovaciones principales: -las organizaciones pueden probar cosas sin perder tiempo planificando y gastando dinero o recursos en nueva infraestructura física y pueden [escalar](/scalability/) según sea necesario y bajo demanda. +las organizaciones pueden probar cosas sin perder tiempo planificando y gastando dinero o recursos en nueva infraestructura física y pueden [escalar](/es/scalability/) según sea necesario y bajo demanda. La computación en la nube permite a las organizaciones adoptar tanta o tan poca infraestructura como necesiten. diff --git a/content/es/cloud-native-apps.md b/content/es/cloud-native-apps.md index 348e1c1c11..2a18d38a1e 100644 --- a/content/es/cloud-native-apps.md +++ b/content/es/cloud-native-apps.md @@ -9,15 +9,15 @@ tags: ["application", "fundamental", ""] Las aplicaciones nativas para la nube están diseñadas específicamente para aprovechar las innovaciones en [computación en la nube](/es/cloud_computing/). Estas aplicaciones se integran fácilmente con sus respectivas arquitecturas en la nube, -aprovechando los recursos de la nube y las capacidades de [escalado](/scalability/). +aprovechando los recursos de la nube y las capacidades de [escalado](/es/scalability/). También se refiere a las aplicaciones que aprovechan las innovaciones en infraestructura impulsadas por la computación en la nube. Las aplicaciones nativas para la nube de hoy en día incluyen aplicaciones que se ejecutan en el centro de datos de un proveedor de la nube y en plataformas nativas de la nube on-premises. ## Problema que aborda Tradicionalmente, los entornos on-premises proporcionaban recursos informáticos de una manera bastante personalizada. -Cada centro de datos tenía servicios que [acoplaban estrechamente](/tightly-coupled-architectures/) aplicaciones a entornos específicos, -a menudo dependiendo en gran medida del aprovisionamiento manual de infraestructura, como [máquinas virtuales](/virtual_machine/) y servicios. +Cada centro de datos tenía servicios que [acoplaban estrechamente](/es/tightly-coupled-architectures/) aplicaciones a entornos específicos, +a menudo dependiendo en gran medida del aprovisionamiento manual de infraestructura, como [máquinas virtuales](/es/virtual-machine/) y servicios. Esto, a su vez, restringió a los desarrolladores y sus aplicaciones a ese centro de datos en específico. Las aplicaciones que no fueron diseñadas para la nube no pudieron aprovechar las capacidades de resiliencia y escalabilidad de un entorno de nube. Por ejemplo, las aplicaciones que requieren una intervención manual para iniciarse correctamente no pueden escalarse automáticamente, diff --git a/content/es/container-image.md b/content/es/container-image.md index cf8e7c8c87..82b0158cb2 100644 --- a/content/es/container-image.md +++ b/content/es/container-image.md @@ -21,10 +21,10 @@ Cualquier configuración errónea entre los entornos es problemática, a menudo Un entorno de aplicación tiene que ser fácil de replicar, además de estar bien definido; en caso contrario, la posibilidad de bugs y errores relacionados con el entorno aumenta. Cuando los entornos de aplicación no están configurados de manera adecuada o son inexactos, -el escalado [horizontal](/es/horizontal-scaling/) y [vertical](/vertical-scaling/) de las aplicaciones se complica y reduce su efectividad. +el escalado [horizontal](/es/horizontal-scaling/) y [vertical](/es/vertical-scaling/) de las aplicaciones se complica y reduce su efectividad. ## ¿Cómo ayuda? Las imágenes empaquetan una aplicación con todas las dependencias necesarias para ejecutarse, como el servidor de aplicación. Esto otorga consistencia en todos los entornos, incluyendo los dispositivos locales de desarrollo. -Una imagen puede dar lugar a cualquier número de contenedores, según sea necesario, permitiendo una mayor [escalabilidad](/scalability/). +Una imagen puede dar lugar a cualquier número de contenedores, según sea necesario, permitiendo una mayor [escalabilidad](/es/scalability/). diff --git a/content/es/continuous-delivery.md b/content/es/continuous-delivery.md index 369f7581d0..1d633c99c4 100644 --- a/content/es/continuous-delivery.md +++ b/content/es/continuous-delivery.md @@ -34,4 +34,4 @@ Por lo general, el desarrollo basado en troncos (trunk-based development) se usa ## Términos relacionados * [Integración Continua](/es/continuous-integration/) -* [Despliegue Continuo](/continuous_deployment/) +* [Despliegue Continuo](/es/continuous-deployment/) diff --git a/content/es/devops.md b/content/es/devops.md index e541f92508..9659c6a75e 100644 --- a/content/es/devops.md +++ b/content/es/devops.md @@ -13,7 +13,7 @@ DevOps requiere grupos de ingenieros que trabajen en componentes pequeños (en l ## Problema que aborda -Tradicionalmente, en organizaciones complejas con [aplicaciones monolíticas](/es/monolithic-apps/) con arquitecturas [estrechamente acopladas](/tightly-coupled-architectures/), +Tradicionalmente, en organizaciones complejas con [aplicaciones monolíticas](/es/monolithic-apps/) con arquitecturas [estrechamente acopladas](/es/tightly-coupled-architectures/), el trabajo generalmente se distribuía entre varios equipos. Esta fragmentación del desarrollo dio lugar a numerosos traspasos y largos plazos de entrega. Cada vez que un componente o alguna actualización estaba lista, se colocaba en una cola para el siguiente equipo. diff --git a/content/es/horizontal-scaling.md b/content/es/horizontal-scaling.md index aa536e0bb6..e60817d65b 100644 --- a/content/es/horizontal-scaling.md +++ b/content/es/horizontal-scaling.md @@ -8,7 +8,7 @@ tags: ["infrastructure", "", ""] ## ¿Qué es? Escalado horizontal es una técnica donde la capacidad del sistema es incrementada agregando más [nodos](/es/nodes) -en vez de agregar más recursos computacionales a nodos individuales (conocido como [escalado vertical](/vertical-scaling/)). +en vez de agregar más recursos computacionales a nodos individuales (conocido como [escalado vertical](/es/vertical-scaling/)). Como ejemplo, digamos que tenemos un sistema con 4 GB de memoria y queremos incrementar su capacidad a 16 GB, escalar horizontalmente significa agregar 4 x 4 GB en vez de cambiar a un sistema de 16 GB. @@ -20,7 +20,7 @@ en vez de expandir la capacidad de cada uno individualmente. ## Problema que aborda Cuando la demanda a una aplicación crece más allá de la capacidad de la misma y de su instancia, -necesitamos encontrar una manera de [escalar](/scale) (agregar capacidad) al sistema. +necesitamos encontrar una manera de [escalar](/es/scalability/) (agregar capacidad) al sistema. Podemos hacerlo agregando más nodos al sistema (escalado horizontal) o más recursos computacionales a los nodos existentes (escalado vertical). diff --git a/content/es/hypervisor.md b/content/es/hypervisor.md index 3d1d9d195b..c26fe40012 100644 --- a/content/es/hypervisor.md +++ b/content/es/hypervisor.md @@ -7,10 +7,10 @@ tags: ["application", "", ""] ## ¿Qué es? -Un hipervisor utiliza el concepto de [virtualización](/virtualization/) +Un hipervisor utiliza el concepto de [virtualización](/es/virtualization/) aprovechando los recursos de la llamada [máquina bare metal](/es/bare-metal-machine/) (CPU, memoria, recursos de red, y almacenamiento), dividiéndolos en partes más pequeñas, -y ubicando recursos suficientes para crear [máquinas virtuales](/virtual-machine/) +y ubicando recursos suficientes para crear [máquinas virtuales](/es/virtual-machine/) hasta que el servidor base alcanza su límite de funcionamiento. ## Problema que aborda diff --git a/content/es/immutable-infrastructure.md b/content/es/immutable-infrastructure.md index 034c0527ed..f15bbd5a57 100644 --- a/content/es/immutable-infrastructure.md +++ b/content/es/immutable-infrastructure.md @@ -6,7 +6,7 @@ tags: ["infrastructure", "property", ""] --- Infraestructura inmutable se refiere a la infraestructura informática -([máquinas virtuales](/virtual-machine/), [contenedores](/es/container/), dispositivos de red) +([máquinas virtuales](/es/virtual-machine/), [contenedores](/es/container/), dispositivos de red) que no se puede cambiar una vez implementada. Esto se puede hacer cumplir mediante un proceso automatizado que sobreescriba los cambios no autorizados o a través de un sistema que no permita cambios en primer lugar. diff --git a/content/es/infrastructure-as-a-service.md b/content/es/infrastructure-as-a-service.md index 135c908007..c4345b5919 100644 --- a/content/es/infrastructure-as-a-service.md +++ b/content/es/infrastructure-as-a-service.md @@ -8,7 +8,7 @@ tags: ["infrastructure", "", ""] ## ¿Qué es? Infraestructura como Servicio, o IaaS, es un modelo de servicio de [computación en la nube](/es/cloud_computing/) que -ofrece recursos de cómputo, almacenamiento y red mediante servidores [físicos](/es/bare_metal_machine/) o [virtualizados](/virtualization/) +ofrece recursos de cómputo, almacenamiento y red mediante servidores [físicos](/es/bare_metal_machine/) o [virtualizados](/es/virtualization/) suministrados bajo demanda en un modelo de pago por uso. Los proveedores de la nube poseen y operan el hardware y el software, a disposición de los consumidores en despliegues de nube pública, privada o híbrida. diff --git a/content/es/infrastructure-as-code.md b/content/es/infrastructure-as-code.md index c24c4aeb90..f69a34e09e 100644 --- a/content/es/infrastructure-as-code.md +++ b/content/es/infrastructure-as-code.md @@ -14,13 +14,13 @@ por lo general usando scripts con la consola u otras herramientas de configuraci ## Problema que aborda Construir aplicaciones de forma nativa para la nube requiere que la infraestructura sea desechable y reproducible. -Además requiere [escalar](/scalability/) bajo demanda de forma automática y repetible, potencialmente sin la intervención humana. +Además requiere [escalar](/es/scalability/) bajo demanda de forma automática y repetible, potencialmente sin la intervención humana. El aprovisionamiento manual no puede cumplir los requerimientos de respuesta y escalado de las [aplicaciones nativas para la nube](/es/cloud-native-apps/). Los cambios manuales no son reproducibles, rápidamente se enfrentan a limites de escalabilidad, e introducen errores de configuración. ## ¿Cómo ayuda? -Representados los recursos del [centro de datos](/data-center/) tales como servidores, balanceadores de carga y sub-redes como código, +Representados los recursos del [centro de datos](/es/data-center/) tales como servidores, balanceadores de carga y sub-redes como código, les permite a los equipos de infraestructura poseer una fuente única de verdad para todas las configuraciones y -también les permite administrar sus [centro de datos](/data-center/) en flujos de [CI](/es/continuous-integration/)/[CD](/es/continuous-delivery/) +también les permite administrar sus [centro de datos](/es/data-center/) en flujos de [CI](/es/continuous-integration/)/[CD](/es/continuous-delivery/) implementando un sistema de control de versiones y estrategias de despliegue. diff --git a/content/es/kubernetes.md b/content/es/kubernetes.md index 72a0a09222..948e60378d 100644 --- a/content/es/kubernetes.md +++ b/content/es/kubernetes.md @@ -23,7 +23,7 @@ La demanda de recursos de cómputo incrementa día con día y las organizaciones ## ¿Cómo ayuda? De manera parecida a las herramientas tradicionales de [infraestructura como código](/es/infrastructure-as-code/), Kubernetes ayuda con la automatización pero tiene la ventaja de trabajar con contenedores. -Los contenedores son más resistentes a fallas por diferencias en entornos a comparación con las [máquinas virtuales](/virtual-machine/) o físicas. +Los contenedores son más resistentes a fallas por diferencias en entornos a comparación con las [máquinas virtuales](/es/virtual-machine/) o físicas. Aún más, Kubernetes funciona declarativamente, lo que significa que, en lugar de que los operadores proporcionen las instrucciones sobre cómo realizar una acción, ellos describen, por lo general en archivos de manifiesto (por ejemplo, YAML), lo que quieren que se logre; Kubernetes se encargará del "cómo" por sí mismo. diff --git a/content/es/loosely-coupled-architecture.md b/content/es/loosely-coupled-architecture.md index af7f995c0d..0f5ad10170 100644 --- a/content/es/loosely-coupled-architecture.md +++ b/content/es/loosely-coupled-architecture.md @@ -7,7 +7,7 @@ tags: ["fundamental", "architecture", "property"] La arquitectura débilmente acoplada es un tipo de arquitectura en donde los componentes individuales de una aplicación se construyen de manera independiente unos de los otros -(es el paradigma opuesto a la [arquitectura fuertemente acoplada](/tightly-coupled-architectures/)). +(es el paradigma opuesto a la [arquitectura fuertemente acoplada](/es/tightly-coupled-architectures/)). Cada componente, a veces denominado [microservicio](/es/microservices/), está diseñado para realizar una función específica de manera que pueda ser utilizado por cualquier número de servicios. Este patrón es generalmente más lento de implementar que la arquitectura estrechamente acoplada, diff --git a/content/es/microservices-architecture.md b/content/es/microservices-architecture.md index 97964a5004..a5c172bc2b 100644 --- a/content/es/microservices-architecture.md +++ b/content/es/microservices-architecture.md @@ -24,7 +24,7 @@ El aumento de suscripciones exige más capacidad de suscripción. Tradicionalmente (enfoque monolítico), toda la aplicación tendría que ser [escalada](/es/scalability/) para acomodar el aumento - un uso muy ineficiente de los recursos. Las arquitecturas monolíticas también hacen que los desarrolladores tengan la posibilidad de caer en errores del diseño. -Como todo el código está en el mismo sitio, es más fácil hacer que ese código esté [estrechamente acoplado](/tightly-coupled-architectures/) y más difícil aplicar el principio de separación de preocupaciones. +Como todo el código está en el mismo sitio, es más fácil hacer que ese código esté [estrechamente acoplado](/es/tightly-coupled-architectures/) y más difícil aplicar el principio de separación de preocupaciones. Los monolitos también suelen requerir que los desarrolladores entiendan todo el código base antes de desplegar cualquier funcionalidad. La arquitectura de microservicios es una respuesta a estos retos. diff --git a/content/es/mutual-transport-layer-security.md b/content/es/mutual-transport-layer-security.md index fd327a4fe0..f6b688746b 100644 --- a/content/es/mutual-transport-layer-security.md +++ b/content/es/mutual-transport-layer-security.md @@ -7,7 +7,7 @@ tags: ["security", "networking", ""] ## ¿Qué es? -La seguridad mutua de capa de transporte (mTLS en Inglés) es una técnica utilizada para autenticar y codificar mensajes enviados entre dos [servicios](/service). +La seguridad mutua de capa de transporte (mTLS en Inglés) es una técnica utilizada para autenticar y codificar mensajes enviados entre dos [servicios](/es/service). mTLS es el protocolo de [Seguridad de capa de transporte](/es/transport-layer-security/) (TLS) estándar pero, en vez de validar la identidad de solo una conexión, se validan ambos lados. diff --git a/content/es/nodes.md b/content/es/nodes.md index a89fb2547b..0b08b09c9b 100644 --- a/content/es/nodes.md +++ b/content/es/nodes.md @@ -11,7 +11,7 @@ Un nodo es un servidor que trabaja en conjunto a otros servidores, o nodos, para Toma tu laptop, el módem y la impresora como ejemplo. Están conectados a través de tu red wifi comunicándose y colaborando, cada uno representa un nodo. En [computación en la nube](/es/cloud-computing/), un nodo puede ser un servidor físico, -un servidor virtual, denominado [VM](/virtual-machine/), o incluso un [contenedor](/es/container/). +un servidor virtual, denominado [VM](/es/virtual-machine/), o incluso un [contenedor](/es/container/). ## Problema que aborda diff --git a/content/es/platform-as-a-service.md b/content/es/platform-as-a-service.md index 3983f07336..3aa3116f6b 100644 --- a/content/es/platform-as-a-service.md +++ b/content/es/platform-as-a-service.md @@ -15,7 +15,7 @@ Heroku, Cloud Foundry y App Engine son ejemplos de ofertas de PaaS. Para aprovechar los patrones de las aplicaciones nativas para la nube como son los [microservicios](/es/microservices/) o las [aplicaciones distribuidas](/es/distributed-apps/), los equipos de operaciones y los desarrolladores necesitan ser capaces de descargar un tiempo significativo de trabajo en operaciones y mantenimiento. Estos incluyen tareas como el aprovisionamiento de infraestructura, -el manejo del [descubrimiento de servicios](/service-discovery/) y balanceo de cargas, y [escalamiento](/scalability/) de aplicaciones. +el manejo del [descubrimiento de servicios](/es/service-discovery/) y balanceo de cargas, y [escalamiento](/es/scalability/) de aplicaciones. ## ¿Cómo ayuda? diff --git a/content/es/scalability.md b/content/es/scalability.md index fb25f2e9d3..75a698cd7c 100644 --- a/content/es/scalability.md +++ b/content/es/scalability.md @@ -16,6 +16,6 @@ y ¿cuántos registros y operaciones puede soportar el plano de control? Un sistema escalable facilita agregar más capacidad. Diferenciamos entre dos enfoques de escala. Por un lado, está el [escalado horizontal](/es/horizontal-scaling/) que agrega más nodos para manejar una mayor carga. -Por el contrario, en el [escalado vertical](/vertical-scaling/) los nodos individuales se vuelven más poderosos para realizar más transacciones +Por el contrario, en el [escalado vertical](/es/vertical-scaling/) los nodos individuales se vuelven más poderosos para realizar más transacciones (por ejemplo, agregando más memoria o CPU a una máquina individual). Un sistema escalable es capaz de cambiar fácilmente y satisfacer las necesidades del usuario. diff --git a/content/es/stateful-apps.md b/content/es/stateful-apps.md index df66eaadc4..7066d0e34e 100644 --- a/content/es/stateful-apps.md +++ b/content/es/stateful-apps.md @@ -7,7 +7,7 @@ tags: ["fundamental", "application", ""] ## ¿Qué es? -Cuando hablamos de aplicaciones con estado (y [sin estado](/stateless-apps/)), +Cuando hablamos de aplicaciones con estado (y [sin estado](/es/stateless-apps/)), éste estado se refiere a cualquier dato que la aplicación necesita almacenar para funcionar. Por ejemplo, cualquier tipo de tienda en línea que recuerda tu carro de compras es una aplicación con estado. diff --git a/content/es/style-guide/_index.md b/content/es/style-guide/_index.md index e7ea12065d..5a3cc74f5e 100644 --- a/content/es/style-guide/_index.md +++ b/content/es/style-guide/_index.md @@ -159,7 +159,7 @@ Cuando corresponda, use **ejemplos del mundo real** que ayuden a los lectores (e Cuando se use en su definición, siempre **enlace a los términos existentes del glosario** (solo la primera mención debe tener un hipervínculo). -**Ejemplo**: eche un vistazo a la sección "Qué es" de la [definición de service mesh](/service-mesh/). +**Ejemplo**: eche un vistazo a la sección "Qué es" de la [definición de service mesh](/es/service-mesh/). Se vincula con las definiciones de microservicios, servicio, fiabilidad y observabilidad. Además, utiliza un ejemplo del mundo real que compara los desafíos de la red en un entorno de microservicios (algo con lo que las personas no técnicas no pueden relacionarse) con los problemas de wifi (algo que cualquiera que use una computadora portátil puede entender). From 10d04082d3caa6d896302ddb8ccc7b7774138b5d Mon Sep 17 00:00:00 2001 From: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:56:10 -0400 Subject: [PATCH 238/295] Removing Catherine maintainer mentions (#2268) * Removing Catherine as maintainer Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * how to Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> * Update content/en/_index.md Signed-off-by: Nate W --------- Signed-off-by: Catherine Paganini <74001907+CathPag@users.noreply.github.com> Signed-off-by: Nate W Co-authored-by: Nate W --- content/en/_index.md | 8 ++++---- content/en/contribute/_index.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/_index.md b/content/en/_index.md index a921b705ac..2cadf9299c 100755 --- a/content/en/_index.md +++ b/content/en/_index.md @@ -36,11 +36,11 @@ and many more contributors. For a complete contributor list, please refer to [this GitHub page](https://github.com/cncf/glossary/graphs/contributors). The Glossary is maintained by -[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), -[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), -[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), [Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/), -and [Seokho Son](https://www.linkedin.com/in/seokho-son/). +[Seokho Son](https://www.linkedin.com/in/seokho-son/), +[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), +[Jorge Castro](https://www.linkedin.com/in/jorge-castro2112/), +and [Nate W.](https://www.linkedin.com/in/nate-double-u/). ## License diff --git a/content/en/contribute/_index.md b/content/en/contribute/_index.md index f788ad764c..98e761f6c8 100644 --- a/content/en/contribute/_index.md +++ b/content/en/contribute/_index.md @@ -84,7 +84,7 @@ Once you select a term to work on, comment on the issue. ![Claiming an issue](/images/how-to/claiming-an-issue.png) Additionally, notify the maintainers on the [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) channel of the CNCF Slack workspace and -tag _@Catherine Paganini_, _@Seokho Son_, _@Jihoon Seo_, and/or _@iamnoah_ to be sure they don't miss it. +tag _@iamnoah_, _@nate-double-u_, _@Seokho Son_, _@Jihoon Seo_, and/or _@castrojo_ to be sure they don't miss it. For the next steps, please refer to the [Submitting a new term (creating a PR)](#submitting-a-new-term) section. @@ -125,7 +125,7 @@ Next, the maintainers will triage the issue. That means they will assess if the term should be part of the Glossary. Not every term will be admitted. To be included in the Glossary, they should be established and widely-used cloud native concepts. -Please let the maintainers know that you've proposed a new term on Slack and tag _@Catherine Paganini_, _@Seokho Son_, _@Jihoon Seo_, and/or _@iamnoah_ so that hey don't miss it. +Please let the maintainers know that you've proposed a new term on Slack and tag _@iamnoah_, _@nate-double-u_, _@Seokho Son_, _@Jihoon Seo_, and/or _@castrojo_ so that they don't miss it. If you want to work on the definition, let the maintainers know and they'll assign it to you. ### Submitting a new term (creating a PR) {#submitting-a-new-term} From 8cd55b7baf857bed85d315a75436b8f67f9b8698 Mon Sep 17 00:00:00 2001 From: Seokho Son Date: Thu, 7 Sep 2023 00:41:15 +0900 Subject: [PATCH 239/295] Update ownership and emeritus state (#2343) Signed-off-by: Seokho Son --- .github/settings.yml | 37 ++++++++++++++++++++++++++++++++- CODEOWNERS | 20 +++++++++++------- LOCALIZATION.md | 2 +- README.md | 26 +++++++++++++++++++---- content/en/_index.md | 13 ++++++++---- content/en/contribute/_index.md | 4 ++-- 6 files changed, 82 insertions(+), 20 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index 2c6e042df8..f659706e0a 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -83,7 +83,6 @@ collaborators: permission: push # l10n de approvers - # Note: CathPag is both Maintainer (maintain) and de approver (push) # Note: iamNoah1 is both Maintainer (maintain) and de approver (push) - username: DaveVentura permission: push @@ -180,6 +179,12 @@ collaborators: permission: push # l10n zh-tw approvers + - username: hwchiu + permission: push + + - username: johnlinp + permission: push + - username: pichuang permission: push @@ -196,6 +201,9 @@ collaborators: - username: naonishijima permission: push + - username: yuichi-nakamura + permission: push + # l10n tr approvers - username: aliok permission: push @@ -209,6 +217,13 @@ collaborators: - username: eminalemdar permission: push + # l10n ru approvers + - username: shurup + permission: push + + - username: kirkonru + permission: push + branches: # Default branch of this repository for configurations and English contents @@ -451,6 +466,8 @@ branches: apps: [] # zh-tw approvers users: + - hwchiu + - johnlinp - pichuang - ydFu teams: [] @@ -471,6 +488,7 @@ branches: - inductor - kaitoii11 - naonishijima + - yuichi-nakamura teams: [] enforce_admins: null required_linear_history: null @@ -493,3 +511,20 @@ branches: teams: [] enforce_admins: null required_linear_history: null + + # l10n branch for ru contents only + - name: dev-ru + protection: + required_pull_request_reviews: + required_approving_review_count: 2 + require_code_owner_reviews: true + required_status_checks: null + restrictions: + apps: [] + # ru approvers + users: + - shurup + - kirkonru + teams: [] + enforce_admins: null + required_linear_history: null diff --git a/CODEOWNERS b/CODEOWNERS index c99b0b542a..3718608c33 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,13 +5,13 @@ # when someone opens a pull request that modifies code that they own. # These owners will be default owners for everything in this repository. -# These owners consist of Maintainers and English approvers. -* @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u +# These owners consist of Maintainers +* @caniszczyk @seokho-son @iamNoah1 @jihoon-seo @nate-double-u # Approvers for English content -/content/en/ @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo -/i18n/en.toml @caniszczyk @CathPag @jasonmorgan @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo +/content/en/ @caniszczyk @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo +/i18n/en.toml @caniszczyk @seokho-son @iamNoah1 @jihoon-seo @nate-double-u @castrojo # These are the owners (approvers) for localization contents @@ -47,8 +47,8 @@ /i18n/it.toml @fsbaraglia @ugho16 @annalisag-spark @sistella # Approvers for Japanese contents -/content/ja/ @inductor @naonishijima @kaitoii11 -/i18n/ja.toml @inductor @naonishijima @kaitoii11 +/content/ja/ @inductor @naonishijima @kaitoii11 @yuichi-nakamura +/i18n/ja.toml @inductor @naonishijima @kaitoii11 @yuichi-nakamura # Approvers for Korean contents /content/ko/ @seokho-son @jihoon-seo @yunkon-kim @@ -58,6 +58,10 @@ /content/pt-br/ @edsoncelio @brunoguidone @jessicalins @MrErlison /i18n/pt-br.toml @edsoncelio @brunoguidone @jessicalins @MrErlison +# Approvers for Russian contents +/content/ru/ @shurup @kirkonru +/i18n/ru.toml @shurup @kirkonru + # Approvers for Turkish contents /content/tr/ @aliok @halil-bugol @developer-guy @eminalemdar /i18n/tr.toml @aliok @halil-bugol @developer-guy @eminalemdar @@ -71,5 +75,5 @@ /i18n/zh-cn.toml @hanyuancheung @Jacob953 @Rocksnake @Submarinee # Approvers for Traditional Chinese contents -/content/zh-tw/ @pichuang @ydFu -/i18n/zh-tw.toml @pichuang @ydFu +/content/zh-tw/ @pichuang @ydFu @hwchiu @johnlinp +/i18n/zh-tw.toml @pichuang @ydFu @hwchiu @johnlinp diff --git a/LOCALIZATION.md b/LOCALIZATION.md index 5646f8ce30..07917a2af4 100644 --- a/LOCALIZATION.md +++ b/LOCALIZATION.md @@ -133,7 +133,7 @@ Once the PR is merged, the localized content will go live on its website 🎉 To join an existing team, hop on the #glossary-localizations and #glossary-localization-[language name] channels on the CNCF Slack. Introduce yourself, let the team know you want to contribute, and the team will take it from there. -If the team seems inactive (no response after several days), reach out to @Seokho Son, @Catherine Paganini, @jmo, @Jihoon Seo or @Noah Ispas on the #glossary-localizations channel. +If the team seems inactive (no response after several days), reach out to @Seokho Son, @Jihoon Seo, @nate-double-u, or @Noah Ispas on the #glossary-localizations channel. --- diff --git a/README.md b/README.md index 161a55fb27..f3da6caeb1 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,28 @@ If you'd like to help with the glossary we'd love to have your contributions! Pl ## Acknowledgements -The Cloud Native Glossary was initiated by the CNCF Marketing -Committee (Business Value Subcommittee) and includes contributions -from [Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), [Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/), -[Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk), [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), [Katelin Ramer](https://www.linkedin.com/in/katelinramer/) and [Mike Foster](https://www.linkedin.com/in/mfosterche/?originalSubdomain=ca). +The Cloud Native Glossary was initiated by the CNCF Marketing Committee +(Business Value Subcommittee) and includes contributions from +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), +[Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/), +[Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk), +[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), +[Katelin Ramer](https://www.linkedin.com/in/katelinramer/), +[Mike Foster](https://www.linkedin.com/in/mfosterche/?originalSubdomain=ca), +and many more contributors. +For a complete contributor list, please refer to [this GitHub page](https://github.com/cncf/glossary/graphs/contributors). + +The Glossary is maintained by +[Seokho Son](https://www.linkedin.com/in/seokho-son/), +[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/), +[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), +[Nate W.](https://www.linkedin.com/in/nate-double-u/), +and [Jorge Castro](https://www.linkedin.com/in/jorge-castro2112/). + +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), +and [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/) +are Emeritus Maintainers, and we are deeply grateful +for their invaluable contributions over the years. ## License diff --git a/content/en/_index.md b/content/en/_index.md index 2cadf9299c..4465bc82e9 100755 --- a/content/en/_index.md +++ b/content/en/_index.md @@ -36,11 +36,16 @@ and many more contributors. For a complete contributor list, please refer to [this GitHub page](https://github.com/cncf/glossary/graphs/contributors). The Glossary is maintained by -[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/), [Seokho Son](https://www.linkedin.com/in/seokho-son/), -[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), -[Jorge Castro](https://www.linkedin.com/in/jorge-castro2112/), -and [Nate W.](https://www.linkedin.com/in/nate-double-u/). +[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/), +[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), +[Nate W.](https://www.linkedin.com/in/nate-double-u/), +and [Jorge Castro](https://www.linkedin.com/in/jorge-castro2112/). + +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), +and [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/) +are Emeritus Maintainers, and we are deeply grateful +for their invaluable contributions over the years. ## License diff --git a/content/en/contribute/_index.md b/content/en/contribute/_index.md index 98e761f6c8..3e4eb810b1 100644 --- a/content/en/contribute/_index.md +++ b/content/en/contribute/_index.md @@ -84,7 +84,7 @@ Once you select a term to work on, comment on the issue. ![Claiming an issue](/images/how-to/claiming-an-issue.png) Additionally, notify the maintainers on the [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) channel of the CNCF Slack workspace and -tag _@iamnoah_, _@nate-double-u_, _@Seokho Son_, _@Jihoon Seo_, and/or _@castrojo_ to be sure they don't miss it. +tag _@iamnoah_, _@nate-double-u_, _@Seokho Son_, _@Jihoon Seo_, and/or _@castrojo_ to be sure they don't miss it. For the next steps, please refer to the [Submitting a new term (creating a PR)](#submitting-a-new-term) section. @@ -125,7 +125,7 @@ Next, the maintainers will triage the issue. That means they will assess if the term should be part of the Glossary. Not every term will be admitted. To be included in the Glossary, they should be established and widely-used cloud native concepts. -Please let the maintainers know that you've proposed a new term on Slack and tag _@iamnoah_, _@nate-double-u_, _@Seokho Son_, _@Jihoon Seo_, and/or _@castrojo_ so that they don't miss it. +Please let the maintainers know that you've proposed a new term on Slack and tag _@iamnoah_, _@nate-double-u_, _@Seokho Son_, _@Jihoon Seo_, and/or _@castrojo_ so that they don't miss it. If you want to work on the definition, let the maintainers know and they'll assign it to you. ### Submitting a new term (creating a PR) {#submitting-a-new-term} From babdfb779c5975849d7b1a679547ae55be04684d Mon Sep 17 00:00:00 2001 From: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Date: Thu, 7 Sep 2023 00:11:52 +0200 Subject: [PATCH 240/295] [it] Localization security-chaos-engineering.md (#1629) * [it] Localization security-chaos-engineering.md Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> * Update content/it/security-chaos-engineering.md Co-authored-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --------- Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/security-chaos-engineering.md | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 content/it/security-chaos-engineering.md diff --git a/content/it/security-chaos-engineering.md b/content/it/security-chaos-engineering.md new file mode 100644 index 0000000000..387db52913 --- /dev/null +++ b/content/it/security-chaos-engineering.md @@ -0,0 +1,35 @@ +--- +title: Security Chaos Engineering +status: Completed +category: Concetto +tags: ["sicurezza", "metodologia", ""] +--- + +## Cos'è + +Security Chaos Engineering o SCE è una disciplina basata sul [Chaos Engineering](/it/chaos-engineering/). +SCE esegue proattivamente test di sicurezza su un sistema distribuito per assicurarsi che questo sia in grado di resistere a condizioni di instabilità e malevole. +I security chaos engineers utilizzano cicli di metodi scientifici per raggiungere questo obiettivo, +tra cui lo stato stazionario (steady state), ipotesi, verifica continua, lessons learned e implementazione delle mitigazioni. + + +## Quali problematiche affronta + +La priorità principale per i [site reliability engineers](/it/site-reliability-engineering/) (SRE) e gli ingegneri della sicurezza informatica è +ripristinare il servizio il più velocemente possibile con l'obiettivo di annullare il disservizio e ridurre al minimo l'impatto sul business. +Gli SRE e gli ingegneri della sicurezza informatica sono coinvolti in caso di incidente, sia prima, sia dopo il guasto. +La maggior parte delle problematiche relative alla sicurezza sono difficili da individuare e correggere rapidamente, con ripercussioni sulle funzionalità dell'applicazione o del sistema. E sono generalmente ancora più difficili da identificare durante la fase di sviluppo. + + +## In che modo aiuta + +Security Chaos Engineering si basa su [osservabilità](/it/observability/) e pratiche di resilienza informatica. +Ha lo scopo di scoprire le "incognite sconosciute" e creare fiducia nel sistema, +aumentare la resilienza informatica e migliorare l'osservabilità. + +I team di ingegneri miglioreranno progressivamente la comprensione delle questioni legate alla sicurezza +all'interno di infrastrutture complesse, piattaforme e sistemi distribuiti. +SCE migliora la resilienza informatica dell'intero prodotto, identifica problemi di sicurezza nascosti, +espone i classici punti ciechi e prepara i team per i casi limite più critici. +Questo approccio aiuta gli ingegneri SRE, [DevOps](/it/devops/) e [DevSecOps](/it/devsecops/) a +creare fiducia nel sistema, aumentare la resilienza informatica e migliorare l'osservabilità. From 353684e4dc93ae8d4370eace0e7c149525588d5b Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Thu, 7 Sep 2023 00:19:45 +0200 Subject: [PATCH 241/295] Added Cloud computing italian localization (#1662) Signed-off-by: Paolo Co-authored-by: Paolo --- content/it/cloud-computing.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 content/it/cloud-computing.md diff --git a/content/it/cloud-computing.md b/content/it/cloud-computing.md new file mode 100644 index 0000000000..589ed273c7 --- /dev/null +++ b/content/it/cloud-computing.md @@ -0,0 +1,24 @@ +--- +title: Cloud Computing +status: Completed +category: Concetto +tags: ["infrastruttura", "fondamenti", ""] +--- + +## Cos'è + +Il cloud computing è un modello che offre risorse computazionali come CPU, rete e capacità di archiviazione su richiesta attraverso internet. +Il cloud computing offre agli utenti la possibilità di accedere e utilizzare potenza di calcolo da remoto. +I cloud provider come AWS, GCP, Azure, DigitalOcean e altri offrono a terze parti la possibilità di noleggiare l'accesso a risorse computazionali in diverse località geografiche. + +## Quali problematiche affronta + +Tradizionalmente, le organizzazioni dovevano affrontare due problemi principali quando dovevano espandere il loro utilizzo di potenza di calcolo. +Potevano o acquistare, supportare, progettare, e pagare le strutture per ospitare i loro server fisici, oppure potevano espandere e mantenere quelle strutture. +Il cloud computing permette alle organizzazioni di affidare una porzione delle loro necessità di calcolo ad un'altra organizzazione. + +## In che modo aiuta + +I cloud provider offrono alle organizzazioni la possibilità di noleggiare risorse on-demand e di pagare in base all'utilizzo. +Questo ha permesso due grandi innovazioni: le organizzazioni possono focalizzarsi sul loro prodotto o servizio senza aspettare, pianificare e investire risorse su nuove strutture fisiche. Possono [scalare](/it/scalability/) a seconda della necessità e su richiesta. +Il cloud computing permette alle organizzazioni di adottare tutta (o soltanto) l'infrastruttura di cui hanno bisogno. From c39bfba94a172511c8a0de273249f3f8a61ffde9 Mon Sep 17 00:00:00 2001 From: John Lin Date: Thu, 7 Sep 2023 09:20:32 +0800 Subject: [PATCH 242/295] Update the style guide in Traditional Chinese (#2327) - update regarding to #2120 - update the translation of "cloud native" - update the translation of "how it helps" Signed-off-by: John Lin --- content/zh-tw/style-guide/_index.md | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/content/zh-tw/style-guide/_index.md b/content/zh-tw/style-guide/_index.md index e7b2121c23..2e50fec4f6 100644 --- a/content/zh-tw/style-guide/_index.md +++ b/content/zh-tw/style-guide/_index.md @@ -7,9 +7,9 @@ menu: weight: 10 --- -以下的風格指南旨在幫助你了解雲原生 Glossary 的定義結構,並在整個過程中保持一致的風格。 +以下的風格指南旨在幫助你了解雲端原生 Glossary 的定義結構,並在整個過程中保持一致的風格。 -雲原生詞彙遵循位於 CNCF 資源庫中的[預設風格指南](https://github.com/cncf/foundation/blob/master/style-guide.md)。 +雲端原生詞彙遵循位於 CNCF 資源庫中的[預設風格指南](https://github.com/cncf/foundation/blob/master/style-guide.md)。 此外,它還遵循以下規則: 1. 使用簡單、易懂的語言,避免技術術語和流行語 @@ -25,15 +25,15 @@ menu: ## 受眾 -本 Glossary 是針對技術和非技術人員編寫的。 -請確保定義使用簡單的術語並不要假定技術知識。有關定義的更多細節請參閱下面的“定義”部分。 +本 Glossary 是針對技術*和*非技術人員編寫的。 +請使用簡單的術語來解釋定義並不要假定技術知識。有關定義的更多細節請參閱下面的[定義](#definition)部分。 ## 最小可行定義 -我們的目標是讓任何人都能夠輕鬆理解雲原生術語。 +我們的目標是讓任何人都能夠輕鬆理解雲端原生術語。 因此,我們專注於簡潔明瞭。 -這意味著使用清晰簡單的語言,並提供任何使用技術的人都可以理解的示例(下面更多內容),同時提供一個*最小可行定義*,至少從技術角度上來說。 +請使用清晰簡單的語言,並提供任何使用技術的人都可以理解的示例,同時提供一個*最小可行定義*,至少從技術角度上來說。 我們不希望省略上下文和示例 — 畢竟,這些東西可以幫助讀者理解概念 — 但如果技術細節不需要理解它,我們就會跳過它。 目標不是讓事情變得過於複雜。一旦讀者了解了基本概念,其他資源將有助於他們進一步深入挖掘。 這部分超出了本 Glossary 的範圍。 @@ -57,7 +57,7 @@ category: 關於它所解決的問題的幾句話。 -## 如何幫助 +## 如何幫助我們 用幾句話說明這個東西是如何解決問題的。 ``` @@ -73,7 +73,7 @@ title: 定義樣板 ### 狀態 -**status** label 將出現在 title label 之後。status label 表明定義是經過徹底審查還是未完成的。 +**status** label 將出現在 title label 之後。這個 label 代表著這個定義距離完成還有多遠。 有效值: @@ -94,9 +94,9 @@ status: Feedback Appreciated **tag** label 跟隨著 status label。 為了讓 tag 有意義且對使用者有幫助,我們將嚴格使用它們。 應用太多的 tag 只會削弱其意義。 -除了 "fundamental",它僅表示需要理解其他雲原生概念的術語,大多數術語可能只有一個 tag。 +除了 `fundamental`,它僅表示需要理解其他雲端原生概念的術語;大多數術語可能只有一個 tag。 -**注意**:請勿在未經維護者批准的情況下引入新 tag。在為條目添加 tag 時,請確保它們的拼寫與下面列出的完全相同(單數,無錯字)。 +**注意**:請只在維護者批准的情況下引入新 tag。在為條目添加 tag 時,請確保它們的拼寫與下面列出的完全相同(單數,無錯字)。 目前的 tag 有: @@ -113,7 +113,7 @@ status: Feedback Appreciated --- title: 定義樣板 status: Feedback Appreciated -tags: ["tag 1"], ["tag 2"] +tags: ["tag 1", "tag 2", ""] --- ``` @@ -124,8 +124,8 @@ tags: ["tag 1"], ["tag 2"] **技術**和**概念**類別的定義包含三個小標題。 - **是什麼**:對我們正在談論的內容提供一個簡短而清晰的概述。 -- **解決的問題**:關注問題,而不是解決方案(這在下一節會有)。事實上,避免提及所定義的術語。問題的重點是 *什麼* 導致我們需要那個東西。 -- **如何幫助**:現在,回到這個術語上。它是如何解決上面描述的問題的? +- **解決的問題**:關注問題,而不是解決方案(這在下一節會有)。避免提及所定義的術語。問題的重點是 *什麼* 導致我們需要那個東西。 +- **如何幫助我們**:現在,回到這個術語上。它是如何解決上面描述的問題的? 注意,**屬性** 不需要單獨的章節。一個定義就足夠了。 @@ -151,23 +151,23 @@ tags: ["tag 1"], ["tag 2"] #### 保持簡單 本 Glossary 旨在 **用簡單的文字解釋複雜的概念** --這是一項令人驚訝的艱巨任務,可能需要多次修訂。 -在起草你的定義時,要始終牢記受眾。避免使用行業術語和流行語--你可能會發現自己又回到了這些術語和流行語,而且可能需要自動更正。 +在起草你的定義時,要始終牢記受眾。避免使用行業術語和流行語--你可能會發現自己又回到了這些術語和流行語,那時候你會需要訓練自己找找看其他的詞語。 在適當的時候,使用 **現實世界的例子**,幫助讀者(尤其是非技術性的)更好地理解你所解釋的概念在 *什麼時候* 和 *為什麼* 是相關的。 -當在你的定義中使用時,一定要 **連接到現有的 glossary 術語**(只有第一次提到的時候應該有超鏈接)。 +當在你的定義中使用時,一定要 **連接到現有的 Glossary 術語**(只有第一次提到的時候應該有超鏈接)。 -**例子**:看看[服務網格](/zh-tw/service_mesh/) 的"是什麼"部分。它鏈接到了微服務、服務、可靠性和可觀察性的定義。 +**例子**:看看[服務網格](/zh-tw/service-mesh/) 的"是什麼"部分。它鏈接到了微服務、服務、可靠性和可觀察性的定義。 此外,它還使用了一個真實的例子,將微服務環境中的網路挑戰(非技術人員無法理解的問題)與 wifi 問題(使用筆記型電腦的人都能理解的問題)進行比較。 在可能的情況下,嘗試建立這種聯繫。 #### 從 Google 或 Word 文件開始 我們建議從 Google 或 Word 文件開始,讓它靜置幾天,然後再重新審視。 -這將使你能夠抓住那些可以用更簡單和更容易理解的方式來表達的短語或表達方式。 +這將使你能夠抓住那些可以用更直觀和更容易理解的方式來表達的短語或表達方式。 此外,確保在提交 PR 前進行拼寫檢查。 -為了確保在工作期間沒有其他人提交 PR,請確保申請一個議題(或創建一個),並將其分配給你。更多資訊請參見[如何貢獻](/zh-tw/contribute/) 文檔。 +為了確保在工作期間沒有其他人提交 PR,請申請一個議題(或創建一個),並要求分配給你。更多資訊請參見[如何貢獻](/zh-tw/contribute/) 文檔。 在開始之前,請閱讀一些已發表的 Glossary 術語,以了解其詳細程度和難度,以及何時舉例合適。 @@ -177,7 +177,7 @@ tags: ["tag 1"], ["tag 2"] 偶爾,我們會很快審查術語;在其他情況下,可能需要一些時間 — 我們感謝你的耐心。 如果你有任何問題,請在 #glossary-localization-traditional-chinese Slack 頻道與我們聯繫(關於在哪裡以及如何找到該頻道,請參考我們的[如何貢獻](/zh-tw/contribute/) 文檔)。 -我們的目標是讓雲原生 Glossary 成為盡可能最好的資源。 +我們的目標是讓雲端原生 Glossary 成為盡可能最好的資源。 一旦你提交了一個 PR,我們可能會要求進行一次或多次修改。 不要感到沮喪 — 許多 PR 都是這樣的情況。 -這些來回的修改和我們的合作將確保你的貢獻成為一個真正有用的定義,被全球各地的讀者所閱讀和參考。 +這些來回的修改和我們的合作將確保你的貢獻成為一個有幫助的定義,被全球各地的讀者所閱讀和參考。 From bf6adde58d695d02e49c11b02f2bb90e465383a0 Mon Sep 17 00:00:00 2001 From: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Date: Thu, 7 Sep 2023 10:19:01 +0200 Subject: [PATCH 243/295] [it] Localizzazione termine Virtualization (#2102) * Added Virtualization italian localization Signed-off-by: Paolo * Apply suggestions from code review Co-authored-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> * Update content/it/virtualization.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/virtualization.md Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Update content/it/virtualization.md Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --------- Signed-off-by: Paolo Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Co-authored-by: Paolo Co-authored-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/virtualization.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/it/virtualization.md diff --git a/content/it/virtualization.md b/content/it/virtualization.md new file mode 100644 index 0000000000..d14508943d --- /dev/null +++ b/content/it/virtualization.md @@ -0,0 +1,31 @@ +--- +title: Virtualizzazione +status: completed +category: tecnologia +tags: ["fondamentali", "infrastruttura", "metodologia"] +--- + +## Cos'è + +La virtualizzazione, nell'ambito del cloud native computing (calcolo nativo su cloud), +si riferisce alla pratica per la quale a un computer fisico, talvolta denominato server, +viene consentito di eseguire più sistemi operativi isolati. +Tali sistemi operativi isolati e le risorse di calcolo ad essi dedicate (CPU, memoria e rete) vengono +chiamati macchine virtuali o VM. +Quando si parla di [macchine virtuali](/it/virtual-machine/), si fa riferimento a un computer definito da un software. +Qualcosa che sembra e agisce come un vero computer ma che condivide l'hardware con altre macchine virtuali. +Il [cloud computing](/it/cloud-computing/) è alimentato principalmente dalle tecnologie di virtualizzazione. +Per esempio, è possibile noleggiare un "computer" da un provider, ma quel computer è in realtà una VM. + +## Quali problematiche affronta + +La virtualizzazione affronta molte problematiche, tra cui il miglioramento dell'utilizzo dell'hardware fisico, +in quanto permette a più applicazioni di essere eseguite sulla stessa macchina fisica +mantenendole isolate l'una dall'altra per sicurezza. + +## In che modo aiuta + +Le applicazioni eseguite su macchine virtuali operano senza alcuna consapevolezza del fatto che condividono una stessa risorsa fisica. +La virtualizzazione permette anche agli utenti del [datacenter](/it/datacenter/) di avviare un nuovo "computer" (cioè una VM) in pochi minuti, +senza preoccuparsi dei vincoli fisici di dover aggiungere del nuovo hardware al datacenter. +Le VM consentono inoltre agli utenti di ridurre il tempo necessario per mettere a disposizione un nuovo computer. From 120f4327c8fbd1007078dcfa409d57021fca6f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ste=CC=81phane=20Este-Gracias?= Date: Sun, 10 Sep 2023 13:22:57 +0200 Subject: [PATCH 244/295] Add guillaumebernard84 as an fr approver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- .github/settings.yml | 4 ++++ CODEOWNERS | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index f659706e0a..a34302f576 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -171,6 +171,9 @@ collaborators: - username: sestegra permission: push + - username: guillaumebernard84 + permission: push + # l10n ur approvers - username: Saim-Safdar permission: push @@ -434,6 +437,7 @@ branches: - fydrah - Krast76 - sestegra + - guillaumebernard84 teams: [] enforce_admins: null required_linear_history: null diff --git a/CODEOWNERS b/CODEOWNERS index 3718608c33..dc1651172c 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -35,8 +35,8 @@ /i18n/es.toml @raelga @ramrodo @electrocucaracha @krol3 @92nqb # Approvers for French contents -/content/fr/ @huats @fydrah @Krast76 @sestegra -/i18n/fr.toml @huats @fydrah @Krast76 @sestegra +/content/fr/ @huats @fydrah @Krast76 @sestegra @guillaumebernard84 +/i18n/fr.toml @huats @fydrah @Krast76 @sestegra @guillaumebernard84 # Approvers for Hindi contents /content/hi/ @Garima-Negi @sayantani11 @anubha-v-ardhan @jayesh-srivastava From 1391a6de50d9a22b1510bf647f3c8c8dc584dc64 Mon Sep 17 00:00:00 2001 From: Rafael Natali <40840504+rafaelmnatali@users.noreply.github.com> Date: Sun, 10 Sep 2023 20:11:58 +0100 Subject: [PATCH 245/295] add distributed-system (#2340) * add distributed-system Signed-off-by: Rafael Natali * fix typo, add links to scalability-related pages Signed-off-by: Rafael Natali --------- Signed-off-by: Rafael Natali --- content/pt-br/distributed-systems.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 content/pt-br/distributed-systems.md diff --git a/content/pt-br/distributed-systems.md b/content/pt-br/distributed-systems.md new file mode 100644 index 0000000000..38fb84b1a3 --- /dev/null +++ b/content/pt-br/distributed-systems.md @@ -0,0 +1,22 @@ +--- +title: Sistemas Distribuídos +status: Completed +category: conceito +tags: ["arquitetura", "", ""] +--- + +## O que é + +Um sistema distribuído é uma coleção de elementos de computação autônomos conectados por uma rede que aparece para os usuários como um único sistema coerente. Geralmente referidos como [nós](/pt-br/nodes/), esses componentes podem ser dispositivos de hardware (por exemplo, computadores, telefones móveis) ou processos de software. Os nós são programados para alcançar um objetivo comum e, para colaborar, eles trocam mensagens pela rede. + +## Problema relacionado + +Hoje, inúmeras aplicações modernas são tão grandes que precisariam de supercomputadores para operar. Pense no Gmail ou Netflix. Nenhum computador único é suficientemente poderoso para hospedar toda a aplicação. Ao conectar vários computadores, o poder computacional se torna praticamente ilimitado. Sem a computação distribuída, muitas das aplicações das quais dependemos hoje não seriam possíveis. + +Tradicionalmente, os sistemas seriam [escalados](/pt-br/scalability) verticalmente. Isso significa adicionar mais CPU ou memória a uma máquina individual. A [escalabilidade vertical](/pt-br/vertical-scaling/) é demorada, requer tempo de inatividade e atinge seu limite rapidamente. + +## Como ajuda + +Sistemas distribuídos permitem a [escalabilidade horizontal](/horizontal-scaling/) (por exemplo, adicionar mais nós ao sistema sempre que necessário). Isso pode ser automatizado, permitindo que um sistema lide com um aumento repentino na carga de trabalho ou no consumo de recursos. + +Um sistema não distribuído expõe-se a riscos de falhas, porque se uma máquina falhar, o sistema inteiro falha. Um sistema distribuído pode ser projetado de tal maneira que, mesmo se algumas máquinas falharem, o sistema geral ainda pode continuar funcionando para produzir o mesmo resultado. From 60c53f49b987f95dd7a5da3da3c9a41682898748 Mon Sep 17 00:00:00 2001 From: Ader Fu Date: Tue, 12 Sep 2023 10:11:49 +0800 Subject: [PATCH 246/295] [tw] Add acknowledgement for initial localization contributors list (#2363) Signed-off-by: ydFu --- content/zh-tw/_index.md | 49 ++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/content/zh-tw/_index.md b/content/zh-tw/_index.md index 0d891b39d6..dec8ba3035 100644 --- a/content/zh-tw/_index.md +++ b/content/zh-tw/_index.md @@ -1,44 +1,57 @@ --- -title: "雲原生詞彙表" +title: "雲端原生 Glossary" status: Completed --- -# 雲原生詞彙表 {#cloud-native-glossary} +# 雲端原生 Glossary {#cloud-native-glossary} -雲原生詞彙表旨在通過使人們更容易理解來使雲原生領域 — 以其複雜而聞名 — 變得更簡單,不僅適用於技術人員,還適用於商業人員。 -為了實現這一目標,我們注重簡潔(例如,使用不帶行話的簡單語言,使用任何使用技術的人都可以相關的示例,省略不必要的細節)。 -本詞彙表是由 CNCF 商業價值小組(Business Value Subcommittee; BVS)領導的專案。 +雲端原生 Glossary 主要目標在使人們更容易理解,將以複雜而聞名雲端原生領域變得更簡單好懂,不僅限於技術人士,也同樣適用於商業人士。 +為了實現這一目標,我們注重簡潔(例如:使用簡單用語描述且不包含流行用語、使用任何技術的人都可以通用的範例、省略不必要的細節)。 +Glossary 是由 CNCF 商業價值小組(Business Value Subcommittee; BVS)領導的專案。

People watching a Kubecon presentation

## 貢獻 {#contributing} -歡迎所有人對雲原生詞彙表提出更改、補充和改進。 -我們採用由 CNCF 管理的社群驅動的流程來開發和改進這個共享詞彙表。 -詞彙表提供了一個供所有參與者使用的供應商中立平台,以組織雲原生技術的共享詞彙。 +歡迎所有人對雲端原生 Glossary 提出更改、補充和改進。 +我們採用由 CNCF 管理的社群驅動的流程來開發和改進這個共享 Glossary 。 +Glossary 提供了一個所有參與者使用且供應商保持中立的平台,以組織雲端原生技術的共享詞彙。 歡迎所有遵守本專案宗旨和章程的參與者做出貢獻。 -任何希望做出貢獻的人都可以提交 GitHub 議題或創建拉取請求。 -請確保您遵循[風格指南](/zh-tw/style-guide/),閱讀[如何貢獻](/zh-tw/contribute/)文檔,並加入 CNCF Slack上的[#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB)頻道。 -也有一個 [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF)頻道,供那些想將詞彙表翻譯為其本地化語言的人使用。 +任何希望貢獻的人都可以提交 GitHub 議題或創建拉取請求。 +請確保您遵循[風格指南](/zh-tw/style-guide/),閱讀[如何參與貢獻](/zh-tw/contribute/)文件,加入 [CNCF Slack](https://communityinviter.com/apps/cloud-native/cncf)工作區,並加入 [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB)頻道。 + +也有一個 [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF)頻道,提供想將 Glossary 翻譯為其本地化語言的人們使用。 ## 致謝 {#acknowledgements} -雲原生詞彙表由 CNCF 行銷委員會 (CNCF Marketing Committee)(商業價值小組委員會)發起,包括來自 +雲端原生 Glossary 由 CNCF 行銷委員會 (CNCF Marketing Committee)(商業價值小組委員會)發起,包括來自 [Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/)、 [Chris Aniszczyk](https://www.linkedin.com/in/caniszczyk/)、 [Daniel Jones](https://www.linkedin.com/in/danieljoneseb/?originalSubdomain=uk)、 [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/)、 [Katelin Ramer](https://www.linkedin.com/in/katelinramer/)、 [Mike Foster](https://www.linkedin.com/in/mfosterche/?originalSubdomain=ca)和許多的貢獻者。 -如想獲得完整的貢獻者名單,請參考[此 GitHub page](https://github.com/cncf/glossary/graphs/contributors)。 +如果想獲得完整的貢獻者名單,請參考[此 GitHub page](https://github.com/cncf/glossary/graphs/contributors)。 -詞彙表主要維護由 -[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/)、 -[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/)、 +Glossary 主要維護由 +[Seokho Son](https://www.linkedin.com/in/seokho-son/)、 +[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/)、 [Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/)、 -[Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/) -和 [Seokho Son](https://www.linkedin.com/in/seokho-son/)。 +[Nate W.](https://www.linkedin.com/in/nate-double-u/) +和 [Jorge Castro](https://www.linkedin.com/in/jorge-castro2112/)。 + +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/) +和 [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/) +他們是名譽維護者,我們深深的感激他們多年來所做出的寶貴貢獻。 + +最後,雲端原生 Glossary 的繁體中文本地化工作,由雲端原生 Glossary 繁中本地化團隊 +[傅耀德(Ader Fu)](https://github.com/ydfu)、 +[黃秉鈞(Phil Huang)](https://github.com/pichuang)、 +[邱宏瑋(HungWei Chiu)](https://github.com/hwchiu) +和[林自均(John Lin)](https://github.com/johnlinp) +進行貢獻與維護, +同時也有眾多繁體中文貢獻者 [#glossary-localization-traditional-chinese](https://cloud-native.slack.com/archives/C055KERTNCX) 在頻道中參與討論與貢獻。 ## 授權條款 {#license} From 1b801007fdf876af5309c9d1ba24baa39a1c9c65 Mon Sep 17 00:00:00 2001 From: Yunkon Kim Date: Thu, 14 Sep 2023 08:46:14 +0900 Subject: [PATCH 247/295] Update check-outdated-content.yaml (#2388) Remove "./" from directory path as it affects file reference URL creation For example, https://github.com/cncf/glossary/blob/dev-ko/./content/ko/cloud-computing.md Signed-off-by: Yunkon Kim --- .github/workflows/check-outdated-content.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/check-outdated-content.yaml b/.github/workflows/check-outdated-content.yaml index 3b4014a680..12349d9b26 100644 --- a/.github/workflows/check-outdated-content.yaml +++ b/.github/workflows/check-outdated-content.yaml @@ -46,16 +46,16 @@ jobs: # Set L10n directory case "${L10N_BRANCH}" in dev-pt) - L10N_DIR="./content/pt-br/" + L10N_DIR="content/pt-br/" ;; dev-zh) - L10N_DIR="./content/zh-cn/" + L10N_DIR="content/zh-cn/" ;; dev-tw) - L10N_DIR="./content/zh-tw/" + L10N_DIR="content/zh-tw/" ;; *) - L10N_DIR="./content/${L10N_CODE}/" + L10N_DIR="content/${L10N_CODE}/" ;; esac echo "(DEBUG) L10N Directory: ${L10N_DIR}" @@ -133,16 +133,16 @@ jobs: echo "(DEBUG) FILE_DIR: ${FILE_DIR}" echo "(DEBUG) FILE_NAME: ${FILE_NAME}" echo "(DEBUG) Localized file path: $L10N_FILE_PATH" - echo "(DEBUG) Original file path: ./content/en/${FILE_PATH}" + echo "(DEBUG) Original file path: content/en/${FILE_PATH}" # Create subdirectories mkdir -p ${OUTPUT_DIR}/${FILE_DIR} # Actually compare between the old and lastest English content and log diff in the file - if [[ -f "./content/en/${FILE_PATH}" ]]; then + if [[ -f "content/en/${FILE_PATH}" ]]; then # File exists # Check changes - git diff ${OLD_BRANCH}..${LATEST_BRANCH} -- ./content/en/${FILE_PATH} > temp.diff + git diff ${OLD_BRANCH}..${LATEST_BRANCH} -- content/en/${FILE_PATH} > temp.diff if [[ -s "temp.diff" ]]; then echo "(DEBUG) ${FILE_PATH} is outdated." From 7ddaeeebdf8c6793461ac21e40dd36e22a05ca6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Este-Gracias?= Date: Thu, 14 Sep 2023 11:40:59 +0200 Subject: [PATCH 248/295] [FR] Update _index.md (#2369) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Este-Gracias --- content/fr/_index.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/content/fr/_index.md b/content/fr/_index.md index 44b3f2667d..8a9988abd1 100755 --- a/content/fr/_index.md +++ b/content/fr/_index.md @@ -1,13 +1,16 @@ --- title: "Glossaire Cloud Native" +status: Completed --- # Glossaire Cloud Native +Le Glossaire Cloud Native a pour objectif de démystifier l'univers Cloud Natif, réputé pour sa complexité. +Il vise à le rendre accessible aussi bien aux spécialistes technologiques qu'aux acteurs du monde des affaires. +Pour y parvenir, nous mettons l'accent sur la simplicité (par exemple, un langage simple sans buzzwords, des exemples auxquels toute personne utilisant la technologie peut se rapporter, en laissant de côte les détails inutiles). Le Glossaire Cloud Native est un project dirigé par le Comité Marketing de la CNCF (Business Value Subcommittee, BVS). -Son rôle est d'expliquer les concepts Cloud Natives en termes simples et clairs, et sans nécessité de connaissances techniques. -

Une femme et deux hommes en présentation technique

+

Personnes regardant une présentation de la Kubecon

## Contribution @@ -33,11 +36,24 @@ et bien d'autres contributeurs. Pour la liste complète des contributeurs, se référer à la [Page GitHub](https://github.com/cncf/glossary/graphs/contributors). Ce Glossaire est maintenue par -[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), -[Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/), -[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), +[Seokho Son](https://www.linkedin.com/in/seokho-son/), [Noah Ispas](https://www.linkedin.com/in/noah-ispas-0665b42a/), -et [Seokho Son](https://www.linkedin.com/in/seokho-son/). +[Jihoon Seo](https://www.linkedin.com/in/jihoon-seo/), +[Nate W.](https://www.linkedin.com/in/nate-double-u/), +and [Jorge Castro](https://www.linkedin.com/in/jorge-castro2112/). + +[Catherine Paganini](https://www.linkedin.com/in/catherinepaganini/en/), +et [Jason Morgan](https://www.linkedin.com/in/jasonmorgan2/) +sont des Mainteneurs Émérites, et nous leur sommes profondément reconnaissants pour leurs contributions inestimables au fil des années. + +Enfin, la traduction et localisation française du Glossaire Cloud Native sont réalisées et maintenues par +[Christophe Sauthier](https://www.linkedin.com/in/christophesauthier/), +[Flavien Hardy](https://www.linkedin.com/in/flavien-h-93208a18b/), +[Ludovic Logiou](https://www.linkedin.com/in/ludovic-%F0%9F%92%BB-logiou-98123978/), +[Stéphane Este-Gracias](https://www.linkedin.com/in/sestegra/), +[Guillaume Bernard](https://www.linkedin.com/in/gbernardit/), +et divers contributeurs. +Pour ceux intéressés à contribuer à la traduction et à la localisation du glossaire en français, un canal [#glossary-localization-french](https://cloud-native.slack.com/archives/C03JHQ02FCH) est disponible. ## Licence From 8f8d1ce20e38cbb5752f84e1706401ddf7302eb4 Mon Sep 17 00:00:00 2001 From: Seokho Son Date: Sat, 16 Sep 2023 21:53:20 +0900 Subject: [PATCH 249/295] Add a Workflow that automatically add a comment based on labels (#2389) * Add auto-comment-config.yaml Signed-off-by: Seokho Son * Workflow automatically add comment based on label Signed-off-by: Seokho Son * Apply review for auto-comment-config.yaml Signed-off-by: Seokho Son --------- Signed-off-by: Seokho Son --- .github/auto-comment-config.yaml | 7 +++ .github/workflows/auto-comment.yml | 70 ++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 .github/auto-comment-config.yaml create mode 100644 .github/workflows/auto-comment.yml diff --git a/.github/auto-comment-config.yaml b/.github/auto-comment-config.yaml new file mode 100644 index 0000000000..3832b13bb3 --- /dev/null +++ b/.github/auto-comment-config.yaml @@ -0,0 +1,7 @@ +label_mappings: + - labels: + - hold + comment: Wait, please do not proceed with this yet. + - labels: + - lang/en + comment: To see where this is in the review pipeline and follow the progress, please look at the [definition review board](https://github.com/orgs/cncf/projects/26/views/1). diff --git a/.github/workflows/auto-comment.yml b/.github/workflows/auto-comment.yml new file mode 100644 index 0000000000..1dc35616cc --- /dev/null +++ b/.github/workflows/auto-comment.yml @@ -0,0 +1,70 @@ +name: Auto Comment on Labeled PR + +on: + pull_request_target: + types: + - labeled + - unlabeled + +permissions: + pull-requests: write + +jobs: + comment: + runs-on: ubuntu-latest + steps: + # Checkout the repository code to the runner. + - name: Checkout code + uses: actions/checkout@v3 + + # Create a bin directory in the runner's home + - name: Create bin directory + run: | + mkdir -p $HOME/bin + echo "$HOME/bin" >> $GITHUB_PATH + + # Install the latest jq and yq from GitHub releases + - name: Install jq and yq + run: | + wget https://github.com/jqlang/jq/releases/latest/download/jq-linux-amd64 -O $HOME/bin/jq + chmod +x $HOME/bin/jq + wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O $HOME/bin/yq + chmod +x $HOME/bin/yq + + # Main logic for adding comments based on labels. + - name: Comment on PR based on external config + run: | + # Fetch the labels attached to the PR from the GitHub event JSON. + pr_labels=$(jq -r '.pull_request.labels[] | .name' "$GITHUB_EVENT_PATH" | tr '\n' ' ') + + # Define the path to the external YAML config file. + config_file=".github/auto-comment-config.yaml" + + # Get the number of label-comment mappings defined in the config file. + num_mappings=$(yq e '.label_mappings | length' "$config_file") + + # Loop through each label-comment mapping in the config file. + for (( i=0; i<$num_mappings; i++ )); do + # Fetch the labels and comment for the current mapping. + mapfile -t labels < <(yq e ".label_mappings[$i].labels[]" "$config_file") + comment=$(yq e ".label_mappings[$i].comment" "$config_file") + + # Check if all required labels from the current mapping are present in the PR. + for label in "${labels[@]}"; do + if [[ ! $pr_labels == *"$label"* ]]; then + echo "One or more required labels not found. Skipping." + continue 2 # Skip to the next iteration of the outer loop. + fi + done + + # Fetch the PR number from the GitHub event JSON. + pr_number=$(jq -r '.pull_request.number' "$GITHUB_EVENT_PATH") + + # If all required labels are found, add the comment to the PR. + echo "All required labels found. Adding comment." + gh pr comment "$pr_number" --body "$comment" + + done + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash From 6b4adc9bb9ac3ff479dcc55e7f6a837203cd6e22 Mon Sep 17 00:00:00 2001 From: Ader Fu Date: Sun, 17 Sep 2023 18:19:02 +0800 Subject: [PATCH 250/295] [tw] Update contribute/_index.md for Traditional Chinese (#2359) Signed-off-by: ydFu --- content/zh-tw/contribute/_index.md | 66 +++++++++++++++--------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/content/zh-tw/contribute/_index.md b/content/zh-tw/contribute/_index.md index 5fba72fdc3..7eddfc26e6 100644 --- a/content/zh-tw/contribute/_index.md +++ b/content/zh-tw/contribute/_index.md @@ -1,5 +1,5 @@ --- -title: 如何貢獻 +title: 如何參與貢獻 toc_hide: true status: Completed menu: @@ -7,25 +7,25 @@ menu: weight: 10 --- -## 歡迎 +## 歡迎 {#welcome} -歡迎使用 Cloud Native Glossary 的貢獻指南,感謝您的關注。 +歡迎使用雲端原生 Glossary 的貢獻指南,感謝您的關注。 您可以透過以下方式參與貢獻,我們將在此進行詳細說明: -1) [處理現有議題](#work-on-an-existing-issue) +1) [在現有議題上進行工作](#work-on-an-existing-issue) 2) [提出新術語](#propose-new-terms) 3) [更新現有術語](#update-an-existing-term) -4) [本地化術語表](#help-localize-the-glossary) +4) [幫助本地化 Glossary](#help-localize-the-glossary) -## CNCF Glossary 概述 +## CNCF Glossary 概述 {#cncf-glossary-overview} 該 Glossary 的目標是簡化複雜的雲端原生領域,使其更容易被人們理解和使用。 -Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.com/cncf/glossary) 中, -您可以在那裡找到有關 Glossary 的[議題](https://github.com/cncf/glossary/issues)、拉取請求(([PRs](https://github.com/cncf/glossary/pulls))和 +雲端原生 Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.com/cncf/glossary)中, +您可以在那裡找到有關 Glossary 的[議題](https://github.com/cncf/glossary/issues)、拉取請求([PRs](https://github.com/cncf/glossary/pulls))和 [討論](https://github.com/cncf/glossary/discussions)。 -## 誰可以貢獻? +## 誰可以貢獻? {#who-can-contribute} 您如何參與此專案取決於您的雲端原生專業知識水準。 簡化複雜的概念需要對該主題有深入的了解。 @@ -37,17 +37,18 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co 如果您尚未成為雲端原生專家但仍想貢獻,我們建議與專家合作。 一旦專家確信術語準確描述概念,您就可以做出第一個 Glossary 貢獻。 -本地化是初學者可以為 Glossary 提供有價值貢獻的地方。 -在英語中有堅實的現有定義的情況下,經驗較少的貢獻者可以將術語本地化到目標語言。您可以加入現有的本地化團隊或創建新的本地化團隊。閱讀本指南的[幫助本地化 Glossary](#help-localize-the-glossary)章節,了解如何開始。 +本地化工作是精通另一種語言的初學者可以為 Glossary 做出寶貴貢獻的地方。 +借助現有的可靠英語定義,經驗不足的貢獻者可以將術語本地化為目標語言。您可以加入現有的本地化團隊或創建新的本地化團隊。 +請閱讀本指南中[幫助本地化 Glossary](#help-localize-the-glossary) 章節,了解如何開始。 -## 開始之前 +## 開始之前 {#before-you-start} 在開始您的 Glossary 貢獻之前,請確認完成以下步驟: 1. 建立 [GitHub 帳號](https://docs.github.com/zh/get-started/signing-up-for-github/signing-up-for-a-new-github-account),如果您還沒有的話。 2. 簽署[貢獻者授權協議(Contributor License Agreement)](https://docs.linuxfoundation.org/lfx/easycla/v2-current/contributors) (CLA)。 3. [驗證您的提交簽名](https://docs.github.com/zh/authentication/managing-commit-signature-verification/about-commit-signature-verification)。 -4. 啟用 [vigilant mode](https://docs.github.com/zh/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode)在您的 GitHub 帳戶上,以顯示 "Verified" 狀態在您的提交上。 +4. 啟用 [vigilant mode](https://docs.github.com/zh/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode) 在您的 GitHub 帳戶上,以顯示 "Verified" 狀態在您的提交上。 ## 最佳實踐 {#best-practices} @@ -55,19 +56,19 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co 我們建議查看這份 [markdown cheat sheet](https://www.markdownguide.org/cheat-sheet/) 以正確地在 GitHub 中格式化 Markdown 文本(例如,超連結、粗體、斜體)。 並且在命名 .md 文件時,請使用小寫字母和連字符而不是空格來分隔議題,避免使用括號。 -## 樣式指南 +## 風格指南 {#style-guide} -閱讀我們的[樣式指南](/zh-tw/style-guide/) 以了解我們的格式和撰寫文件的指南,使貢獻流程更加高效。 +閱讀我們的[風格指南](/zh-tw/style-guide/)以了解我們的格式和撰寫文件的指南,使貢獻流程更加高效。 ## 加入 Glossary 社群! {#join-the-glossary-community} 如果您想定期貢獻,請考慮加入我們的 Glossary 工作組月會。 -您可以在 [CNCF 行事曆](https://www.cncf.io/calendar/) 中找到會議詳細資訊。 +您可以在 [CNCF 行事曆](https://www.cncf.io/calendar/)中找到會議詳細資訊。 您也可以在 CNCF Slack 的 [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) 頻道中與維護人員和其他貢獻者聯繫 - 我們很樂意認識您! ## 在現有議題上進行工作 {#work-on-an-existing-issue} -前往[Glossary GitHub 存儲庫的議題](https://github.com/cncf/glossary/issues)找到可用議題列表。您可以使用標籤(例如,英語語言、需要幫助、良好的第一個議題)過濾議題。 +前往 [Glossary GitHub 存儲庫的議題](https://github.com/cncf/glossary/issues)找到可用議題列表。您可以使用標籤(例如,英語語言、需要幫助、良好的第一個議題)過濾議題。 ![議題和標籤](/images/how-to/issue-and-labels.png) @@ -80,9 +81,9 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co ![聲明議題](/images/how-to/claiming-an-issue.png) 此外,請在 CNCF Slack 工作區的 [#glossary](https://cloud-native.slack.com/archives/C02TX20MQBB) 頻道中通知維護者 -並標記 _@Catherine Paganini_, _@Seokho Son_, _@Jihoon Seo_, 和/或 _@iamnoah_,以確保他們不會錯過它。 +並標記 _@iamnoah_、_@nate-double-u_、_@Seokho Son_、_@Jihoon Seo_ 和/或 _@castrojo_,以確保他們不會錯過它。 -有關下一步,請參閱[提交新術語(創建 PR)](#submitting-a-new-term) 部分。 +有關下一步,請參閱[提交新術語(創建 PR)](#submitting-a-new-term)部分。 **注意**:您只能在維護人員將議題分配給您後開始處理議題。 您一次只能聲明一個術語。 @@ -92,7 +93,7 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co 您可以提出新術語供他人研究,或自己創建新定義。 不管哪種方式,您都需要從[新增議題](#creating-an-issue)開始。 -每個新術語必須符合 [CNCF的雲端原生定義](https://github.com/cncf/toc/blob/main/DEFINITION.md)才能被添加到 glossary 中。 +每個新術語必須符合 [CNCF 的雲端原生定義](https://github.com/cncf/toc/blob/main/DEFINITION.md)才能被添加到 Glossary 中。 唯一的例外是理解雲端原生概念所需的基礎術語。 以下是對於不熟悉 GitHub 的人的逐步指南。 @@ -120,30 +121,30 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co 接下來,維護者將會進行緊急處理。這意味著他們將評估該術語是否應該成為 Glossary 的一部分。 並不是每個術語都會被批准。若要納入 Glossary,它們應該是建立且廣泛使用的雲端原生概念。 -請讓維護者知道您已在 Slack 上提出新術語並標記 _@Catherine Paganini_、_@Seokho Son_、_@Jihoon Seo_ 和/或 _@iamnoah_,以便他們不會錯過。 +請讓維護者知道您已在 Slack 上提出新術語並標記 _@iamnoah_、_@nate-double-u_、_@Seokho Son_、_@Jihoon Seo_ 和/或 _@castrojo_,以便他們不會錯過。 如果您想編寫定義,請讓維護者知道,他們會指派它給您。 ### 提交新術語(創建 PR){#submitting-a-new-term} -如我們的[風格指南](/zh-tw/style-guide/)所述,我們強烈建議先使用Google 文檔或 Word 文檔進行起草。 +如我們的[風格指南](/zh-tw/style-guide/)所述,我們強烈建議先使用 Google 文檔或 Word 文檔進行起草。 -一旦術語準備好提交,請轉到 content(在<>程式碼下)… +一旦術語準備好提交,請轉到 content(在 <> 程式碼下)... ![content](/images/how-to/howto-05.png) -…然後轉到 "zh-tw" 或您要貢獻的語言的前兩個字母… +...然後轉到 "en" 或您要貢獻的語言的前兩個字母... ![語言文件夾](/images/how-to/howto-06.png) -…並選擇 `_TEMPLATE.md` +...並選擇 `_TEMPLATE.md` ![樣板](/images/how-to/howto-07.png) -複製內容… +複製內容... ![複製內容](/images/how-to/howto-08.png) -…然後返回 "zh-tw" 文件夾。單擊 "Add file" 並選擇 "Create new file"。 +...然後返回 "en" 文件夾。單擊 "Add file" 並選擇 "Create new file"。 ![創建新文件](/images/how-to/howto-09.png) @@ -193,14 +194,14 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co 這將打開術語的 GitHub 頁面。進行修改並建立 PR。 請參考上面的[最佳實踐](#best-practices)部分, -並閱讀我們的[樣式指南](/zh-tw/style-guide/)以確保您遵循我們的指南。 +並閱讀我們的[風格指南](/zh-tw/style-guide/)以確保您遵循我們的指南。 -## 幫助本地化術語表 {#help-localize-the-glossary} +## 幫助本地化 Glossary {#help-localize-the-glossary} -如果要幫助將術語表本地化為目標語言,請加入 CNCF Slack 工作區中的[#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF)頻道,然後發送消息給我們。 +如果要幫助將術語表本地化為目標語言,請加入 CNCF Slack 工作區中的 [#glossary-localizations](https://cloud-native.slack.com/archives/C02N2RGFXDF)頻道,然後發送消息給我們。 您可以加入現有團隊或創建新團隊 (要查看需要什麼,請閱讀我們的[本地化指南](https://github.com/cncf/glossary/blob/main/LOCALIZATION.md))。 -請閱讀目標語言的**如何貢獻**指南,以了解該團隊的具體貢獻流程。 +請閱讀目標語言的**如何參與貢獻**指南,以了解該團隊的具體貢獻流程。 ## 拼寫檢查 {#spell-check} @@ -217,5 +218,4 @@ Cloud Native Glossary 的內容存儲在[此 GitHub 存儲庫](https://github.co **注意**:拼寫檢查不區分大小寫。 - -**我們基於[The Good Docs Project](https://thegooddocsproject.dev/)的樣板更新了此指南。** +**我們基於 [The Good Docs Project](https://thegooddocsproject.dev/)的樣板更新了此指南。** From 8f63973a62fece1779f386f785a3ea779ea99f6a Mon Sep 17 00:00:00 2001 From: "Yuan-Heng,Kuo" <56747201+Fionn88@users.noreply.github.com> Date: Sun, 17 Sep 2023 18:23:14 +0800 Subject: [PATCH 251/295] [tw] Localize Site Reliability Engineering for Traditional Chinese (#2372) (#2398) Signed-off-by: Yuan-Heng,Kuo --- content/zh-tw/site-reliability-engineering.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/zh-tw/site-reliability-engineering.md diff --git a/content/zh-tw/site-reliability-engineering.md b/content/zh-tw/site-reliability-engineering.md new file mode 100644 index 0000000000..eb3ebedb05 --- /dev/null +++ b/content/zh-tw/site-reliability-engineering.md @@ -0,0 +1,29 @@ +--- +title: 網站可靠性工程 +status: Completed +category: 概念 +tags: ["方法論", "", ""] +--- + +## 是什麼 {#what-it-is} + +網站可靠性工程(SRE)是一門結合了維運和軟體工程的專業。 +它主要應用於基礎設施和維運問題。 +這意味著,網站可靠性工程師不是建構產品功能,而是建構系統來運行應用程式。 +雖然 SRE 和 [DevOps](/zh-tw/devops/) 有相似之處,但是 DevOps 主要關注將程式碼部署到正式環境, +而 SRE 則確保正式環境中運行的程式碼正確運作。 + +## 解決的問題 {#problem-it-addresses} + +確保應用程式運行具備[可靠性](/zh-tw/reliability/),需要具備多項能力, +從效能監控、警報、除錯到故障排除都是必要的。 +如果缺少這些能力,系統操作員只能對問題做出反應,卻無法主動努力避免它們, +而造成停機僅是時間問題。 + +## 如何幫助我們 {#how-it-helps} + +網站可靠性工程透過持續改進底層系統, +以最大限度地降低軟體開發過程的成本、時間和工作量。 +該系統持續測量和監控基礎設施和應用程式的元件。 +當出現問題時,系統會向網站可靠性工程師指示何時、何處以及如何修復它。 +這種方法通過自動化操作的任務,有助於創建高度的[擴展性](/zh-tw/scalability/)和可靠性的軟體系統。 From 21a4399705d034da37b3799f97f3ab3e51b63612 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 08:53:48 +0900 Subject: [PATCH 252/295] Bump actions/checkout from 3 to 4 (#2418) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/auto-comment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-comment.yml b/.github/workflows/auto-comment.yml index 1dc35616cc..9a977c5c89 100644 --- a/.github/workflows/auto-comment.yml +++ b/.github/workflows/auto-comment.yml @@ -15,7 +15,7 @@ jobs: steps: # Checkout the repository code to the runner. - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Create a bin directory in the runner's home - name: Create bin directory From d1ea90c94bcaf815f02ac3369f8f514ee1afcebf Mon Sep 17 00:00:00 2001 From: John Lin Date: Tue, 12 Sep 2023 09:27:02 +0800 Subject: [PATCH 253/295] [tw] Localize Virtual Machine for Traditional Chinese (#2308) Signed-off-by: John Lin --- content/zh-tw/virtual-machine.md | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 content/zh-tw/virtual-machine.md diff --git a/content/zh-tw/virtual-machine.md b/content/zh-tw/virtual-machine.md new file mode 100644 index 0000000000..3dc567eb6f --- /dev/null +++ b/content/zh-tw/virtual-machine.md @@ -0,0 +1,40 @@ +--- +title: 虛擬機器 +status: Completed +category: 技術 +tags: ["基本原理", "基礎設施", ""] +--- + +## 是什麼 {#what-it-is} + +虛擬機器(VM)是一台不受限於特定硬體的計算機及其作業系統。 +透過[虛擬化](/zh-tw/virtualization/)技術, +我們可以將一台實體的計算機分割成多台虛擬的計算機。 +這種分割可以讓組織和基礎設施提供者能輕鬆地建立和刪除虛擬機器, +而不會影響底層的硬體。 + +## 解決的問題 {#problem-it-addresses} + +當一台[裸機](/zh-tw/bare-metal-machine/)綁定到單一作業系統時, +該計算機的資源使用情況通常在某種程度上會受到限制。 +另外,當一個作業系統綁定到單一實體計算機時, +其可用性也會與該硬體的直接相關。 +如果實體計算機因為維護或硬體故障而離線, +該作業系統也會隨之離線。 + +## 如何幫助我們 {#how-it-helps} + +透過解除作業系統與單一實體計算機之間的直接綁定, +我們便可以解決裸機的幾個問題: +佈建時間、硬體使用率和復原力。 + +在佈建新的虛擬機器時, +我們不需要為此購買、安裝或設定新的硬體, +所以佈建一台新計算機的時間便可以大幅地縮短。 +由於我們可以將多台虛擬機器放置在一台實體計算機上, +這讓我們能夠更有效率地使用既有的硬體資源。 +虛擬機器不受特定實體計算機的限制, +因此也比實體計算機更具有復原力。 +當一台實體計算機需要離線時, +運行於其上的虛擬機器可以無需或只需極少的停機時間, +便可以轉移到另一台實體計算機上。 From 581109ec035919d1c33cd23baca73d603462acf2 Mon Sep 17 00:00:00 2001 From: Noah Ispas Date: Wed, 27 Sep 2023 09:56:37 +0100 Subject: [PATCH 254/295] Merge dev-de in main (#2421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noah Ispas (iamNoah1) Signed-off-by: DaveVentura <47860237+DaveVentura@users.noreply.github.com> Signed-off-by: Noah Ispas <13436814+iamNoah1@users.noreply.github.com> Signed-off-by: Baris Cubukcuoglu Signed-off-by: Noah Ispas Signed-off-by: David Wagner Co-authored-by: Seokho Son Co-authored-by: Dennis Groß Co-authored-by: Petria3s <47123427+Petria3s@users.noreply.github.com> Co-authored-by: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Co-authored-by: Oliver L Co-authored-by: Christian Hüning Co-authored-by: DaveVentura <47860237+DaveVentura@users.noreply.github.com> Co-authored-by: Max Körbächer Co-authored-by: David Wagner Co-authored-by: Baris Cubukcuoglu Co-authored-by: David Wagner Co-authored-by: Baris Cubukcuoglu --- config.toml | 1 + content/de/bare-metal-machine.md | 23 ++++++++++++++++++ content/de/client-server-architecture.md | 31 ++++++++++++++++++++++++ content/de/cluster.md | 29 ++++++++++++++++++++++ content/de/containers.md | 31 ++++++++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 content/de/bare-metal-machine.md create mode 100644 content/de/client-server-architecture.md create mode 100644 content/de/cluster.md create mode 100644 content/de/containers.md diff --git a/config.toml b/config.toml index 17c1d79fe6..9d31f025ef 100644 --- a/config.toml +++ b/config.toml @@ -68,6 +68,7 @@ description = "The CNCF Cloud Native Glossary Project is intended to be used as #time_format_default = "02.01.2006" #time_format_blog = "02.01.2006" + [languages.hi] title = "क्लाउड नेटिव शब्दावली" languageName ="हिन्दी (Hindi)" diff --git a/content/de/bare-metal-machine.md b/content/de/bare-metal-machine.md new file mode 100644 index 0000000000..f6a53e5f62 --- /dev/null +++ b/content/de/bare-metal-machine.md @@ -0,0 +1,23 @@ +--- +title: Bare Metal Machine +status: Completed +category: Technologie +--- + +## Was es ist + +Bare Metal beschreibt einen physischen Computer, der als Server verwendet wird und leistungsstarke Hardware besitzt. +Demgegenüber stehen virtuelle Maschinen, die einen Großteil der Server ausmachen. + +## Welches Problem es löst + +Bei Virtualisierungen kommt es zu künstlicher Verzögerung bei der Übersetzung von Betriebssystemanweisungen in Maschinencode. +Falls die Verarbeitung eines Workloads einen schnellen Zugriff auf Hardwareressourcen erfordert, kann Bare Metal die richtige Lösung sein. + +## Wie es das Problem löst + +Durch die Bereitstellung der gesamten Ressourcen eines physischen Computers für ein einziges Betriebssystem, kann die bestmögliche Leistung erzielt werden. +Durch die Skalierbarkeit von [Cloud Native Apps](/cloud-native-apps/) kann eine große Anzahl von parallelen Events effizient verarbeitet werden. +Dies kann entweder durch horizontale oder vertikale Skalierung erreicht werden. +Für bestimmte Workloads kann eine vertikale Skalierung und/oder eine schnelle Reaktionszeit der physischen Hardware erforderlich sein. +Für diesen Fall eignet sich Bare Metal. \ No newline at end of file diff --git a/content/de/client-server-architecture.md b/content/de/client-server-architecture.md new file mode 100644 index 0000000000..2ab617f972 --- /dev/null +++ b/content/de/client-server-architecture.md @@ -0,0 +1,31 @@ +--- +title: Client-Server-Architektur +status: Completed +category: Konzept +--- + +## Was es ist + +Bei einer Client-Server-Architektur ist eine Anwendung in zwei oder mehr Komponenten aufgeteilt. Dabei wird unterschieden zwischen Clients und Servern. +Ein Client fordert die Erledigung einer Aufgabe bei einem Server an und der Server wiederum nimmt diese Anfrage entgegen und bearbeitet die Aufgabe. +Ein Beispiel dafür ist Google Mail. Der Client ist in diesem Fall die Webanwendung bzw. die UI, die im Browser des Nutzers ausgeführt wird. +Mit einem Klick auf "Email senden" wird die geschriebene Email and den Server gesendet, der in der Cloud von Google läuft und die Email an den Empfänger weiterleitet. + +Dies steht im Gegensatz zu sogenannten "Standalone" Anwendungen (z. B. Desktop-Anwendungen), die die gesamte Arbeit eigenständig erledigen. +So kann beispielsweise ein Textverarbeitungsprogramm wie Microsoft Word vollständig auf dem Computer des Nutzers installiert und ausgeführt werden. + +## Welches Problem es löst + +Eine Client-Server-Architektur löst eine große Herausforderung, die in sich geschlossene Anwendungen mit sich bringen: Regelmäßige Aktualisierungen. +Bei einer Standalone-Anwendung müssten die Benutzer bei jeder Aktualisierung die neueste Version herunterladen und installieren. +Zum Beispiel müssten sich die Benutzer regelmäßig den kompletten Produktkatalog von Amazon auf ihre Computer herunterladen. +Außerdem vereinfacht es die gemeinsame Nutzung von Daten. So müssen Daten nicht mehr verschickt oder sogar auf physischen Datenträgern weitergegeben werden. +Je größer eine Applikation ist, desto höher werden die Anforderungen an das Endgerät. +Wachsende Standalone Anwendungen belegen dadurch immer mehr physische Ressourcen auf der Maschine des Nutzers. + +## Wie es das Problem löst + +Durch die Implementierung der Anwendungslogik in einem Server können die Betreiber diese aktualisieren, ohne die Logik auf der Client-Seite ändern zu müssen. +Das führt dazu, dass Aktualisierungen viel häufiger vorgenommen werden können. +Die Speicherung von Daten auf dem Server ermöglicht es vielen Clients, dieselben Daten zu sehen und gemeinsam zu nutzen. +Bei einer Client-Server-Architektur muss auf dem Endgerät des Nutzers nicht die komplette Applikation laufen, sondern nur der vergleichsweise schmale Client. Das Backend kann auf externen Servern laufen, die entsprechend hochskaliert werden können. diff --git a/content/de/cluster.md b/content/de/cluster.md new file mode 100644 index 0000000000..f40455eb62 --- /dev/null +++ b/content/de/cluster.md @@ -0,0 +1,29 @@ +--- +title: Cluster +status: Completed +category: Konzept +tags: ["infrastruktur", "grundlegendes", ""] +--- + +## Was es ist + +Ein Cluster ist eine Gruppe von Computern, die ein gemeinsames Ziel haben und als eine Einheit auftreten. +Im Kontext von [Cloud Native Technologien](/cloud-native-tech/) wird der Begriff häufig mit [Kubernetes](/kubernetes/) gleichgesetzt. +Jedenfalls kommunizieren einzelnen Computer über ein Netzwerk miteinander. + + +## Welches Problem es löst + +Anwendungen, die nur auf einem einzelnen Computer betrieben werden, stellen einen Single Point of Failure dar. + +Business-kritische Systeme können offline gehen, wenn dieser Computer oder die Anwendung darin abstürzt. +Ein weiteres Szenario könnte sein, dass dieser Computer oder die Anwendung darin zwar funktionsfähig sind, +aber über das Netzwerk nicht erreichbar sind. + + +## Wie es das Problem löst + +Ein Cluster löst dieses Problem indem mehr als nur ein Computer verwendet wird. +Man spricht hier auch von verteilten Systemen. +Wenn einer dieser Computer oder die Anwendung darin abstürzt oder aus anderen Gründen ausfällt, können die anderen Computer übernehmen. +Hierfür wird üblicherweise eine Komponente verwendet, die als Load Balancer bekannt ist und Anfragen an ein Cluster lediglich an erreichbare Computer weiterleitet. \ No newline at end of file diff --git a/content/de/containers.md b/content/de/containers.md new file mode 100644 index 0000000000..5df6532e12 --- /dev/null +++ b/content/de/containers.md @@ -0,0 +1,31 @@ +--- +title: Container +status: Completed +category: Konzept +--- + +## Was es ist + +Ein Container ist eine virtuelle isolierte Umgebung, die als Prozess mit Ressourcen- und Kapazitätsbeschränkungen auf einem Computer läuft und von dessen Betriebssystem verwaltet wird. +Dabei werden dem Container virtuelle Ressourcen des Hosts reserviert und zugeordnet. +Es können mehrere Container auf derselben Maschine laufen und es wird von der Container-Engine sichergestellt, +dass diese nicht dieselben physischen Ressourcen belegen und auch nicht miteinander interagieren. +Benötigte Tools und Dateien werden zu einem autonomen Container-Image verpackt, welches von einer Container-Engine ohne weitere Abhängigkeiten von Tools oder Dateien ausgeführt werden kann. + +## Welches Problem es löst + +Bevor es Container gab, waren separate Rechner oder [virtuellen Maschinen](/virtual-machine/) erforderlich, um Anwendungen auszuführen. +Jede Maschine benötigte ihr eigenes Betriebssystem, das CPU, Speicher und Festplattenplatz beanspruchte, damit eine einzelne Anwendung funktionieren konnte. +Führte man mehrere Anwendungen auf derselben Maschine aus, konnte das zu Konflikten in der Ressourcenbelegung führen, wenn z.B. zwei Anwendungen auf die selbe Speicherstelle zugreifen. +Darüber hinaus ist die Wartung, das Upgrade und der Start eines Betriebssystems eine weitere mühsame Angelegenheit. + + +## Wie es das Problem löst + +Container teilen sich dasselbe Betriebssystem, jedoch sind sie durch die Zuordnung virtueller Ressourcen voneinander isoliert, wodurch der Ressourcen-Overhead des Betriebssystems verteilt wird und eine effiziente Nutzung des physischen Rechners ermöglicht wird. +Dadurch können mehrere Anwendungen auf demselben physischen Rechner ausgeführt werden. +Durch die Nutzung des zugrunde liegenden Betriebssystems, sind sie im Vergleich zu [virtuellen Maschinen](/virtual-machine/) sehr leichtgewichtig und können schneller hoch- und heruntergefahren werden. + +Allerdings gibt es auch Einschränkungen. +Da Container das selbe Betriebssystem nutzen, können Prozesse als weniger sicher angesehen werden. +Um die Ressourcen zu garantieren, müssen die Administratoren die Speicher- und CPU-Nutzung einschränken und begrenzen, damit andere Anwendungen keine schlechten Leistungen erbringen oder abstürzen. From dbf5c0ece152106307fd1896b6f35480eef52b88 Mon Sep 17 00:00:00 2001 From: Julia Furst Morgado <52685951+juliafmorgado@users.noreply.github.com> Date: Thu, 28 Sep 2023 20:26:18 -0400 Subject: [PATCH 255/295] Update role-based-access-control.md Signed-off-by: Julia Furst Morgado <52685951+juliafmorgado@users.noreply.github.com> --- content/en/role-based-access-control.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/content/en/role-based-access-control.md b/content/en/role-based-access-control.md index 95fab8a3be..ede0a7b970 100644 --- a/content/en/role-based-access-control.md +++ b/content/en/role-based-access-control.md @@ -2,25 +2,18 @@ title: Role-Based Access Control (RBAC) status: Completed category: concept +tags: ["security", "", ""] --- ## What it is -Role-based access control (RBAC) is a method to regulate system and resource access based on individual user roles within an organization. -Each job function has a specific role and permissions. -For instance, a marketing team member may have permission to view sales deals in the pipeline (*read* permission) but won't be allowed to edit them (*write* permission). -Sales and marketing have different permissions based on their roles, hence role-based access control, and the same applies to roles within engineering teams. +Role-Based Access Control (RBAC) is a method used to regulate access to systems and resources based on user roles within an organization. Each job function is associated with specific roles and permissions. For example, a member of the marketing team may be granted permission to view sales deals in the pipeline (*read* permission) but is restricted from making edits (*write* permission). Different permissions are assigned to roles in sales, marketing, and similar distinctions apply within engineering teams. ## Problem it addresses -Individually managing access permissions of multiple users across various system resources and data can be complex. -After all, each user likely needs access to a different set of resources. -Let's say an organization has 500 developers (users) and 300 resources with varying permission levels (read, write, and no access). The administrator must ensure each user has the correct permissions for all 300 resources. -RBAC simplifies the process by providing predefined access control based on role groups. +Individually managing access permissions for multiple users across a variety of system resources and data can be a complex task. Each user typically requires access to a different set of specific resources. Let's consider an organization with 500 developers (users) and 300 resources with varying permission levels (read, write, and no access). The administrator must ensure that each user is granted the correct permissions for all 300 resources. RBAC simplifies this process by providing predefined access control based on role groups. ## How it helps -RBAC provides granular control over user permissions within software systems. -Depending on their roles, team members can modify a section, only view it, or have no access at all. -This granular permission allocation allows team members with different roles to work on the same system while minimizing risk. +RBAC offers precise control over user permissions within software systems. Depending on their roles, team members can modify a section, view it exclusively, or be completely restricted from accessing it. This granular permission allocation enables team members with distinct roles to collaborate on the same system while minimizing security risks. From 13e2039a43a29b278f5f661adb7f230ae374b255 Mon Sep 17 00:00:00 2001 From: Julia Furst Morgado <52685951+juliafmorgado@users.noreply.github.com> Date: Sun, 1 Oct 2023 10:13:06 -0400 Subject: [PATCH 256/295] Update role-based-access-control.md Added a line break after each sentence. Signed-off-by: Julia Furst Morgado <52685951+juliafmorgado@users.noreply.github.com> --- content/en/role-based-access-control.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/content/en/role-based-access-control.md b/content/en/role-based-access-control.md index ede0a7b970..d2d36c103d 100644 --- a/content/en/role-based-access-control.md +++ b/content/en/role-based-access-control.md @@ -7,13 +7,22 @@ tags: ["security", "", ""] ## What it is -Role-Based Access Control (RBAC) is a method used to regulate access to systems and resources based on user roles within an organization. Each job function is associated with specific roles and permissions. For example, a member of the marketing team may be granted permission to view sales deals in the pipeline (*read* permission) but is restricted from making edits (*write* permission). Different permissions are assigned to roles in sales, marketing, and similar distinctions apply within engineering teams. +Role-Based Access Control (RBAC) is a method used to regulate access to systems and resources based on user roles within an organization. +Each job function is associated with specific roles and permissions. +For example, a member of the marketing team may be granted permission to view sales deals in the pipeline (*read* permission) but is restricted from making edits (*write* permission). +Different permissions are assigned to roles in sales, marketing, and similar distinctions apply within engineering teams. ## Problem it addresses -Individually managing access permissions for multiple users across a variety of system resources and data can be a complex task. Each user typically requires access to a different set of specific resources. Let's consider an organization with 500 developers (users) and 300 resources with varying permission levels (read, write, and no access). The administrator must ensure that each user is granted the correct permissions for all 300 resources. RBAC simplifies this process by providing predefined access control based on role groups. +Individually managing access permissions for multiple users across a variety of system resources and data can be a complex task. +Each user typically requires access to a different set of specific resources. +Let's consider an organization with 500 developers (users) and 300 resources with varying permission levels (read, write, and no access). +The administrator must ensure that each user is granted the correct permissions for all 300 resources. +RBAC simplifies this process by providing predefined access control based on role groups. ## How it helps -RBAC offers precise control over user permissions within software systems. Depending on their roles, team members can modify a section, view it exclusively, or be completely restricted from accessing it. This granular permission allocation enables team members with distinct roles to collaborate on the same system while minimizing security risks. +RBAC offers precise control over user permissions within software systems. +Depending on their roles, team members can modify a section, view it exclusively, or be completely restricted from accessing it. +This granular permission allocation enables team members with distinct roles to collaborate on the same system while minimizing security risks. From 73c0673ba7a1437e440dc73d5e6df96bdf625bc7 Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Tue, 3 Oct 2023 08:01:32 +0100 Subject: [PATCH 257/295] Localize ebpf #2334 (#2361) Signed-off-by: Matteo Bisi Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> --- content/it/ebpf.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 content/it/ebpf.md diff --git a/content/it/ebpf.md b/content/it/ebpf.md new file mode 100644 index 0000000000..72eb1cbe82 --- /dev/null +++ b/content/it/ebpf.md @@ -0,0 +1,37 @@ +--- +title: eBPF +status: Completed +category: architettura +--- + +## Cos'è + +eBPF, per esteso "Berkeley Packet Filter", è una tecnologia che consente di eseguire piccoli programmi o script in sandbox nello spazio kernel di un sistema Linux, +senza dover modificare il codice sorgente del kernel o caricare moduli del kernel Linux specifici. +Un sistema Linux ha due spazi di esecuzione dei processi: il kernel e lo spazio utente. +Il kernel rappresenta il nucleo del sistema operativo ed è l'unica parte con accesso illimitato all'hardware. +Le applicazioni risiedono nello spazio utente e, quando necessitano di autorizzazioni più elevate, inviano una richiesta al kernel. +Per le applicazioni che richiedono piu previlegi, come l'accesso diretto all'hardware, +il kernel può essere esteso tramite l'approccio noto come "moduli kernel Linux". +Questo approccio estende la funzionalità predefinita del kernel, consentendo alle applicazioni un accesso più profondo ai componenti sottostanti. +Tuttavia, questo approccio introduce anche rischi di sicurezza, rendendo eBPF un'alternativa interessante. + +## Quali problematiche affronta +In genere, le applicazioni vengono eseguite nello spazio utente e, se l'applicazione richiede alcuni privilegi dal kernel (ad esempio per accedere a una parte hardware), +lo richiede al kernel tramite una "chiamata di sistema". +Nella maggior parte dei casi, questo approccio funziona bene. Ci sono però dei casi, come ad esempio nell'utilizzo di funzionalità di osservabilità, sicurezza e networking, +in cui gli sviluppatori richiedono una maggiore flessibilità per l'accesso al sistema a basso livello. +A questo scopo, possiamo utilizzare i moduli del kernel Linux, che estendono la base del kernel senza richiederne la modifica del codice sorgente. +Sebbene ci siano vantaggi nell'utilizzo dei moduli del kernel Linux, questo approccio introduce anche rischi per la sicurezza: +operando nello spazio kernel, in caso di problemi i moduli del kernel Linux possono causare il crash del kernel stesso e, quando il kernel si blocca, si blocca anche l'intera macchina. +Inoltre, i moduli del kernel hanno privilegi elevati e accesso diretto alle risorse di sistema. Se non sono adeguatamente protetti, gli aggressori possono sfruttarli. + +## In che modo aiuta +eBPF offre un ambiente controllato e delimitato per l'esecuzione di programmi definiti dall'utente rispetto ai moduli del kernel Linux. +Viene eseguito in un ambiente sandbox all'interno del kernel, fornendo isolamento e mitigazione dei rischi. +Se una vulnerabilità o un difetto vengono sfruttate in un programma eBPF, l'impatto è generalmente limitato all'ambiente sandbox. +Inoltre, prima che un programma eBPF possa iniziare a essere eseguito nel kernel, deve superare alcune verifiche. +All'interno del kernel, un componente chiamato "eBPF verifier", controlla il programma eBPF per potenziali violazioni di sicurezza, +come l'accesso alla memoria fuori dai limiti, i loop infiniti e le funzioni del kernel non autorizzate. +In questo modo, si assicura che il programma non entri in un loop infinito e causi un crash del kernel. +Questi controlli di sicurezza rendono eBPF un'opzione più sicura per eseguire applicazioni nel kernel Linux rispetto ai moduli del kernel Linux. \ No newline at end of file From 9c5f2de2c4a7830b95924f63a00902f3cc2e4a2d Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Tue, 3 Oct 2023 08:14:57 +0100 Subject: [PATCH 258/295] Localize runtime #2335 (#2374) Signed-off-by: Matteo Bisi Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> --- content/it/runtime.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 content/it/runtime.md diff --git a/content/it/runtime.md b/content/it/runtime.md new file mode 100644 index 0000000000..75201eb0e0 --- /dev/null +++ b/content/it/runtime.md @@ -0,0 +1,35 @@ +--- +title: Runtime +status: Completed +category: concetto +tags: ["applicazione", "", ""] +--- + +## Cos'è + +Un runtime, in generale, esegue un software. +È un'[astrazione](/it/abstraction/) del sistema operativo sottostante che traduce i comandi del programma in azioni corrispondenti perché siano utili al sistema operativo stesso. + +Nel contesto [cloud native](/it/cloud-native-apps/), il termine runtime si riferisce generalmente al runtime dei container. +Un container runtime è un implementazione che segue le specifiche [Open Container Initiative](https://opencontainers.org/) per garantire una gestione coerente dei container nelle differenti tecnologie di orchestrazione degli stessi. + +## Quali problematiche affronta +Senza l'astrazione di un runtime del container, l'applicazione dovrebbe occuparsi di tutte le meccaniche di ciascun sistema operativo, aumentando la complessità dell'esecuzione dell'applicazione. + +## In che modo aiuta +I container runtime sono un componente necessario degli orchestratori di container come [Kubernetes](/it/kubernetes). +Gestiscono il ciclo di vita del container, che fa principalmente tre cose: + +- definisce come vengono specificate le immagini del container e come il runtime può recuperarle; +- gestisce come queste immagini vengono decompresse, stratificate, montate ed eseguite; +- gestisce le risorse hardware occupandosi di tutte queste azioni a livello di sistema operativo, come allocazione e isolamento delle risorse. + +Nel tempo, diverse implementazioni di container runtime hanno continuato ad evolversi, portando alla Specifica OCI, che è diventata lo standard per i runtime dei container. +L'introduzione di questo standard consente agli utenti finali di combinare qualsiasi runtime conforme a OCI con qualsiasi orchestratore di container conforme a OCI (come Kubernetes). + +## Termini correlati + +- [Cloud Native](/it/cloud-native-apps/) +- [Containerization](/it/containerization/) +- [Container Orchestration](/it/container-orchestration/) +- [Microservices Architecture](/it/microservices-architecture/) \ No newline at end of file From a1bb6b371b3589464b9b1cd2a5161e2d84386620 Mon Sep 17 00:00:00 2001 From: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Date: Tue, 3 Oct 2023 09:48:16 +0200 Subject: [PATCH 259/295] [it] Localization function-as-a-service.md (#1630) Signed-off-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Signed-off-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Francesco Sbaraglia <23255586+fsbaraglia@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/function-as-a-service.md | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 content/it/function-as-a-service.md diff --git a/content/it/function-as-a-service.md b/content/it/function-as-a-service.md new file mode 100644 index 0000000000..1ef489a320 --- /dev/null +++ b/content/it/function-as-a-service.md @@ -0,0 +1,37 @@ +--- +title: Function as a Service (FaaS) +status: Completed +category: Tecnologia +tags: ["infrastruttura", "", ""] +--- + +## Cos'è + +Function as a Service (FaaS) è un tipo di [servizio](/it/service/) di [cloud computing](/it/cloud-computing/) [serverless](/it/serverless/) +che consente l'esecuzione di codice in risposta agli eventi senza mantenere la complessa infrastruttura +tipicamente associata alla creazione e all'avvio di applicazioni a [microservizi](/it/microservices/). +Con FaaS, gli utenti gestiscono solo funzioni e dati mentre il provider cloud gestisce l'applicazione. +Ciò consente agli sviluppatori di ottenere le funzioni di cui hanno bisogno senza pagare per i servizi quando il codice non è in esecuzione. + + +## Quale problema affronta + +In uno scenario tradizionale on-premise, un'azienda gestisce e mantiene il proprio data center. +L'azienda deve investire in server, storage, software e altre tecnologie +e potenzialmente assumere uno staff IT o dei consulenti per l'acquisto, la gestione e l'aggiornamento di tutte le apparecchiature e le licenze. +Il data center deve essere costruito per soddisfare i picchi di domanda, anche quando i carichi di lavoro diminuiscono e quelle risorse restano inattive. +Viceversa, se l'azienda cresce rapidamente, il reparto IT potrebbe avere difficoltà a tenere il passo. +In base a un modello di cloud computing standard [Infrastructure-as-a-Service (IaaS)](/it/infrastructure-as-a-service/), +gli utenti preacquistano unità di capacità, il che significa pagare un provider di cloud pubblico per componenti server sempre attivi su cui eseguire le proprie app. +È responsabilità dell'utente aumentare la capacità del server durante i periodi di forte domanda +e ridimensionare quando tale capacità non è più necessaria. +Insomma, l'infrastruttura cloud necessaria per eseguire un'app rimane attiva anche quando l'app non viene utilizzata. + + +## In che modo aiuta + +FaaS offre agli sviluppatori un'[astrazione](/it/abstraction/) per l'esecuzione di applicazioni Web in risposta a eventi senza gestire i server. +Ad esempio, il caricamento di un file potrebbe attivare un codice personalizzato che transcodifica il file in vari formati. +L'infrastruttura FaaS ridimensionerà automaticamente il codice per un uso intenso, +e lo sviluppatore non dovrà dedicare tempo o risorse alla creazione del codice per garantirne la [scalabilità](/it/scalability/). +La fatturazione si basa solo sul tempo di calcolo, il che significa che le aziende non devono pagare quando le funzioni non sono in uso. From 1101845e56619b9185db764eed11faeeca479ec8 Mon Sep 17 00:00:00 2001 From: "Fionn Kuo(Yuan-Heng, Kuo)" <56747201+Fionn88@users.noreply.github.com> Date: Fri, 6 Oct 2023 12:04:33 +0800 Subject: [PATCH 260/295] [tw] Localize Chaos Engineering for Traditional Chinese (#2412) (#2424) Signed-off-by: Yuan-Heng,Kuo --- content/zh-tw/chaos-engineering.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/zh-tw/chaos-engineering.md diff --git a/content/zh-tw/chaos-engineering.md b/content/zh-tw/chaos-engineering.md new file mode 100644 index 0000000000..ff965a9786 --- /dev/null +++ b/content/zh-tw/chaos-engineering.md @@ -0,0 +1,23 @@ +--- +title: 混沌工程 +status: Completed +category: 概念 +tags: ["方法論", "", ""] +--- + +## 是什麼 {#what-it-is} + +混沌工程或 CE,是在正式環境中對[分散式系統](/zh-tw/distributed-system/)進行實驗的專業,以建立對系統在承受混亂和意外情況下時能力的信心。 + +## 解決的問題 {#problem-it-addresses} + +[SRE](/zh-tw/site-reliability-engineering/) 和 [DevOps](/zh-tw/devops/) 實踐注重提高產品的彈性和[可靠性](/zh-tw/reliability/)技術。 +系統在故障容錯時確保有足夠服務品質的能力通常是軟體開發的要求。有幾個方面可能導致應用程式發生故障,例如基礎設施、平台或(基於[微服務](/zh-tw/microservices/)的)應用程式的其他部分。 +在正式環境中高頻率部署新功能會增加導致停機和嚴重事件發生的可能性,這對業務會產生重大影響。 + +## 如何幫助我們 {#how-it-helps} + +混沌工程是一種滿足彈性需求的技術。它用於達成對基礎設施、平台和應用程序故障容錯。 +混沌工程師使用混沌實驗來主動注入隨機故障,以驗證應用程序、基礎設施或平台是否能夠自我修復,並且故障不會明顯影響客戶。 +混沌實驗旨在發現盲點(例如監控或自動擴展技術),並在嚴重事件期間提升團隊之間的溝通。 +這種方法有助於提高系統的彈性和團隊對複雜系統的信心,尤其是正式環境。 From 560a1b98cbf875ad5874872368e4155394a99ff5 Mon Sep 17 00:00:00 2001 From: HungWei Chiu Date: Sun, 1 Oct 2023 17:07:23 +0800 Subject: [PATCH 261/295] [tw]Update Horizontal Scaling for Traditional Chinese Signed-off-by: HungWei Chiu --- content/zh-tw/horizontal-scaling.md | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/zh-tw/horizontal-scaling.md diff --git a/content/zh-tw/horizontal-scaling.md b/content/zh-tw/horizontal-scaling.md new file mode 100644 index 0000000000..0d0263099f --- /dev/null +++ b/content/zh-tw/horizontal-scaling.md @@ -0,0 +1,32 @@ +--- +title: 水平擴展 +status: Completed +category: 概念 +tags: ["基礎設施", "", ""] +--- + +## 是什麼 {#what-it-is} + +水平擴展是一種透過加入更多[節點](/zh-tw/nodes/)而非對單一節點加入更多計算資源來提升系統容量的技術 (後者稱為[垂直擴展](/zh-tw/vertical-scaling/))。 +假設我們有一個 4GB RAM 的系統,並且想要提升其容量到 16 GB RAM,水平擴展代表的是加入 4 X 4GB RAM 的系統而非切換到一台 16GB RAM 的系統。 + +這種方式透過添加更多實例或[節點](/zh-tw/nodes)來提升應用程式的效能,以達到更好的工作負載。 +簡單來說,其目的是減少伺服器的負載而非擴充單一伺服器上的容量。 + +## 解決的問題 {#problem-it-addresses} + +隨者對應用程式成長的需求超越該應用程式的當前容量, +我們需要找到一種方式來[擴展](/zh-tw/scalability/)(增加容量)系統。 +我們可以加入更多節點到系統中(水平擴展)或是加入更多計算資源到現有節點上(垂直擴展) + +## 如何幫助我們 {#how-it-helps} + +水平擴展允許應用程式在底層叢集的限制範圍中去擴展。 +透過加入更多的實例到系統中,應用程式能夠處理更多請求。 +如果單一節點每秒可以處理 1000 個請求,則每一個額外的節點都能夠讓每秒多處理大約 1000 個請求。 +這使得應用程式可在不加入更多容量到任何節點的情況下去同時執行更多工作。 + +## 相關詞彙 {#relatead-terms} + +* [垂直擴展](/zh-tw/vertical-scaling/) +* [自動擴展](/zh-tw/auto-scaling/) From c41a12920571585e8a260dea06b816917dc1d45f Mon Sep 17 00:00:00 2001 From: John Lin Date: Tue, 10 Oct 2023 04:08:42 -0700 Subject: [PATCH 262/295] [tw] Localize Nodes for Traditional Chinese (#2465) Signed-off-by: John Lin --- content/zh-tw/nodes.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 content/zh-tw/nodes.md diff --git a/content/zh-tw/nodes.md b/content/zh-tw/nodes.md new file mode 100644 index 0000000000..99289cf529 --- /dev/null +++ b/content/zh-tw/nodes.md @@ -0,0 +1,36 @@ +--- +title: 節點 +status: Completed +category: 概念 +tags: ["基礎設施", "基本原理", ""] +--- + +## 是什麼 {#what-it-is} + +節點是一台會與其他計算機(或稱節點)一起運作以完成共同任務的計算機。 +舉例來說, +你的筆記型電腦、數據機和印表機都連接在你的無線網路上進行通訊和協作, +其中每個裝置都都代表一個節點。 +在[雲端運算](/zh-tw/cloud-computing/)中, +一個節點可以是一台實體計算機, +或是一台虛擬機器([VM](/zh-tw/virtual-machine/)), +甚至可以是一個[容器](/zh-tw/container/)。 + +## 解決的問題 {#problem-it-addresses} + +雖然一個應用程式可以(而且很多都這麼做)在一台單獨的計算機上運行, +但這樣會存在一些風險。 +主要是因為底層系統的故障會干擾應用程式的運行。 +為了解決這個問題, +開發人員們開始建立[分散式應用程式](/zh-tw/distributed-apps/), +讓每個行程都在自己的節點上運行。 +因此,執行這些應用程式或是行程的節點們便會形成一個節點[叢集](/zh-tw/cluster/), +一起合作完成共同的目標。 + +## 如何幫助我們 {#how-it-helps} + +一個節點提供了一個可指派給一個叢集的獨立運算單元(記憶體、CPU、網路)。 +在[雲端原生](/zh-tw/cloud-native-tech/)平台或應用程式中, +一個節點就代表一個可以執行工作的單位。 +在理想情況下,個別的節點是不可區分的, +也就是說,我們無法區分某個類型的任何一個節點與同一類型的其他節點。 From a4d5b838b6e81107edde3220a56dbd256714817e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:22:16 +0900 Subject: [PATCH 263/295] Bump rojopolis/spellcheck-github-actions from 0.33.1 to 0.34.0 (#2456) Signed-off-by: dependabot[bot] --- .github/workflows/es-spellcheck.yml | 2 +- .github/workflows/spellcheck.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/es-spellcheck.yml b/.github/workflows/es-spellcheck.yml index 46f07bf985..ebf2ce1cc0 100644 --- a/.github/workflows/es-spellcheck.yml +++ b/.github/workflows/es-spellcheck.yml @@ -29,6 +29,6 @@ jobs: set -o errexit diff content/es/.wordlist.txt <(LC_ALL= sort -f content/es/.wordlist.txt) - name: GitHub Spellcheck Action - uses: rojopolis/spellcheck-github-actions@0.33.1 + uses: rojopolis/spellcheck-github-actions@0.34.0 with: config_path: content/es/.spellcheck.yml diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 296d54e7aa..a86db530f4 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -25,4 +25,4 @@ jobs: - uses: actions/checkout@v4 - name: GitHub Spellcheck Action - uses: rojopolis/spellcheck-github-actions@0.33.1 + uses: rojopolis/spellcheck-github-actions@0.34.0 From 835d06cd0f69b5a784133f295205d1b7033a4f02 Mon Sep 17 00:00:00 2001 From: Cody Chen Date: Thu, 12 Oct 2023 01:37:34 +0800 Subject: [PATCH 264/295] Add content/zh-tw/distributed-system Signed-off-by: Cody Chen --- content/zh-tw/distributed-system.md | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/zh-tw/distributed-system.md diff --git a/content/zh-tw/distributed-system.md b/content/zh-tw/distributed-system.md new file mode 100644 index 0000000000..52259c6884 --- /dev/null +++ b/content/zh-tw/distributed-system.md @@ -0,0 +1,30 @@ +--- +title: 分散式系統 +status: Completed +category: 概念 +tags: ["架構", "", ""] +--- + +## 是什麼 {#what-it-is} + +分散式系統是透過網路連接的自主運算單元的集合,從使用者角度來看是一個單一的一致性系統。 +這些一般被稱為[節點](/zh-tw/nodes/)的元件可以是硬體設備(例如計算機、行動電話)或是軟體行程。 +節點經由程式設計以達到一個共同目標,為了協作,它們透過網路交換訊息。 + +## 解決的問題 {#problem-it-addresses} + +現今大多數的現代化應用程式都非常龐大,需要以超級計算機去運行。像是 Gmail 或是 Netflix。 +沒有一台計算機足夠強大到可以承載整個應用程式。 +藉由連接多台計算機,運算能力可以變得接近無限大。 +如果沒有分散式運算,許多我們目前依賴的應用程式將無法運作。 + +傳統上,系統可以垂直[擴展](/zh-tw/scalability/)。也就是在單一機器上增加更多 CPU 或記憶體。 +垂直擴展相當耗時、需要停機,而且很快就會達到極限。 + +## 如何幫助我們 {#how-it-helps} + +分散式系統允許[水平擴展](/zh-tw/horizontal-scaling/)(例如在需要時對系統增加更多節點)。 +這樣可以自動化並允許系統處理突然增加的工作負載或資源消耗。 + +非分散式系統將自身曝露在故障的風險中,因為如果一台機器故障,整個系統就會故障。 +分散式系統可以被設計成,即使一些機器發生故障,整個系統仍然可以保持運作並產生相同結果。 From 2976bfdb04ca9eabcdca6024e8a8379773341856 Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Tue, 10 Oct 2023 22:51:23 +0800 Subject: [PATCH 265/295] [tw] Localize 'Blue Green Deployment' Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/zh-tw/blue-green-deployment.md | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 content/zh-tw/blue-green-deployment.md diff --git a/content/zh-tw/blue-green-deployment.md b/content/zh-tw/blue-green-deployment.md new file mode 100644 index 0000000000..2139ef91bf --- /dev/null +++ b/content/zh-tw/blue-green-deployment.md @@ -0,0 +1,30 @@ +--- +title: 藍綠部署 +status: Completed +category: 概念 +tags: ["方法論", "應用程式", ""] +--- + +## 是什麼 {#what-it-is} + +藍綠部署是一種以最小的停機時間更新執行中的電腦系統的方法。 +維運者維護兩個環境,被稱為 "藍" 和 "綠"。 +一個提供正式服務的流量(所有使用者目前正在使用的版本),另一個則是需要升級的服務。 +一旦非活躍(綠色)環境中的測試結束, +正式服務流量會被切換過來(通常會使用[負載平衡器](/zh-tw/load-balancer/))。 +注意,藍綠部署通常意思是要切換整個環境,包括許多[服務](/zh-tw/service/)。 +令人困惑的是,有時這個術語被用於一個系統內的單個服務。 +為了避免這個歧異,提到單個元件時,最好使用 "零停機部署" 一詞。 + +## 解決的問題 {#problem-it-addresses} + +在更新那些缺乏向後相容性而必須"同步"改變的軟體時,藍綠部署允許最短的停機時間。 +例如,藍綠部署適用於一個由網站和資料庫組成的線上商店, +該商店需要更新,但新版本的資料庫不能與舊版本的網站一起使用,反之亦然。 +在這樣的情況下,兩者需要同時改變。 +如果在正式環境這樣做,客戶會注意到停機時間。 + +## 如何幫助 {#how-it-helps} + +對於需要以最小的停機時間進行更新的非雲端原生軟體來說,藍綠部署是一種適合的方法。 +然而,它的使用通常是一種 "警訊",老舊系統需要重新設計,以便可以單獨更新元件。 From 41ae7d33e748d1ee2495ad50079a83da081690af Mon Sep 17 00:00:00 2001 From: "Yuan-Heng,Kuo" Date: Wed, 11 Oct 2023 13:29:37 +0800 Subject: [PATCH 266/295] Update continuous-deployment.md Signed-off-by: Yuan-Heng,Kuo --- content/zh-tw/continuous-deployment.md | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/zh-tw/continuous-deployment.md diff --git a/content/zh-tw/continuous-deployment.md b/content/zh-tw/continuous-deployment.md new file mode 100644 index 0000000000..78dcdd1361 --- /dev/null +++ b/content/zh-tw/continuous-deployment.md @@ -0,0 +1,29 @@ +--- +title: 持續部署 (CD) +status: Completed +category: 概念 +tags: ["應用程式", "方法論", ""] +--- + +## 是什麼 {#what-it-is} + +持續部署,通常縮寫為 CD,它直接將完成的軟體部署到正式環境,比[持續交付](/zh-tw/continuous-delivery/)更進一步。 +持續部署(CD)與[持續整合](/zh-tw/continuous-integration/)(CI)緊密相關,通常被稱為 CI/CD。 +CI 流程用於測試對特定應用程式的變更是否正確,而 CD 流程則自動部署組織測試環境的程式碼變更到正式環境。 + +## 解決的問題 {#problem-it-addresses} + +發布新軟體版本是一個勞動密集且容易出錯的過程。 +通常這也使組織希望盡量減少發布新版本的頻率,以避免正式環境發生事故並減少工程師需要在正常工作時間之外提供支援的次數。 +傳統的軟體部署模型讓組織陷入一個惡性循環,其中軟體發布的過程無法滿足組織在穩定性和功能迭代速度方面的需求。 + +## 如何幫助我們 {#how-it-helps} + +透過自動化發布週期並強制組織更頻繁地將產品部署到正式環境中,CD 之於維運團隊就像 CI 之於開發團隊一樣。 +具體來說,它強制維運團隊自動化正式部署中痛苦且容易出錯的部分,從而降低整體風險。 +它還使組織更善於接受和適應正式環境的變化,進而提高穩定性。 + +## 相關術語 {#related-terms} + +- [持續整合](/zh-tw/continuous-integration/) +- [持續交付](/zh-tw/continuous-delivery/) From 1e6e32ddd0a38d4a835c4148c4338c9c987dbd9a Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Thu, 12 Oct 2023 23:26:01 +0800 Subject: [PATCH 267/295] [tw] Add content/zh-tw/transport-layer-security.md (#2486) Signed-off-by: Kehao Chen --- content/zh-tw/transport-layer-security.md | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/zh-tw/transport-layer-security.md diff --git a/content/zh-tw/transport-layer-security.md b/content/zh-tw/transport-layer-security.md new file mode 100644 index 0000000000..e9c3d327ce --- /dev/null +++ b/content/zh-tw/transport-layer-security.md @@ -0,0 +1,29 @@ +--- +title: 傳輸層安全性協議 (TLS) +status: Completed +category: 概念 +tags: ["安全性", "網路", ""] +--- + +## 是什麼 {#what-it-is} + +傳輸層安全性協議 (TLS) 是一種設計用於在網路通訊中提供安全性的協議。 +它確保透過網路傳輸的資料能安全送達, +避免遭監控或修改的可能性。 +此一協議廣泛用於各類應用,譬如即時通訊、電子郵件等。 + +## 解決的問題 {#problem-it-addresses} + +若沒有 TLS,像是瀏覽習慣、電郵往來、線上對話與視訊會議等敏感資訊, +在傳輸過程中可能輕易地被他人追蹤或修改。 +使用伺服器與客戶端應用均支援 TLS 的方式, +能確保資料在傳輸過程中被加密,無法被第三方窺看。 + +## 如何幫助我們 {#how-it-helps} + +TLS 透過一系列的編碼技術,為網路資料傳輸時提供安全防護。 +TLS 讓客戶端應用與伺服器 (例如網頁瀏覽器與銀行網站) 之間建立一組加密連線。 +並且它讓客戶端應用能正確地識別所呼叫的伺服器, +以降低與偽造網站接觸的風險。 +藉此確保使用 TLS 的應用間資料傳輸不會被第三方窺看與監控, +保護包括信用卡卡號、密碼、位置等在內的敏感與私人資訊的安全。 From 756b26aa617fd1ebf872746a0a58f2ba1cff95a5 Mon Sep 17 00:00:00 2001 From: ydFu Date: Fri, 13 Oct 2023 10:48:13 +0800 Subject: [PATCH 268/295] Maintain labeling consistency 'architecture' and 'security' Signed-off-by: ydFu --- content/zh-tw/api-gateway.md | 2 +- content/zh-tw/cloud-native-tech.md | 2 +- content/zh-tw/cluster.md | 2 +- content/zh-tw/function-as-a-service.md | 10 +++++----- content/zh-tw/zero-trust-architecture.md | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/zh-tw/api-gateway.md b/content/zh-tw/api-gateway.md index 4972f38bd3..53d0ec9508 100644 --- a/content/zh-tw/api-gateway.md +++ b/content/zh-tw/api-gateway.md @@ -17,7 +17,7 @@ API 閘道器作為的公共介面,來為 API 使用者(通常是外部的 如果您希望為外部使用者提供 API,您通常會希望有一個單一的入口點來管理所有的存取。 此外,API 閘道器可以讓您統一套用功能到所有的流量上,而不需要修改任何應用程式的程式碼。 -## 如何幫助 {#how-it-helps} +## 如何幫助我們 {#how-it-helps} API 閘道器為應用程式中的各種 API 提供了一個單一存取點, 這使得組織能夠在集中處理跨域商業邏輯或安全邏輯,也讓應用程式使用者能夠透過訪問單一地址滿足所有需求。 diff --git a/content/zh-tw/cloud-native-tech.md b/content/zh-tw/cloud-native-tech.md index 041e4acb1c..59ae528165 100644 --- a/content/zh-tw/cloud-native-tech.md +++ b/content/zh-tw/cloud-native-tech.md @@ -9,7 +9,7 @@ tags: ["基本原理", "", ""] 雲端原生技術,也稱為雲端原生技術棧,是用於構建[雲端原生應用程式](/zh-tw/cloud-native-apps/)的技術。 這些技術使組織能夠在現代和動態環境中構建和運行可擴展的應用程式,例如公有、私有和混合雲,同時充分利用[雲計算](/zh-tw/cloud-computing/)的好處。 -它們從頭開始設計,以利用雲計算和容器,服務網格、微服務和不可變基礎架構的能力。 +它們從頭開始設計,以利用雲計算和容器,服務網格、微服務和不可變基礎設施的能力。 ## 解決的問題 {#problem-it-addresses} diff --git a/content/zh-tw/cluster.md b/content/zh-tw/cluster.md index 4a8a2eb650..feb3f6cb4e 100644 --- a/content/zh-tw/cluster.md +++ b/content/zh-tw/cluster.md @@ -2,7 +2,7 @@ title: 叢集 status: Completed category: 概念 -tags: ["基礎架構", "架構", ""] +tags: ["基礎設施", "架構", ""] --- ## 是什麼 {#what-it-is} diff --git a/content/zh-tw/function-as-a-service.md b/content/zh-tw/function-as-a-service.md index c2981e4c43..b662f47d99 100644 --- a/content/zh-tw/function-as-a-service.md +++ b/content/zh-tw/function-as-a-service.md @@ -2,14 +2,14 @@ title: 函式即服務 (FaaS) status: Completed category: 技術 -tags: ["基礎架構", "", ""] +tags: ["基礎設施", "", ""] --- ## 是什麼 {#what-it-is} 函式即服務 (FaaS) 是一種[無伺服器](/zh-tw/serverless/)的[雲端運算](/zh-tw/cloud-computing/)[服務](/zh-tw/service/), 它可以在特定事件觸發時執行程式碼, -而無需去維護常見於建置與發佈[微服務](/zh-tw/microservices/)應用程式所需的複雜基礎架構。 +而無需去維護常見於建置與發佈[微服務](/zh-tw/microservices/)應用程式所需的複雜基礎設施。 在 FaaS 的運作模式下,使用者只需專注於管理自己的功能和資料,應用程式的其他管理工作則交由雲端服務提供商來處理。 這種服務不僅讓開發者可以取得他們所需的功能以外,而且在程式碼不執行時,也無需支付額外的服務費用。 @@ -20,15 +20,15 @@ tags: ["基礎架構", "", ""] 可能需要聘請 IT 人員或是外包商來購買、管理並升級所有的設備和使用授權。 在這種情況下,資料中心必須配置足夠的資源以應對高峰需求,即使在工作量減少、資源閒置時也難以避免。 反觀,若企業業務快速擴展,IT 部門可能又面臨資源無法即時提供的困境。 -在標準的[基礎架構即服務 (IaaS)](/zh-tw/infrastructure-as-a-service/) 雲端運算模型下, +在標準的[基礎設施即服務 (IaaS)](/zh-tw/infrastructure-as-a-service/) 雲端運算模型下, 用戶會預先購買特定容量,即表示你需要為保持應用程式運行所需的伺服器元件支付給公共雲端服務提供商。 在需求增大時,用戶必須擴充伺服器容量;需求降低時,則需降低容量。 -即使應用程式並未在被使用,但運行該應用程式所需的雲端基礎架構仍要持續運作。 +即使應用程式並未在被使用,但運行該應用程式所需的雲端基礎設施仍要持續運作。 ## 如何幫助我們 {#how-it-helps} FaaS 為開發者提供了一種[抽象](/zh-tw/abstraction/),使他們能夠在無需管理伺服器的情況下,可以根據事件來運行網路應用程式。 以檔案上傳為例,這個動作可能會觸發一段自定義的程式碼,該程式碼將原始檔案轉換成多種格式。 -對於大量使用的程式碼,FaaS 的基礎架構能自動擴縮, +對於大量使用的程式碼,FaaS 的基礎設施能自動擴展, 無需開發者花費時間和資源去設計程式碼的[可擴展性](/zh-tw/scalability/)。 計費模式則是根據運算時間來計算,這表示企業在功能未使用時,就不必支付任何費用。 diff --git a/content/zh-tw/zero-trust-architecture.md b/content/zh-tw/zero-trust-architecture.md index 11eed10034..c094572d77 100644 --- a/content/zh-tw/zero-trust-architecture.md +++ b/content/zh-tw/zero-trust-architecture.md @@ -2,7 +2,7 @@ title: 零信任架構 status: Completed category: 概念 -tags: ["安全性", "", ""] +tags: ["安全", "", ""] --- ## 是什麼 {#what-it-is} From 874e00c446f3a31222e4de75157f13986275a684 Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Fri, 13 Oct 2023 13:42:02 +0800 Subject: [PATCH 269/295] [tw] Fix 'security' label to maintain consistency Signed-off-by: Kehao Chen --- content/zh-tw/transport-layer-security.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/transport-layer-security.md b/content/zh-tw/transport-layer-security.md index e9c3d327ce..9c2d0160bb 100644 --- a/content/zh-tw/transport-layer-security.md +++ b/content/zh-tw/transport-layer-security.md @@ -2,7 +2,7 @@ title: 傳輸層安全性協議 (TLS) status: Completed category: 概念 -tags: ["安全性", "網路", ""] +tags: ["安全", "網路", ""] --- ## 是什麼 {#what-it-is} From cc9656a1888a4d4dcc89a131ce63e7ee51faf66c Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Fri, 13 Oct 2023 13:46:50 +0800 Subject: [PATCH 270/295] [tw] Adapt terminology to be more in line with Taiwanese usage Signed-off-by: Kehao Chen --- content/zh-tw/transport-layer-security.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/zh-tw/transport-layer-security.md b/content/zh-tw/transport-layer-security.md index 9c2d0160bb..10d9e5ea3d 100644 --- a/content/zh-tw/transport-layer-security.md +++ b/content/zh-tw/transport-layer-security.md @@ -16,14 +16,14 @@ tags: ["安全", "網路", ""] 若沒有 TLS,像是瀏覽習慣、電郵往來、線上對話與視訊會議等敏感資訊, 在傳輸過程中可能輕易地被他人追蹤或修改。 -使用伺服器與客戶端應用均支援 TLS 的方式, +使用伺服器與用戶端應用均支援 TLS 的方式, 能確保資料在傳輸過程中被加密,無法被第三方窺看。 ## 如何幫助我們 {#how-it-helps} TLS 透過一系列的編碼技術,為網路資料傳輸時提供安全防護。 -TLS 讓客戶端應用與伺服器 (例如網頁瀏覽器與銀行網站) 之間建立一組加密連線。 -並且它讓客戶端應用能正確地識別所呼叫的伺服器, +TLS 讓用戶端應用與伺服器 (例如網頁瀏覽器與銀行網站) 之間建立一組加密連線。 +並且它讓用戶端應用能正確地識別所呼叫的伺服器, 以降低與偽造網站接觸的風險。 藉此確保使用 TLS 的應用間資料傳輸不會被第三方窺看與監控, 保護包括信用卡卡號、密碼、位置等在內的敏感與私人資訊的安全。 From dc6494d5b1a43dd4b08cad0d8420a9acfb3a691e Mon Sep 17 00:00:00 2001 From: Sara Trappetti <82897000+SaraTrap@users.noreply.github.com> Date: Fri, 13 Oct 2023 11:21:00 +0200 Subject: [PATCH 271/295] localize-Container-Orchestration-#1648 (#2417) Signed-off-by: SaraTrap Signed-off-by: Sara Trappetti <82897000+SaraTrap@users.noreply.github.com> Signed-off-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: annalisag-spark <83414097+annalisag-spark@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/container-orchestration.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/it/container-orchestration.md diff --git a/content/it/container-orchestration.md b/content/it/container-orchestration.md new file mode 100644 index 0000000000..6a9a7e55e4 --- /dev/null +++ b/content/it/container-orchestration.md @@ -0,0 +1,23 @@ +--- +title: Container Orchestration +status: Completed +category: Concetto +--- + +## Cos'è +Per orchestrazione dei [container](/it/container/) si intende la gestione e l'automazione del ciclo di vita delle applicazioni containerizzate in ambienti dinamici. +L'orchestrazione dei container viene effettuata tramite l'utilizzo di un orchestratore di container (nella maggior parte dei casi [Kubernetes](/it/kubernetes)), che consente di eseguire i processi di deployment (distribuzione), (auto)scaling (scalabilità), auto-healing (riparazione) e monitoraggio. +Il concetto di orchestrazione è preso in prestito dal mondo musicale ed utilizzato come una metafora: +lo strumento di orchestrazione dirige i container come un direttore d'orchestra musicale, assicurandosi che ogni container (o musicista) faccia ciò che dovrebbe fare. + + + +## Quali problematiche affronta +Gestire manualmente i [microservizi](/it/microservices), la sicurezza e la comunicazione di rete su larga scala - e i [sistemi distribuiti](/it/distributed-systems) in generale - è difficile, se non impossibile. +L'orchestrazione dei container consente agli utenti di automatizzare tutte queste attività di gestione. + +## In che modo aiuta +Gli strumenti di orchestrazione dei container consentono agli utenti di stabilire lo stato di un sistema. +Innanzitutto, dichiarano come dovrebbe apparire (ad esempio, x container, y pod, ecc.). +Lo strumento di orchestrazione monitorerà quindi automaticamente l'infrastruttura e la correggerà se lo stato devia da quello dichiarato (ad esempio, avvierà un nuovo container se uno dovesse arrestarsi in modo anomalo). +Questa automazione semplifica molte delle attività operative dei team di engineering, che risulterebbero altrimenti profondamente manuali e complesse. Tra queste figurano: l'assegnazione di risorse, la distribuzione, lo scaling (sia in termini di aggiunta che di rimozione di nodi), la connettività, il bilanciamento del traffico e altre attività. From 7793dd1b478a2cadda78153463ae6166d365bbac Mon Sep 17 00:00:00 2001 From: Matteo Bisi Date: Fri, 13 Oct 2023 17:41:03 +0200 Subject: [PATCH 272/295] localize-datacenter-#2011 (#2482) Signed-off-by: Matteo Bisi Co-authored-by: Paolo Martinoli <81316809+ugho16@users.noreply.github.com> Co-authored-by: sistella <56387955+sistella@users.noreply.github.com> --- content/it/data-center.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 content/it/data-center.md diff --git a/content/it/data-center.md b/content/it/data-center.md new file mode 100644 index 0000000000..bbdfad62a4 --- /dev/null +++ b/content/it/data-center.md @@ -0,0 +1,28 @@ +--- +title: Data center +status: Completed +category: Tecnologia +tags: ["infrastruttura", "fondamentali", ""] +--- + +## Cos'è + +Un data center è un edificio o una struttura specializzata appositamente progettata per ospitare più computer, spesso server. +I data center sono abitualmente collegati a linee internet ad alta velocità, soprattutto quando sono focalizzati sul [cloud computing](/it/cloud-computing/). +Gli edifici che ospitano i data center sono attrezzati per mantenere il servizio anche durante eventi avversi, inclusi generatori che forniscono energia durante le interruzioni e potenti sistemi di aria condizionata che mantengono una temperatura controllata, proteggendo i computer dal calore che producono lavorando. + +## Quali problematiche affronta + +Prima che i data center si diffondessero alla fine degli anni '90, i computer si distinguevano principalmente tra quelli dedicati a compiti specifici e quelli utilizzati dalle persone per svolgere il proprio lavoro. +I computer tuttavia hanno risorse limitate (disco, RAM e CPU). Questo significa che le applicazioni in esecuzione su di essi hanno gli stessi vincoli, limitando i tipi di applicazioni che possono eseguire. +Prima dei data center, la scalabilità dell'applicazione era limitata dalla capacità di calcolo del computer su cui era in esecuzione. +Se però pensiamo ad applicazioni soggette ad un utilizzo intensivo ed esteso come Gmail o Netflix (l'applicazione, non l'interfaccia utente che hai sul tuo telefono o computer), +queste hanno bisogno di più capacità di elaborazione di quanta ne possa fornire un singolo computer. + +## In che modo aiuta + +Collegando fra di loro vari server, gli utenti possono creare un [sistema distribuito](/it/distributed-systems/) che funziona come un supercomputer. +Utilizzando la potenza di diverse macchine, ora possiamo eseguire applicazioni molto più grandi o elaborare attività computazionali molto più elevate. +All'interno dei data center vengono eseguite la maggior parte delle applicazioni che utilizziamo quotidianamente. +I [cloud pubblici](it/cloud-computing) sono data center che affittano la capacità computazionale ai propri clienti. +Durante gli ultimi anni, abbiamo assistito a un passaggio dai data center di proprietà delle aziende al cloud. \ No newline at end of file From 82a5d2e6df81028c7cd4c13c6ae8389734c871dc Mon Sep 17 00:00:00 2001 From: Matt Wang Date: Sun, 15 Oct 2023 10:59:05 +0800 Subject: [PATCH 273/295] fix(zh-tw): unify the translation for term `property` Signed-off-by: Matt Wang --- content/zh-tw/abstraction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/abstraction.md b/content/zh-tw/abstraction.md index 64d2db5035..91889c8e52 100644 --- a/content/zh-tw/abstraction.md +++ b/content/zh-tw/abstraction.md @@ -1,7 +1,7 @@ --- title: 抽象 status: Completed -category: 特性 +category: 屬性 tags: ["基本原理", "", ""] --- From 07ccba3fba3a535589113808edc2b919ac466b32 Mon Sep 17 00:00:00 2001 From: Matt Wang Date: Sun, 15 Oct 2023 12:02:31 +0800 Subject: [PATCH 274/295] feat(zh-tw): translate idempotence page Signed-off-by: Matt Wang --- content/zh-tw/idempotence.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 content/zh-tw/idempotence.md diff --git a/content/zh-tw/idempotence.md b/content/zh-tw/idempotence.md new file mode 100644 index 0000000000..9a3c56ab91 --- /dev/null +++ b/content/zh-tw/idempotence.md @@ -0,0 +1,9 @@ +--- +title: 冪等 +status: Completed +category: 屬性 +tags: ["屬性", "", ""] +--- + +在數學或電腦科學中,冪等被用來描述無論執行多少次都會有相同結果的操作。 +如果參數相同,多次執行冪等操作都不會產生額外效果。 From 27de8393aab53ff2707744b97d6e4882608e0719 Mon Sep 17 00:00:00 2001 From: Matt Wang Date: Sun, 15 Oct 2023 21:01:23 +0800 Subject: [PATCH 275/295] fix(zh-tw): update outdated URL linked to `distributed systems` Signed-off-by: Matt Wang --- content/zh-tw/chaos-engineering.md | 2 +- content/zh-tw/{distributed-system.md => distributed-systems.md} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename content/zh-tw/{distributed-system.md => distributed-systems.md} (100%) diff --git a/content/zh-tw/chaos-engineering.md b/content/zh-tw/chaos-engineering.md index ff965a9786..05ed1e2955 100644 --- a/content/zh-tw/chaos-engineering.md +++ b/content/zh-tw/chaos-engineering.md @@ -7,7 +7,7 @@ tags: ["方法論", "", ""] ## 是什麼 {#what-it-is} -混沌工程或 CE,是在正式環境中對[分散式系統](/zh-tw/distributed-system/)進行實驗的專業,以建立對系統在承受混亂和意外情況下時能力的信心。 +混沌工程或 CE,是在正式環境中對[分散式系統](/zh-tw/distributed-systems/)進行實驗的專業,以建立對系統在承受混亂和意外情況下時能力的信心。 ## 解決的問題 {#problem-it-addresses} diff --git a/content/zh-tw/distributed-system.md b/content/zh-tw/distributed-systems.md similarity index 100% rename from content/zh-tw/distributed-system.md rename to content/zh-tw/distributed-systems.md From 0ddb504ad30dddf18b9e35b5bf59ef87508cc73e Mon Sep 17 00:00:00 2001 From: ydFu Date: Mon, 16 Oct 2023 15:25:46 +0800 Subject: [PATCH 276/295] Update horizontal-scaling.md Signed-off-by: ydFu --- content/zh-tw/horizontal-scaling.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/zh-tw/horizontal-scaling.md b/content/zh-tw/horizontal-scaling.md index 0d0263099f..c7880fe951 100644 --- a/content/zh-tw/horizontal-scaling.md +++ b/content/zh-tw/horizontal-scaling.md @@ -7,8 +7,8 @@ tags: ["基礎設施", "", ""] ## 是什麼 {#what-it-is} -水平擴展是一種透過加入更多[節點](/zh-tw/nodes/)而非對單一節點加入更多計算資源來提升系統容量的技術 (後者稱為[垂直擴展](/zh-tw/vertical-scaling/))。 -假設我們有一個 4GB RAM 的系統,並且想要提升其容量到 16 GB RAM,水平擴展代表的是加入 4 X 4GB RAM 的系統而非切換到一台 16GB RAM 的系統。 +水平擴展是一種透過加入更多[節點](/zh-tw/nodes/)而非對單一節點加入更多計算資源來提升系統容量的技術(後者稱為[垂直擴展](/zh-tw/vertical-scaling/))。 +假設我們有一個 4GB RAM 的系統,並且想要提升其容量到 16GB RAM,水平擴展代表的是加入 4 X 4GB RAM 的系統而非切換到一台 16GB RAM 的系統。 這種方式透過添加更多實例或[節點](/zh-tw/nodes)來提升應用程式的效能,以達到更好的工作負載。 簡單來說,其目的是減少伺服器的負載而非擴充單一伺服器上的容量。 @@ -16,8 +16,8 @@ tags: ["基礎設施", "", ""] ## 解決的問題 {#problem-it-addresses} 隨者對應用程式成長的需求超越該應用程式的當前容量, -我們需要找到一種方式來[擴展](/zh-tw/scalability/)(增加容量)系統。 -我們可以加入更多節點到系統中(水平擴展)或是加入更多計算資源到現有節點上(垂直擴展) +我們需要找到一種方式來[擴展](/zh-tw/scalability/)(增加容量)系統。 +我們可以加入更多節點到系統中(水平擴展)或是加入更多計算資源到現有節點上(垂直擴展)。 ## 如何幫助我們 {#how-it-helps} From bcd0fe1b836ddce57651439f31486b5d75046cba Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Sun, 15 Oct 2023 15:53:23 +0800 Subject: [PATCH 277/295] [tw] Localize 'Edge Computing' Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/zh-tw/edge-computing.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/zh-tw/edge-computing.md diff --git a/content/zh-tw/edge-computing.md b/content/zh-tw/edge-computing.md new file mode 100644 index 0000000000..1183ce33ac --- /dev/null +++ b/content/zh-tw/edge-computing.md @@ -0,0 +1,29 @@ +--- +title: 邊緣運算 +status: Completed +category: Technology +--- + +## 是什麼 {#what-it-is} + +邊緣運算是個[分散式系統](/zh-tw/distributed-systems/),它將一些儲存和運算資源從主要資料中心轉移到資料來源。 +收集到的資料在本地端(例如:工廠、商店或整座城市)進行計算,而不是傳送到集中式資料中心進行處理和分析。 +這些本地端處理單元或裝置代表系統的邊緣,而資料中心則代表系統的中心。 +邊緣計算出的結果會被送回主要資料中心做進一步處理。 +邊緣運算的例子包括手腕上的小配件或分析交通流量的電腦。 + +## 解決的問題 {#problem-it-addresses} + +過去十年中,我們可以看到越來越多的邊緣裝置(例如:手機、智慧型手錶、感測器)。 +在某些情況下,即時資料處理不僅是一個不錯的選擇,而且極其重要。 +想想自動駕駛的汽車。 +現在想像一下,汽車感測器的資料必須先傳送到資料中心進行處理,然後再送回汽車,這樣汽車才能作出適當的反應。 +如此產生的網路延遲會是致命的。 +雖然這是一個極端的例子,但大多數使用者都不願意使用無法即時反應的智慧設備。 + +## 如何幫助我們 {#how-it-helps} + +如上所述,要使邊緣設備發揮作用,它們必須至少在本地端完成部分處理和分析工作,以便於對使用者提供接近即時的回饋。 +要做到這點,就必須將資料中心的部分儲存和處理資源轉移到資料生產地:邊緣設備。 +已處理和未處理的資料隨後發送到資料中心做進一步處理和儲存。 +簡而言之,效率和速度是邊緣運算的主要驅動力。 From c6ad289df701d07de14fa54ef706d4930955d285 Mon Sep 17 00:00:00 2001 From: Cody Chen Date: Wed, 18 Oct 2023 00:28:13 +0800 Subject: [PATCH 278/295] Add content/zh-tw/distributed-apps.md Signed-off-by: Cody Chen --- content/zh-tw/distributed-apps.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 content/zh-tw/distributed-apps.md diff --git a/content/zh-tw/distributed-apps.md b/content/zh-tw/distributed-apps.md new file mode 100644 index 0000000000..58fdb8b221 --- /dev/null +++ b/content/zh-tw/distributed-apps.md @@ -0,0 +1,25 @@ +--- +title: 分散式應用程式 +status: Completed +category: 概念 +tags: ["架構", "", ""] +--- + +## 是什麼 {#what-it-is} + +分散式應用程式是一種功能被拆分為多個較小獨立部分的應用程式。 +分散式應用程式通常由獨立的[微服務](/zh-tw/microservices)組成,以處理更廣泛的應用程式中的不同問題。 +在雲原生的環境中,這些獨立元件通常在[叢集](/zh-tw/cluster)中以[容器](/zh-tw/container)執行。 + +## 解決的問題 {#problem-it-addresses} + +在單一計算機上執行的應用程式代表單點故障--如果該台計算機故障,應用程式將變得不可用。 +分散式應用程式通常作為[單體式應用程式](/zh-tw/monolithic-apps)的對比。 +單體式應用程式可能難以擴展,因為各個元件無法獨立擴展。 +隨著單體式應用程式的增長,它們也會拖累開發者的速度,因為更多的開發者需要在未必有明確定義邊界的共享程式碼庫中工作。 + +## 如何幫助我們 {#how-it-helps} + +當將一個應用程式拆分為不同的部分並在許多地方執行,整個系統能夠承受更多的故障。 +它也允許應用程式利用單個應用程式實例所不具備的可擴展性,也就是[水平擴展](/zh-tw/horizontal-scaling)。 +然而,這也需要付出代價:增加複雜度與營運開銷--你現在正在執行多個應用程式元件,而非單一應用程式。 From f4d0a5fb1e32611265c4fbc9f8fb0f2ba098566b Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Wed, 18 Oct 2023 23:17:23 +0800 Subject: [PATCH 279/295] [tw] Add content/zh-tw/client-server-architecture.md (#2499) Signed-off-by: Kehao Chen --- content/zh-tw/client-server-architecture.md | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/zh-tw/client-server-architecture.md diff --git a/content/zh-tw/client-server-architecture.md b/content/zh-tw/client-server-architecture.md new file mode 100644 index 0000000000..99522a3a9f --- /dev/null +++ b/content/zh-tw/client-server-architecture.md @@ -0,0 +1,32 @@ +--- +title: 用戶端-伺服器架構 +status: Completed +category: 概念 +tags: ["架構", "基本原理", ""] +--- + +## 是什麼 {#what-it-is} + +在用戶端-伺服器架構中,構成應用程式的邏輯 (或者說程式碼) 會被拆解至兩組或是多組元件: +一組用戶端負責發起工作請求 (例如在你的瀏覽器裡運行的 Gmail 網頁應用), +以及一組或多組伺服器負責滿足這個請求 (例如運行在 Google 雲端的 “發送郵件” 服務)。 +舉例來說,你撰寫的外寄電子郵件是由用戶端 (在你的瀏覽器裡運行的網頁應用) +傳送到伺服器 (Gmail 的伺服器,這些伺服器會將你的外寄電子郵件轉寄給收件人)。 + +這與獨立式應用程式 (例如桌面應用) 形成對比,後者將所有的工作集中於一處完成。 +舉例來說,像是 Microsoft Word 這樣的文字處理程式,可以完全安裝並在你的電腦上執行。 + +## 解決的問題 {#problem-it-addresses} + +用戶端-伺服器架構解決了獨立式應用程式面臨的一大挑戰:定期更新。 +對於獨立式應用,每一次的更新,都需要用戶自行下載並安裝最新版本。 +試想如果你在瀏覽 Amazon 的產品目錄前,需要先將其完整下載到你的電腦上才能開始瀏覽! + +## 如何幫助我們 {#how-it-helps} + +透過在遠端伺服器或是服務中實現應用程式的邏輯,維運人員可以在不改動用戶端邏輯的情況下進行更新。 +這意味著可以更頻繁地進行更新。 +將資料存儲在伺服器上,允許多組用戶端查看和共享相同的資料。 +考慮一下線上文字處理器與傳統的離線文字處理器之間的使用差異。 +在前者中,你的檔案存儲於伺服器端,其他用戶們只需從伺服器下載檔案即可共享。 +在傳統世界中,檔案需要先複製到可移除式媒體 (像是軟碟片!) 中並與個別用戶分享。 From 4cbd0a8bc4b87f411e8e09eb6764422f68c19f2b Mon Sep 17 00:00:00 2001 From: Cody Chen Date: Thu, 19 Oct 2023 14:52:36 +0800 Subject: [PATCH 280/295] Fix translation of cloud native term Signed-off-by: Cody Chen --- content/zh-tw/distributed-apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh-tw/distributed-apps.md b/content/zh-tw/distributed-apps.md index 58fdb8b221..ba38decb96 100644 --- a/content/zh-tw/distributed-apps.md +++ b/content/zh-tw/distributed-apps.md @@ -9,7 +9,7 @@ tags: ["架構", "", ""] 分散式應用程式是一種功能被拆分為多個較小獨立部分的應用程式。 分散式應用程式通常由獨立的[微服務](/zh-tw/microservices)組成,以處理更廣泛的應用程式中的不同問題。 -在雲原生的環境中,這些獨立元件通常在[叢集](/zh-tw/cluster)中以[容器](/zh-tw/container)執行。 +在雲端原生的環境中,這些獨立元件通常在[叢集](/zh-tw/cluster)中以[容器](/zh-tw/container)執行。 ## 解決的問題 {#problem-it-addresses} From 14f8d982aa3d391507bc5f541421b1de2c3c8f42 Mon Sep 17 00:00:00 2001 From: Matt Wang Date: Sun, 15 Oct 2023 11:27:55 +0800 Subject: [PATCH 281/295] feat(zh-tw): translate reliability page Signed-off-by: Matt Wang --- content/zh-tw/reliability.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 content/zh-tw/reliability.md diff --git a/content/zh-tw/reliability.md b/content/zh-tw/reliability.md new file mode 100644 index 0000000000..ed7eba1a7a --- /dev/null +++ b/content/zh-tw/reliability.md @@ -0,0 +1,11 @@ +--- +title: 可靠性 +status: Completed +category: 屬性 +tags: ["基本原理", "屬性", ""] +--- + +從雲端原生的角度來看,可靠性是指系統對故障的反應能力。 +如果我們有一個具備在基礎設施發生變化且單一元件發生故障時仍可繼續運作的[分散式系統](/zh-tw/distributed-systems/),那麼它就是可靠的。 +另一方面,如果它很容易出現故障,並且需要操作人員手動干涉才能使其繼續運行,那它是不可靠的。 +[雲端原生應用程式](/zh-tw/cloud-native-apps/)的目標即是建立本質上可靠的系統。 From fb3c563bfbaf151b2fd0f9c36d2b0bc3002d32d7 Mon Sep 17 00:00:00 2001 From: Matt Wang Date: Fri, 13 Oct 2023 13:26:12 +0800 Subject: [PATCH 282/295] feat(zh-tw): translate multitenancy page Signed-off-by: Matt Wang --- content/zh-tw/multitenancy.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 content/zh-tw/multitenancy.md diff --git a/content/zh-tw/multitenancy.md b/content/zh-tw/multitenancy.md new file mode 100644 index 0000000000..adf3f689d9 --- /dev/null +++ b/content/zh-tw/multitenancy.md @@ -0,0 +1,31 @@ +--- +title: 多租戶 +status: Completed +category: 屬性 +tags: ["基礎設施", "屬性", ""] +--- + +## 什麼是多租戶 {#what-it-is} + +多租戶是指為多個租戶提供服務的單一軟體設施。 +一個租戶是一個使用者、應用程式或多個在自己資料集上使用軟體運作的使用者/應用程式。 +這些租戶並不共享資料(除非擁有者有明確指示),甚至可能不知道彼此。 + +租戶可以小至一個具有單一登入 ID 的獨立用戶(例如個人生產力軟體),或像整個公司一樣大,擁有數千個登入 ID,每個登入 ID 都有自己的權限,但以多種方式相互關聯。 +多租戶軟體的範例包括 Google Mail、Google Docs、Microsoft Office 365、Salesforce CRM 和 Dropbox,以及許多被歸類為完整多租戶或部分多租戶的其他軟體。 + +## 解決的問題 {#problem-it-addresses} + +如果沒有多租戶,就需要每個租戶都去安裝專用的軟體設施,這會增加需要運用的資源和維護負擔,進而提升了軟體成本。 + +## 如何幫助我們 {#how-it-helps} + +多租戶軟體為每個租戶提供一個隔離的環境(工作資料、設定、憑證清單等),同時為多個租戶提供服務。 +從租戶的角度來看,每個租戶都有其專用的軟體設施,儘管實際上它們都共享同一個。 +這是透過在伺服器上運行軟體並允許租戶以介面和/或 [API](/zh-tw/application-programming-interface/) 透過網路連接到該軟體來實作的(另請參閱[主從式架構](/zh-tw/client-server-architecture/))。 +使用多租戶軟體,租戶能夠共享一個設施的資源,而不會相互影響或僅以預先定義和受控的方式有所交互作用。 +軟體供應商所節省的資源可以轉移給租戶,進而顯著地降低用戶的軟體成本(像是基於網頁的電子郵件或文件編輯器)。 + +## 相關術語 {#related-terms} + +多租戶和 SaaS 並非同義詞,即便 SaaS 多租戶很常見,甚至將多租戶視為其核心優勢之一。 From 6559a0d2d6e2be5f52a55c6a1b460fd4eec17536 Mon Sep 17 00:00:00 2001 From: win5923 Date: Sat, 21 Oct 2023 13:46:07 +0800 Subject: [PATCH 283/295] [tw] Localize scalability for Traditional Chinese Signed-off-by: win5923 --- content/zh-tw/scalability.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 content/zh-tw/scalability.md diff --git a/content/zh-tw/scalability.md b/content/zh-tw/scalability.md new file mode 100644 index 0000000000..d44a251b9b --- /dev/null +++ b/content/zh-tw/scalability.md @@ -0,0 +1,24 @@ +--- +title: 可擴展性 +status: Completed +category: 屬性 +tags: ["基本原理", "屬性", ""] +--- + +可擴展性指的是一個系統能夠擴大成長的能力, +也就是增加系統執行其預定功能的能力。 +舉例來說, +[Kubernetes](/zh-tw/kubernetes/) [叢集]((/zh-tw/cluster/))透過增減[容器化](/zh-tw/containerization/)應用程式的數量來擴展, +但這種可擴展性取決於幾項因素。 +它擁有多少個[節點](/zh-tw/nodes/)? +每個節點可以處理多少個[容器](/zh-tw/container/)? +以及控制平面能夠支援多少記錄和操作? + +可擴展性的系統使增加容量變得容易。 +主要區分為兩種擴展方法。 +其中之一, +[水平擴展](/zh-tw/horizontal-scaling/)添加更多節點以處理增加的負載。 +相比之下, +在[垂直擴展](/zh-tw/vertical-scaling/)中, +單個節點有更強大的功能以執行更多的事務(例如,透過為單個機器添加更多記憶體或 CPU)。 +具備可擴展性的系統能夠輕鬆地進行變更,以滿足使用者的需求。 \ No newline at end of file From b3d966a7d58bd21b1e617cc3ba413b8441a278bf Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Thu, 19 Oct 2023 12:15:53 +0000 Subject: [PATCH 284/295] [tw] Adapt terminology to be more in line with Taiwanese usage Signed-off-by: Kehao Chen --- content/zh-tw/client-server-architecture.md | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/zh-tw/client-server-architecture.md b/content/zh-tw/client-server-architecture.md index 99522a3a9f..cecee4b92c 100644 --- a/content/zh-tw/client-server-architecture.md +++ b/content/zh-tw/client-server-architecture.md @@ -1,5 +1,5 @@ --- -title: 用戶端-伺服器架構 +title: 主從式架構 status: Completed category: 概念 tags: ["架構", "基本原理", ""] @@ -7,26 +7,26 @@ tags: ["架構", "基本原理", ""] ## 是什麼 {#what-it-is} -在用戶端-伺服器架構中,構成應用程式的邏輯 (或者說程式碼) 會被拆解至兩組或是多組元件: -一組用戶端負責發起工作請求 (例如在你的瀏覽器裡運行的 Gmail 網頁應用), -以及一組或多組伺服器負責滿足這個請求 (例如運行在 Google 雲端的 “發送郵件” 服務)。 -舉例來說,你撰寫的外寄電子郵件是由用戶端 (在你的瀏覽器裡運行的網頁應用) +在主從式架構 (又可被稱爲用戶端-伺服器架構) 中,構成應用程式的邏輯 (或者說程式碼) 會被拆解至兩組或是多組元件: +一組用戶端負責發起工作請求 (例如在你的瀏覽器裡執行的 Gmail 網頁應用程式), +以及一組或多組伺服器負責滿足這個請求 (例如執行在 Google 雲端的 “發送郵件” 服務)。 +舉例來說,你撰寫的外寄電子郵件是由用戶端 (在你的瀏覽器裡執行的網頁應用程式) 傳送到伺服器 (Gmail 的伺服器,這些伺服器會將你的外寄電子郵件轉寄給收件人)。 -這與獨立式應用程式 (例如桌面應用) 形成對比,後者將所有的工作集中於一處完成。 +這與獨立式應用程式 (例如桌面應用程式) 形成對比,後者將所有的工作集中於一處完成。 舉例來說,像是 Microsoft Word 這樣的文字處理程式,可以完全安裝並在你的電腦上執行。 ## 解決的問題 {#problem-it-addresses} -用戶端-伺服器架構解決了獨立式應用程式面臨的一大挑戰:定期更新。 -對於獨立式應用,每一次的更新,都需要用戶自行下載並安裝最新版本。 +主從式架構解決了獨立式應用程式面臨的一大挑戰:定期更新。 +對於獨立式應用程式,每一次的更新,都需要使用者自行下載並安裝最新版本。 試想如果你在瀏覽 Amazon 的產品目錄前,需要先將其完整下載到你的電腦上才能開始瀏覽! ## 如何幫助我們 {#how-it-helps} 透過在遠端伺服器或是服務中實現應用程式的邏輯,維運人員可以在不改動用戶端邏輯的情況下進行更新。 這意味著可以更頻繁地進行更新。 -將資料存儲在伺服器上,允許多組用戶端查看和共享相同的資料。 -考慮一下線上文字處理器與傳統的離線文字處理器之間的使用差異。 -在前者中,你的檔案存儲於伺服器端,其他用戶們只需從伺服器下載檔案即可共享。 -在傳統世界中,檔案需要先複製到可移除式媒體 (像是軟碟片!) 中並與個別用戶分享。 +將資料存儲在伺服器上,允許多組使用者查看和共享相同的資料。 +試想看看線上文字處理器與傳統的離線文字處理器之間的使用差異。 +在前者中,你的檔案是儲存於伺服器上並可以與其他使用者共享,他們只需從伺服器下載即可。 +在傳統世界中,檔案需要先複製到可移除式媒體 (像是磁碟片!) 中並與個別用戶分享。 From b3ea413b3fb14c4c4dfc1d3b300a1e02e4c0bd38 Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Sat, 21 Oct 2023 16:02:32 +0800 Subject: [PATCH 285/295] [tw] Use plain language for better understanding Signed-off-by: Kehao Chen --- content/zh-tw/client-server-architecture.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/zh-tw/client-server-architecture.md b/content/zh-tw/client-server-architecture.md index cecee4b92c..bd4d488ee8 100644 --- a/content/zh-tw/client-server-architecture.md +++ b/content/zh-tw/client-server-architecture.md @@ -1,5 +1,5 @@ --- -title: 主從式架構 +title: 用戶端-伺服器架構 status: Completed category: 概念 tags: ["架構", "基本原理", ""] @@ -7,7 +7,7 @@ tags: ["架構", "基本原理", ""] ## 是什麼 {#what-it-is} -在主從式架構 (又可被稱爲用戶端-伺服器架構) 中,構成應用程式的邏輯 (或者說程式碼) 會被拆解至兩組或是多組元件: +在用戶端-伺服器架構 (又可被稱爲主從式架構) 中,構成應用程式的邏輯 (或者說程式碼) 會被拆解至兩組或是多組元件: 一組用戶端負責發起工作請求 (例如在你的瀏覽器裡執行的 Gmail 網頁應用程式), 以及一組或多組伺服器負責滿足這個請求 (例如執行在 Google 雲端的 “發送郵件” 服務)。 舉例來說,你撰寫的外寄電子郵件是由用戶端 (在你的瀏覽器裡執行的網頁應用程式) @@ -18,7 +18,7 @@ tags: ["架構", "基本原理", ""] ## 解決的問題 {#problem-it-addresses} -主從式架構解決了獨立式應用程式面臨的一大挑戰:定期更新。 +用戶端-伺服器架構解決了獨立式應用程式面臨的一大挑戰:定期更新。 對於獨立式應用程式,每一次的更新,都需要使用者自行下載並安裝最新版本。 試想如果你在瀏覽 Amazon 的產品目錄前,需要先將其完整下載到你的電腦上才能開始瀏覽! From e185c612def9e20fc08cab10a794bbf66cf7f8ce Mon Sep 17 00:00:00 2001 From: Kehao Chen Date: Sat, 21 Oct 2023 16:13:32 +0800 Subject: [PATCH 286/295] [tw] Update punctuation to comply with Taiwanese standards Signed-off-by: Kehao Chen --- content/zh-tw/client-server-architecture.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/zh-tw/client-server-architecture.md b/content/zh-tw/client-server-architecture.md index bd4d488ee8..e59997b452 100644 --- a/content/zh-tw/client-server-architecture.md +++ b/content/zh-tw/client-server-architecture.md @@ -7,13 +7,13 @@ tags: ["架構", "基本原理", ""] ## 是什麼 {#what-it-is} -在用戶端-伺服器架構 (又可被稱爲主從式架構) 中,構成應用程式的邏輯 (或者說程式碼) 會被拆解至兩組或是多組元件: -一組用戶端負責發起工作請求 (例如在你的瀏覽器裡執行的 Gmail 網頁應用程式), -以及一組或多組伺服器負責滿足這個請求 (例如執行在 Google 雲端的 “發送郵件” 服務)。 -舉例來說,你撰寫的外寄電子郵件是由用戶端 (在你的瀏覽器裡執行的網頁應用程式) -傳送到伺服器 (Gmail 的伺服器,這些伺服器會將你的外寄電子郵件轉寄給收件人)。 +在用戶端-伺服器架構(又可被稱爲主從式架構)中,構成應用程式的邏輯(或者說程式碼)會被拆解至兩組或是多組元件: +一組用戶端負責發起工作請求(例如在你的瀏覽器裡執行的 Gmail 網頁應用程式), +以及一組或多組伺服器負責滿足這個請求(例如執行在 Google 雲端的「發送郵件」服務)。 +舉例來說,你撰寫的外寄電子郵件是由用戶端(在你的瀏覽器裡執行的網頁應用程式) +傳送到伺服器(Gmail 的伺服器,這些伺服器會將你的外寄電子郵件轉寄給收件人)。 -這與獨立式應用程式 (例如桌面應用程式) 形成對比,後者將所有的工作集中於一處完成。 +這與獨立式應用程式(例如桌面應用程式)形成對比,後者將所有的工作集中於一處完成。 舉例來說,像是 Microsoft Word 這樣的文字處理程式,可以完全安裝並在你的電腦上執行。 ## 解決的問題 {#problem-it-addresses} @@ -29,4 +29,4 @@ tags: ["架構", "基本原理", ""] 將資料存儲在伺服器上,允許多組使用者查看和共享相同的資料。 試想看看線上文字處理器與傳統的離線文字處理器之間的使用差異。 在前者中,你的檔案是儲存於伺服器上並可以與其他使用者共享,他們只需從伺服器下載即可。 -在傳統世界中,檔案需要先複製到可移除式媒體 (像是磁碟片!) 中並與個別用戶分享。 +在傳統世界中,檔案需要先複製到可移除式媒體(像是磁碟片!)中並與個別用戶分享。 From f0ac355f608feeb2d7750c5a559fc74b877fe0dc Mon Sep 17 00:00:00 2001 From: tico88612 <17496418+tico88612@users.noreply.github.com> Date: Sun, 22 Oct 2023 17:34:04 +0800 Subject: [PATCH 287/295] [tw] Localize 'eBPF' Signed-off-by: tico88612 <17496418+tico88612@users.noreply.github.com> --- content/zh-tw/ebpf.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 content/zh-tw/ebpf.md diff --git a/content/zh-tw/ebpf.md b/content/zh-tw/ebpf.md new file mode 100644 index 0000000000..8a53f7d1b1 --- /dev/null +++ b/content/zh-tw/ebpf.md @@ -0,0 +1,39 @@ +--- +title: eBPF +status: Completed +category: 架構 +--- + +## 是什麼 {#what-it-is} + +eBPF(延伸柏克萊封包篩選器)是一種允許小型沙盒程式或腳本在 Linux 系統核心空間執行的技術,不需要修改核心原始碼載入 Linux 核心模組。 + +Linux 系統有兩個空間:核心空間和使用者空間。 +核心空間是作業系統的核心,也是唯一可以無限制存取硬體的部分。 + +應用程式會停留在使用者空間,當它們需要更高權限時,就會向核心發送要求。 +對於需要更彈性的應用程式,像是直接存取硬體,核心可以透過所謂的「Linux 核心模組」進行擴充。 +這種方式擴充了核心的預設功能,允許應用程式更深度地存取底層元件。 +不過,這種方法也會帶來安全風險,因此 eBPF 成為更有吸引力的替代方案。 + +## 解決的問題 {#problem-it-addresses} + +通常狀況下,應用程式在使用者空間執行,如果應用程式需要核心的某些權限(E.g. 存取某些硬體), +會透過「系統呼叫」向核心提出請求。 +在大多數情況下,這種方法都能正常執行。不過,在某些情況下,開發人員需要更靈活的低階系統存取方式。 +可觀察性、安全性和網路功能就是很好的範例。 +為此,我們可以使用 Linux 核心模組,在不修改核心原始碼的情況下延伸核心基礎。 +雖然使用 Linux 核心模組有很多好處,但也會帶來安全風險。 +由於 Linux 核心模組在核心空間內執行,它們可能會導致核心崩潰,而核心一旦崩潰,整個機器也會當機。 +此外,核心模組擁有更高的權限,可以直接存取系統資源。如果沒有適當的安全保護,攻擊者就會利用這些漏洞。 + +## 如何幫助我們 {#how-it-helps} + +eBPF 提供比 Linux 核心模組更可控的環境,以執行使用者自訂的程式。 +它在核心的沙盒環境中執行,提供隔離並降低風險。 +如果漏洞或缺失在 eBPF 程式中被利用,其影響通常僅限於沙盒環境。 +此外,在 eBPF 程式開始在核心中執行之前,它必須通過一些驗證。 +驗證器元件會檢查 eBPF 程式是否存在潛藏的安全違規行為, +像是違規存取記憶體、無窮迴圈和未經授權的核心函式。 +這樣它就能確保程式不會進入無窮迴圈並導致核心崩潰。 +與 Linux 核心模組相比,這些安全控制措施使 eBPF 成為在 Linux 核心中執行應用程式更安全的選擇。 From 9574301681cfaf52e6e9428bb8e50a24a458e0f7 Mon Sep 17 00:00:00 2001 From: Kevin Huang Date: Mon, 16 Oct 2023 22:21:32 +0800 Subject: [PATCH 288/295] [tw] Localize 'Vertical Scaling' Signed-off-by: Kevin Huang --- content/zh-tw/vertical-scaling.md | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 content/zh-tw/vertical-scaling.md diff --git a/content/zh-tw/vertical-scaling.md b/content/zh-tw/vertical-scaling.md new file mode 100644 index 0000000000..74f0e4a1da --- /dev/null +++ b/content/zh-tw/vertical-scaling.md @@ -0,0 +1,32 @@ +--- +title: 垂直擴展 +status: Completed +category: 概念 +tags: ["基礎設施", "", ""] +--- + +## 是什麼 {#what-it-is} + +垂直擴展也被稱為「向上和向下擴展」,是一項當系統負載提高時透過對單一[節點](/zh-tw/nodes/)增加 CPU 或 RAM 來提升系統容量的技術。 +假設您的系統中有一台 4GB RAM 的計算機,並且想要提升系統的容量至 16GB RAM,那麼對這個系統作垂直擴就展意味著切換為另一台 16GB RAM 的計算機。 +(請參考另一種擴展方法:[水平擴展](/zh-tw/horizontal-scaling/)) + +## 解決的問題 {#problem-it-addresses} + +當應用程式的需求成長超出該應用程式實例的當前容量時, +我們需要找出一種方式來擴展系統(增加容量)。 +我們可以加入更多計算資源到目前的節點(垂直擴展), +或是加入更多節點至此系統([水平擴展](/zh-tw/horizontal-scaling/))。 +[可擴展性](/zh-tw/scalability/)有助於提升系統的競爭力、效率、評價以及品質。 + +## 如何幫助我們 {#how-it-helps} + +垂直擴展讓您不用修改應用程式中的程式碼就能調整伺服器的大小。 +相對地,水平擴展則要求應用程式必須是可被複製的,而且很有可能需要修改程式碼。 +垂直擴展藉由增加計算資源來提升現有應用程式的容量, +使得應用程式能夠處理更多請求並同時執行更多工作量。 + +## 相關詞彙 {#related-terms} + +* [水平擴展](/zh-tw/horizontal-scaling/) +* [自動擴展](/zh-tw/auto-scaling/) From c170caa51622f0590882afbaaaa5532b957658fb Mon Sep 17 00:00:00 2001 From: Julia Furst Morgado <52685951+juliafmorgado@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:25:05 +0100 Subject: [PATCH 289/295] Improve role-based-access-control.md Improved version of the definition with a better flow and clarity. Signed-off-by: Julia Furst Morgado <52685951+juliafmorgado@users.noreply.github.com> --- content/en/role-based-access-control.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/content/en/role-based-access-control.md b/content/en/role-based-access-control.md index d2d36c103d..56d7899502 100644 --- a/content/en/role-based-access-control.md +++ b/content/en/role-based-access-control.md @@ -7,22 +7,20 @@ tags: ["security", "", ""] ## What it is -Role-Based Access Control (RBAC) is a method used to regulate access to systems and resources based on user roles within an organization. -Each job function is associated with specific roles and permissions. -For example, a member of the marketing team may be granted permission to view sales deals in the pipeline (*read* permission) but is restricted from making edits (*write* permission). -Different permissions are assigned to roles in sales, marketing, and similar distinctions apply within engineering teams. +Role-based access control (RBAC) is a security method of managing user access to systems, networks, or resources based on their role within a team or a larger organization. +RBAC empowers IT administrators to identify the necessary level of access for all users with a particular job function and assign those users a role with a predefined set of permissions. +Organizations utilize RBAC to provide their employees with varying levels of access tailored to their roles and responsibilities. ## Problem it addresses -Individually managing access permissions for multiple users across a variety of system resources and data can be a complex task. -Each user typically requires access to a different set of specific resources. -Let's consider an organization with 500 developers (users) and 300 resources with varying permission levels (read, write, and no access). -The administrator must ensure that each user is granted the correct permissions for all 300 resources. -RBAC simplifies this process by providing predefined access control based on role groups. +RBAC addresses the challenge of controlling the resources team members and applications can access, +as well as the actions they can perform, especially as the number of applications and team members increases. +Administrators must ensure that each user has the correct permissions for the resources they need to access, +a task that can become cumbersome and error-prone without a structured access control mechanism. ## How it helps -RBAC offers precise control over user permissions within software systems. -Depending on their roles, team members can modify a section, view it exclusively, or be completely restricted from accessing it. -This granular permission allocation enables team members with distinct roles to collaborate on the same system while minimizing security risks. +RBAC provides IT teams with the capability to easily manage permissions for all users in a group simultaneously or make swift adjustments to an individual user's access level by assigning or removing a role. +This safeguards sensitive data and ensures that employees can only access information and perform actions necessary for their job responsibilities. +Overall, RBAC enhances access management, bolsters security, and boosts operational efficiency within organizations. From 1f08fe7498fe99d0eab60fc6aed650ec9261b2ce Mon Sep 17 00:00:00 2001 From: John Lin Date: Sun, 29 Oct 2023 23:27:34 -0700 Subject: [PATCH 290/295] [tw] Localize Monolithic Apps for Traditional Chinese (#2540) Signed-off-by: John Lin --- content/zh-tw/monolithic-apps.md | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/zh-tw/monolithic-apps.md diff --git a/content/zh-tw/monolithic-apps.md b/content/zh-tw/monolithic-apps.md new file mode 100644 index 0000000000..24f36feaf5 --- /dev/null +++ b/content/zh-tw/monolithic-apps.md @@ -0,0 +1,34 @@ +--- +title: 單體式應用程式 +status: Completed +category: 概念 +tags: ["架構", "基本原理", ""] +--- + +## 是什麼 {#what-it-is} + +單體式應用程式是一個可部署的程式,且包含所有功能在其中。 +這通常是開發應用程式時最單純跟最容易的起點。 +然而,一旦應用程式變得更複雜,單體便可能變得難以維護。 +隨著更多開發人員一起在同一個程式碼庫中開發, +改動之間出現衝突的機會便會增加, +開發人員之間的溝通需求也會變多。 + +## 解決的問題 {#problem-it-addresses} + +使用[微服務](/zh-tw/microservices/)來開發應用程式會增加維運成本, +因為會有更多的東西需要測試、部署與執行。 +如果能在產品生命週期的初期就建立一個單體式應用程式, +就能把這種複雜度推遲到確定產品成功之後, +或許不失為一個好主意。 + +## 如何幫助我們 {#how-it-helps} + +若要讓一個設計良好的單體式應用程式符合精實原則, +就要把這個應用程式以最簡單的方式跑起來, +當一個單體式應用程式的已經被證明具有商業價值之後, +便可以將其拆解為微服務。 +如果在一個應用程式證明其價值之前就使用微服務架構來進行開發, +便可能成為過早的工程投入。 +萬一這個應用程式無法提供價值, +這將會變得徒勞無功。 From 969f754393317b6569b99105b51d7b381efb3ee7 Mon Sep 17 00:00:00 2001 From: James Hunt <10615884+thetwopct@users.noreply.github.com> Date: Tue, 31 Oct 2023 00:58:20 +0700 Subject: [PATCH 291/295] Updating Twitter logo to X (#2566) Signed-off-by: James Hunt <10615884+thetwopct@users.noreply.github.com> --- layouts/partials/footer.html | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 6aec148d71..d3b92335f8 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -14,13 +14,9 @@ {{ T "footer_hub_button_text" }}